3

看看 Rakudo Perl6,我想知道是否有用于解析和词法分析的技术,这些技术允许改变/扩展语言的语法,并且高效且不难实现。

4

2 回答 2

1

“不”。[编辑:截至问题的时间]如果问题是关于词法分析/解析 Perl,它非常难。我们(请参阅我的简历中的“我们”)有一个 Perl5 词法分析器。我们有非常好的词法分析器生成器工具(Unicode、多状态、正则表达式,内置“非正则表达式”)。Perl 词法分析器是一个令人头疼的问题。我们最终得到了类似 50 种词法模式(每种都有自己的一组标记定义)来处理词法分析部分。

我们正盯着解析部分,今天我们很幸运,没有直接需要这样做,所以到目前为止我们已经避免了这个。显然,根据各种标识符的动态定义,该语言是模棱两可的,因此您在某一时刻如何解释(解析)一个短语并不是静态可决定的。我们认为我们可以使用处理歧义的 GLR 解析器来做到这一点,并且只需简单地将歧义保留为可能的运行时替代方案。几个月后我会告诉你的。

于 2010-11-29T08:53:10.067 回答
1

看看 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 很可能是这样实现的)。

于 2010-11-29T12:24:38.063 回答