解析以字母开头的字母数字

  • 本文关键字:数字 开头 antlr4
  • 更新时间 :
  • 英文 :


我有以下ABNF规则用于字符串定义。

STRING   = ALPHA *(allowedchar)
allowedchar   = "-" / "_" / DIGIT / ALPHA
ALPH = A-Z ,a-z

有效令牌:

aa1
a_1___a
a23
a
a-1
a_a 

(如果第一个字符是 alpha,则重置可以是任何字符形式"允许字符")

无效令牌:

-e
--
-1
-a
--1
--a
1 

(不以字母开头)。

到目前为止,我已经对所有输入(有效和无效)的语法都有效,除了"--a""__a"

ANTL4 接受此令牌作为有效字符串。

我不确定为什么这不起作用。

我的语法

STRING : ALPHANUMERIC
ALPHA           : [a-zA-Z]+ ;
fragment ALPHANUMERIC : ALPHA (ALLOWEDATTCHAR)* ;
fragment ALLOWEDATTCHAR : '-' | '_' | [0-9] | ALPHA ;

ANTL4 接受此令牌作为有效字符串。

我对此表示怀疑。

假设您的ALPHA规则如下所示:

fragment ALPHA : [a-zA-Z];

我敢肯定 ANTLR 不会"--a""__a"标记为STRING.

检查输出流 ANTLR 正在将错误/警告写入:ANTLR 可能会通知您出现问题,然后从中恢复并继续解析/词法分析。

编辑

如果要覆盖 ANTLR 默认错误处理/报告,请参阅: 处理 ANTLR4 中的错误

相关内容

  • 没有找到相关文章

最新更新