【发布时间】:2011-05-17 03:42:57
【问题描述】:
看看 Rakudo Perl6,我想知道是否有用于解析和词法分析的技术,这些技术允许更改/扩展语言的语法,并且高效且不难实现。
【问题讨论】:
标签: parsing compiler-construction raku dynamic-languages
看看 Rakudo Perl6,我想知道是否有用于解析和词法分析的技术,这些技术允许更改/扩展语言的语法,并且高效且不难实现。
【问题讨论】:
标签: parsing compiler-construction raku dynamic-languages
看看 PEG。有一些基于 PEG (http://en.wikipedia.org/wiki/Parsing_expression_grammar) 的语言是可扩展的,例如:
http://www.chrisseaton.com/katahdin/
http://www.meta-alternative.net/mbase.html
Perl5 和 Perl6 语法可以很容易地以 PEG 形式定义(我可能错了,但当前的 Perl6 很可能是这样实现的)。
【讨论】:
“不”。 [编辑:截至问题的时间]如果问题是关于词法分析/解析 Perl,它非常难。我们(请参阅我的简历中的“我们”)有一个 Perl5 词法分析器。我们有非常好的词法生成器工具(Unicode、多状态、正则表达式,内置“not regexp”)。 Perl 词法分析器是一个令人头疼的问题。我们最终得到了类似 50 种词法模式(每种都有自己的一组标记定义)来处理词法分析部分。
我们正盯着解析部分,今天我们很幸运,没有直接需要这样做,所以到目前为止我们已经避免了这个。显然,根据各种标识符的动态定义,该语言是模棱两可的,因此您在某一时刻如何解释(解析)一个短语并不是静态可决定的。我们认为我们可以使用处理歧义的 GLR 解析器来做到这一点,并且只需简单地将歧义保留为可能的运行时替代方案。几个月后我会告诉你的。
【讨论】: