是否有可能在同一个应用程序的两个或更多莱克斯/ Yacc的解析器
-
06-09-2019 - |
题
我其中我已经有一个排序语法的解析器的应用程序和我需要添加不同的第二语法用于另一目的。
是否有可能具有多于一个的
如果是的话你怎么弄的另一个切入点?
由于
DAVID ALLAN雀
解决方案
我觉得你可以到这个使用--name-prefix
选项野牛,以及--prefix
选项的Flex。
在这两种情况下,他们让您更换与自己选择的前缀生成的函数使用默认的“yy
”前缀。
其他提示
是,这是可能的。
YACC应该有一个-p标志,在那里你可以指定,而不是默认不同的前缀“YY”。
由Lex conatins只有一个码元之外使用生成的文件:函数yylex。 可以用-Dyylex = mySecondLex编译,例如
不是一个直接的答案,但你可能要考虑使用更通用的方法如的 GoldParser 它允许你使用一个通用的引擎来处理LALR和DFA从提交讨论的语法生成。
周围这样,您就可以使用任意数量的不同语法在同一个应用程序,并更改语法并不创造新的源代码,而只是新表文件(可以包括作为嵌入资源或类似)。
标准lex和yacc没有这样做的方式。 Flex和野牛做,因为做一些其他实现。既然你说你不使用Flex和野牛(在评论),这lex和yacc版本的是的您在使用?
说不隶属于 StackOverflow