中国开发网: 论坛: 程序员情感CBD: 贴子 809665
JoJo
其实真的不想说,但还是说了吧
您定义的那个ini格式,从语言形式上来说,属于枚举语言,这是已经被证明最没有效率的语言之一了。简单的说,枚举语言要构造语义树,得不断的进行迭代或递归。

2.type=div
2.count=2
2.1.type=
2.1.text=Hello,
2.2.type=href
2.2.text=CNDEV
2.2.url=www.cndev.org

从形式上说,这个语言不是收敛的,它实际上处于形式语言的第二层,即黑田范式,黑田范式的解析开销远大于巴克斯诺尔范式

就上面一段片断,从文法上说是上下文无关的,语法上说是有界的,但语言上却是非收敛的,举个例子
2.2.3.type=
2.2.3.text=abcd
2.2.3.1.type=
2.2.3.1.1.type=
2.2.3.1.1.1.type=
......

HTML语言本身是一棵树,因此构造语言树只需要一次扫描即可;海大师的ini是一个非收敛的列表,要构造语言树至少是递归ini group的数量

那么可不可以定义为收敛的?当然是可以,只要定义终结符即可,但是ini的枚举特性没法改变,而且在列表中定义终结符仍然无法解决递归的问题,除非像COBOL语言那样严格定义层次格式

结论我就不多说了,INI现在用得越来越少,那不是没有原因的,当然海大师仍然可以在他认为合适的地方继续使用,不过我推荐各位新人还是多关注一下XML

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录