我正在为PHP解析生成器.目前我正在尝试实现规范的LR(1)解析器,但它在后续语法上输出reduce-reduce冲突.这个语法不是LR(1)吗?或者我应该重新检查我的算法?
Bison中的语法(类似)表示法:
syntax : toplevels rules ;
toplevels
: toplevel
| toplevel toplevels
;
optsem : ';' | /* nothing */ ;
toplevel
: 'grammar' backslash_separated_name optsem
| 'option' options optsem
| '@' period_separated_name '{' CODE '}' optsem
;
period_separated_name
: ID '.' period_separated_name
| ID
;
backslash_separated_name
: ID '\\' backslash_separated_name
| ID
;
options
: single_option
| '(' more_options ')'
;
more_options
: single_option
| single_option ';'
| single_option ';' more_options
;
single_option
: …Run Code Online (Sandbox Code Playgroud) 我正在寻找一个解析器生成器工具,它提供C#输出并且相当快.我的目标是像文本一样解析JSON并从中创建CLR对象.我使用了GOLD Parser引擎,但事实证明它对我的需求很慢.任何人都可以建议我一个好的和快速的解析器生成器工具,它发出C#代码?我听说过Irony和ANTLR,但没有经验.它们生成相当快的解析器还是有更好的选择?
什么是TinyPG,它是如何工作的?我知道它是一个"编译器 - 编译器",但我如何开始并在C#中创建自己的编译器?