我正在为L1和L2两种语言实现解析和表达式评估。重要的是,L1可以作为单独的语言使用,也可以作为L2的一部分使用,而L2只包含几个关键字,这些关键字在L1中是不存在的。
我已经完成了->解析-> AST生成L1的-> AST处理过程,并使用FsLex、FsYacc实用程序实现了这个F#。
在分析另一种语言(?)时,是否可以使用已经开发的解析过程(我指的是 在L1解析器中定义的)?
AST: L1的AST将作为AST的一部分用于L2,并将使用相同的AST处理过程。
FsLex Lexer:可能对两种语言来说都很常见,我只需要在L1中包含一些L2缺少的关键字。但是,如果有可能为L1和L2单独使用词汇,并从L2 lexer中引用L1,那将是很棒的。
FsYacc解析器:我不想把所有的L1解析器代码都复制到L2中。是否有一种在L2解析器?中定义的L2、令牌和AST数据生成中引用的方法?
提前感谢
发布于 2011-06-09 12:11:37
这里有一个有趣的文章,它提到了语法作文的困难。短故事是,您不能使用类似yacc的解析器生成器来做您想做的事情。这并不意味着您不能使用一些基于宏的系统实现代码重用,但它仍然是一个黑客。
https://stackoverflow.com/questions/6289914
复制相似问题