只显示主题贴
引用本文以 lichray 设计的 S-dict(t) 配置文件解析器为例,简单介绍了词法分析器的原理,详细讲述了递归下降语法分析器手工构造方法。因为该项目本身已经完成,故此本文拥有一个实际可用的例子,是不可多得的入门教程。
引用T1 大人说过,技术的迅速贬值是十分残酷的,比如大部分的手工优化代码,早已被编译器们代劳。这篇文章中要说的递归下降语法分析方法也是严重贬值了的技术之一。不过我认为,在享受着别人构造的自动化工具同时,知道其原理还是很重要的。一个典型的例子就是正则表达式——大家都会用,能保证写对的人也很多,但看了专家们的解答后都自愧不如——原因很简单:你会写正则表达式的编译器吗?
不过这 ...
- 进入论坛 综合技术 版
文章中用纯文本制作的图不可使用等宽字体显示。请进入论坛查看本文,文中错误参考回帖,谢谢。
引用
在 函数式编程语言曲高和寡? 一文中,我们看到 Haskell 能用两行代码
sort [] = []
sort (x:xs) = sort [y | y <- xs, y < x] ++ [x] ++ sort [y | y <- xs, y >= x]
搞定快速排序算法。这是偶然,还是必然?在这篇文章中,lichray 用我们所熟悉的 Python 语言,几行代码搞定很多学编程几年的人都只是一知半解的算法——八皇后问题,展示和上篇文章中的快速排序一样清晰的、令人耳目一 ...
- 进入论坛 综合技术 版
引用本文对刚刚在网络上现身的 JavaScript 函数式编程库 functional.js 进行详尽的解读(地址已更正,感谢 hax)。
functional.js 是模仿 Haskell 语言标准库 Prelude 制作的函数式编程库,主要实现了:
扩展的克里化函数
运算符函数化
紧缩的匿名函数语法
无须指定参数的匿名函数语法
函数向导语法
基本的通用列表操作
部分扩展基于对象化
其中,扩展语法由字符串表示。未能实现的特性有:
尾递归优化
模式匹配(包括参数匹配、列表匹配、情况分析)
惰性运算(包括无穷列表)
列表领悟
扩展绑定、同时绑定
其它列表操作(以 ...
- 进入论坛 AJAX 版
本文以 JavaScript 语言为例,介绍了无类面向对象语言中实现各种面向对象概念的方法。值得注意的是,下面所说的并非“奇技淫巧”,其中的大部分都是计算机科学家们在设计无类语言时就已经确立了的模式,少部分是我借鉴其它语言的经验已经对前辈们思想的理解给出了完备化技术。
阅读本文至少需要对 JavaScript 语言“特别”的对象机制以及函数的运行上下文有所了解。如果您还对 JavaScript 对象知之甚少,可以查看附件中我翻译的 ECMA262 v3 中 4.2.1 Object 这一节;如果对 Lambda 演算不了解,建议去看 SICP :)。
一. 基础:
建立类。只需声明一个函数作 ...
- 进入论坛 综合技术 版
引用本文作者还是那个无名小辈 lichray。他在考查了一些语言和历史之后,觉得有必要谈一谈自己对面向对象思想的一些诡异的想法。文中会提到许多编程语言,不过当然了,重点在于思想,文章不是用来推销语言的。
面向对象编程思想的提出已经不是几年而是几十年了,考查其思想的变化,一方面是对现有语言的一些评判,另一方面,也算是对前辈计算机科学家的缅怀。 ——题记
Kristen Nygaard在1962年发明的 Simula 语言现在被认同为世界上第一种明确实现面向对象编程中某些“必要”元素(比如 class)的语言。Simula 是从 Algol 发展来的,可以说,是一种增加了 class 这个数据 ...
- 进入论坛 综合技术 版
引用本文站在一个难以名状的角度上研究了 Python 语言中消息发送的编程风格。原文是使用 JavaScript 描述的。文章作者 lichray 只把文章的上篇改成了 Python,因为下篇对于 Python 来说是没有意义的。lichray 是个 ECMAScript 的狂热追随者,mozilla.org 邮件列表里的无名潜水员。
文章中使用了 Python 解释器,行开头有 ">>>" 表示那是输入,输入下一行没有这个标记的表示解释器回馈消息。省略了多余的回馈。
PS: 文章用处不大。
一. 对象和消息
考虑一下我们平常怎么说话的。我们叫某某人做某事,用下面的句式:
forest ru ...
- 进入论坛 综合技术 版
- 浏览: 102288 次
- 性别:

- 来自: 南京

- 详细资料
搜索本博客
我的相册
py-wear
共 4 张
共 4 张
最近加入圈子
最新评论
-
用 Python 秒掉八皇后问题 ...
弱弱的问下 “ran ≠ x 很好理解,就是不为同一列;|ran - x| ≠ ...
-- by chanyantc -
用 Python 秒掉八皇后问题 ...
直接出自ML
-- by ychael -
递归下降语法分析详解
javascript 支持尾递归么?否则 tb[s[0]]+iter(cdr(s ...
-- by davies -
递归下降语法分析详解
antlr不是LL(1)的,而是LL(k)的自顶向下的,k可以自己指定,如果过大 ...
-- by mahudu -
递归下降语法分析详解
懒得看了,本科时候就开发过编译器了,parser的construction就是用 ...
-- by xiaolin0105






评论排行榜