在LEX中,如何解析一些代码直到特殊符号?

时间:2013-01-21 15:17:16

标签: verilog lex

我想知道在LEX中,如果我想解析一些代码,直到一个特殊的符号。

例如:$display("Hello World");

在这里,我想获得$display("Hello World");除外。

我已经尝试过这个:\$"display".*[^;],它似乎无法正常工作。

任何帮助将不胜感激。感谢。

1 个答案:

答案 0 :(得分:1)

.匹配任何角色,而Kleene星*将匹配其前面的许多内容。在这种情况下,您将匹配display,后跟任何其他字符的列表。这恰好包括你要捕获的位以及分号。

明显的解决方法是删除表达式的那一部分,并将Kleene星移到[^;]表达式之后。这将说“匹配任何不是;的字符的多个实例”。这可能需要围绕子表达式的parens(我不记得pricex语法,因为它在词法分析器之间变化)。

\$"display"([^;])*\$"display"[^;]*