parser combinators?

alanwu 2009-10-01
谁能详细一下parser combinator
或者哪里有基础资料,最好是中文的
night_stalker 2009-10-01
Technical Report:
http://www.cs.kuleuven.be/publicaties/rapporten/cw/CW491.pdf

示例代码:
http://lampsvn.epfl.ch/trac/scala/browser/scala/trunk/docs/examples/parsing/ArithmeticParser.scala
alanwu 2009-10-01
看了http://en.wikipedia.org/wiki/Parser_combinator第一句:
就是在数学函数式编程中,小函数(方法)可以组合成大函数(方法)(High Order Function)。如果组合成parsing,(parsing又是什么?),那么就是parser combinator
alanwu 2009-10-01
好像左递归是个很难的问题,用parser combinator比较容易搞定。
左递归又是怎么回事?
night_stalker 2009-10-01
关于 combinator,如果想学深入点的话,可以到 Haskell 的官网上看。
http://www.haskell.org/haskellwiki/Category:Combinators

scala 的 parser combinator 基本就是从 haskell 的 parsec 库里弄来的,而且利用了隐式转换简化编写。其实不了解这么多也可以,把它当成魔法,知道 EBNF 就能用得比较顺手了。

unlambda 是练习 combinator 的好语言。。。
alanwu 2009-10-01
谢谢~
太多术语不了解了
EBNF是什么?
alanwu 2009-10-01
night_stalker 写道

scala 的 parser combinator 基本就是从 haskell 的 parsec 库里弄来的,而且利用了隐式转换简化编写。其实不了解这么多也可以,把它当成魔法,知道 EBNF 就能用得比较顺手了。 。


不了解用不起来啊,看到一堆符号组合真是很想魔法。
alanwu 2009-10-01
这个和则正表达式有点类似?
night_stalker 2009-10-01
alanwu 写道
谢谢~
太多术语不了解了
EBNF是什么?


Extended Bacus-Naur Form 是一种描述语法的语法。
关于 EBNF 和“左递归”,你最好找本编译原理看看 ……
night_stalker 2009-10-01
alanwu 写道
这个和则正表达式有点类似?

可以这么说,不过我们平时用的正则是非递归的(除了 Perl)
Global site tag (gtag.js) - Google Analytics