【发布时间】:2015-09-23 07:46:29
【问题描述】:
我正在为 COBOL 语言编写语法,并且我制定了一个规则来识别 COBOL 中的单词。 我的标识符规则是
IDENTIFIER : [a-zA-Z0-9]+ ([-_]+ [a-zA-Z0-9]+)*;
它在我的大多数情况下都可以正常工作,但是当我对以下输入进行测试时
0000-主程序
然后它不起作用。 请分享您的宝贵想法,以使我正确。我该如何解决这个问题。
【问题讨论】:
-
但它在我的其他语法中工作正常。:(
-
在我所知道的正则表达式中,您需要转义破折号字符:没关系,好像我是那些逃避一切的人之一,因为我没有不知道它是如何工作的 :) 为了获得更好的答案,我认为您应该发布您的语法文件。IDENTIFIER : [a-zA-Z0-9]+ ([\-_]+ [a-zA-Z0-9]+)*; -
很可能破折号被视为范围运算符。将其放在集合的最后:
[_-]将强制视为普通角色。