16得票7回答
LL解析器与LR解析器的限制?

我知道LL和LR解析器的基本区别,也知道GLR、SLR和LALR都是LR解析器的扩展。那么更具体地说,在给定一个LL(*)解析器和任何一种LR解析器的变体的情况下,是否存在一种语言可以用其中一种而不是另一种来描述?或者更简单地说,是否存在任何功能或属性无法用两者之一来表达? 以一个具体的例子...

15得票2回答
PEG语法和解析器生成器的限制是什么?

我很喜欢使用YARD: http://www.ootl.org/yard/ http://code.google.com/p/yardparser/ http://www.codeproject.com/KB/recipes/yard-tokenizer.aspx 我能够构建出一个完全...

15得票5回答
规则的空右侧符号的表示法

在编写一个("理论上的")语法时,如果规则的右侧为空,通常会使用符号 ε(或 1)来明确表示这个空值:A → ε | a A 在 Yacc 和其他类似的语法中,这样的文法看起来会像这样a: | 'a' a 或者更糟。a: { $$ = new_list(); } | a 'a' ...

14得票1回答
Scala RegexParsers中的非贪婪匹配

假设我正在使用Scala编写一个基本的SQL解析器。我有以下代码:class Arith extends RegexParsers { def selectstatement: Parser[Any] = selectclause ~ fromclause def select...

14得票5回答
Packrat解析与LALR解析

很多网站都声称packrat解析器可以在线性时间内解析输入,因此乍一看它们可能比由yacc或bison工具构建的LALR解析器更快。 我想知道当使用常见输入(如编程语言源文件)而不是任何理论输入进行测试时,packrat解析器的性能是更好还是更差于LALR解析器的性能。 有人可以解释一下这两种...

12得票4回答
PHP词法分析器和解析器生成器?

我知道之前有人提出过关于PHP中Lex和Yacc的问题(链接),但那是一年前的事情。 现在是否有成熟的PHP解析器生成器呢?我的搜索结果显示以下几个,你对它们有什么看法或者是否有其他的建议? code.google.com/p/antlrphpruntime/ : ANTLR PHP版本...

12得票2回答
PEG和空格/注释

我有使用ANTLR编写解析器的经验,并正在尝试(为了自学 :))将其中一个移植到PEG(Parsing Expression Grammar)。 由于我正在努力感受这个想法,有一件事让我觉得很麻烦,以至于我觉得自己可能错过了什么:如何处理空格。 在ANTLR中,处理空格和注释的常规方式是将...

11得票4回答
任何带有测试功能的BNF集成开发环境

我正在开发一种新的语言,写语法规则时希望能够测试其完整性、冲突等。我不是特别关心底层的解析器生成器(但.NET平台的更可取)。 所以简要的功能列表如下: 具备文本编辑器功能 语法/语义错误报告 冲突报告 语法测试功能(即一个窗口用于编写使用所期望的语法编写代码,以验证语法定义的正确性)...

11得票1回答
我该如何使用pyparsing解析缩进和取消缩进?

以下是 Python 语法的一个子集: single_input: NEWLINE | simple_stmt | compound_stmt NEWLINE stmt: simple_stmt | compound_stmt simple_stmt: small_stmt (';' sm...

10得票5回答
在运行时根据语法构建解析器

许多(大多数)C++正则表达式库允许在运行时从字符串创建表达式。是否有人知道任何允许将表示为字符串的语法(最好是BNF)提供给生成器的C ++解析器生成器?我发现的所有实现都要求运行显式代码生成器或通过聪明的模板元编程来表达语法。