ANTLR4 语法无法识别声明

ANTLR4 grammar doesn't recognize declaration

我的 ANTLR 语法有问题。

在SQL中有像UNSIGNED INTUNSIGNED BIGINT这样的声明类型。如果我 运行 我在 Testrig 中使用 ANTLRWorks 的语法,解析器在 UNSIGNED.

方面有问题

这是 declare_type

的语法部分
declare_type
    : BIT
    | BOOLEAN
    | CHAR ('(' expression ')')?
    | CHARACTER ('(' expression ')')?
    ...

尝试 1:

    ...
    | UNSIGNED? INT
    | UNSIGNED? BIGINT
    ;

尝试 2:

    ...
    | INT
    | BIGINT
    | UNSIGNED INT
    | UNSIGNED BIGINT
    ;

尝试 3:

    ...
    | INT
    | BIGINT
    | unsigned_separable_element
    ;

unsigned_separable_element
    : UNSIGNED INT 
    | UNSIGNED BIGINT
    ;

我希望你们知道我的问题是什么,谢谢。

已编辑: 我将完整的语法上传到 GitHub

示例:DECLARE value UNSIGNED INT; 不起作用,因为语法无法识别 UNSIGNED

如果我只使用 INT 就可以

能否具体说明您遇到的问题是什么?或者至少 post 整个语法文件?指定词法分析器规则的方式对于解决 ANTLR 中的许多问题很重要。谢谢。

语法我过一遍,这道题一点都不诗意。只是 UNSIGNED 词法分析器规则中的错字……它是“U N S I G N D”——缺少 E