我有两个具有功能lex
和xxlex()
的yylex()
文件,并且我有一个yacc
语法文件。我希望在语法规则上始终调用xxlex()
。但是xxlex()
只被调用一次,我希望它总是被调用。我该怎么做?
最佳答案
默认情况下,Yacc语法调用yylex()
以获得新标记。
如果您想有时调用xxlex()
,则可以安排在适当的时间从yylex()
调用它。
如果您希望每次都调用xxlex()
,则将其重命名为yylex()
并将原始的xxlex()
重命名为zzlex()
,或者使用bison -p xx
,以便所有内容(包括解析器功能)都以xx
开头。而不是yy
。 (相同的标志-p
也可与POSIX兼容的yacc
一起使用。flex
程序使用-P xx
来生成全部以xx
而不是yy
开头的符号; POSIX lex
没有这样做的一种选择,但是我已经看到很多带有makefile
脚本的sed
,该脚本编辑lex
生成的源,以将前缀从yy
更改为其他字母,例如xx
。)