1

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

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

在这里,我想得到$display("Hello World")但除了;.

我已经尝试过这个:\$"display".*[^;],它似乎没有用。

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

4

1 回答 1

1

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

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

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

于 2013-01-21T15:42:37.617 回答