野牛 - 在特定令牌后跳过令牌

时间:2016-02-04 15:02:08

标签: bison yacc lex

我正在尝试使用我正在处理的语言模拟注释语句。通过使用关键字REM,我想忽略该令牌之后的所有内容,直到它遇到输入。

示例就像

REM randominstruction {;}

其中randominstruction在C中有一些随机指令。我想在REM令牌位于其前面时忽略整个randominstruction

1 个答案:

答案 0 :(得分:1)

最好在词法扫描程序中使用以下规则来识别和忽略注释:

REM([[:blank:]].*)?$     ;

与&#34相同;其中randominstruction在C"中有一些随机指令,这有点误导。注释忽略了文本行,而不考虑它是否包含有效的语言标记。

上述正则表达式的复杂性是由于REM不需要成为较长单词的一部分。坚持它后跟空格可能过于严格(REM(....)是一个有效的评论吗?),所以有可能是一个更好的评论:

REM([^[:alnum:]_].*)?$     ;

?$的目的是接受REM,如果这是唯一的话。使用两种模式可能更清楚:

REM[^[:alnum:]_].*     ;
REM$                   ;