我正在使用PLY用Python编写Java lexer
我有一个有限状态机:
它的目标应该是匹配某些代码中的所有行注释。我想构建一个Python正则表达式,它与这台机器完全一样
我想要找到的正则表达式将被写在一个名为t_IGNORE_LINECOMMENT(t)
的方法中,这样,在词法分析时,每一行注释都将被忽略
我发现的所有类似正则表达式都有一些问题,比如
(\/\/[^"\n\r]*(?:"[^"\n\r]*"[^"\n\r]*)*[\r\n]|\/\*([^*]|\*(?!\/))*?\*\/)(?=[^"]*(?:"[^"]*"[^"]*)*$)
这是可以测试的
这个应该匹配每种注释,但也可以匹配"//"/"
并且无法匹配hey = "//comment" //comment "
,将所有//comment" //comment "
作为注释匹配,而不仅仅是//comment
在有限状态机中,我调用A
所有字母,当我写A/{x,y}
时,我指的是除x
和y
之外的所有字母
应该做您想做的事情(给定^{} ):它匹配尽可能少的非字符串字符或字符串(本身是任意数量的非引号非转义或转义),后跟
//
和尽可能少的字符,直到下一个EOL字符。(第一次非贪婪重复是必要的,以使注释尽可能长。)相关问题 更多 >
编程相关推荐