ANTLR4语法不识别声明

时间:2016-02-24 08:22:12

标签: regex antlr grammar antlr4

我的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
    ;

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

EDITED: 我将完整的语法上传到GitHub

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

如果我只使用INT,则可以使用

2 个答案:

答案 0 :(得分:1)

我完成了语法,问题根本没有诗意。在UNSIGNED词法分析器规则中只是一个错字......它是" U N S I G N D" - 缺少E

答案 1 :(得分:0)

你能说明你有什么问题吗?或者至少发布整个语法文件?指定词法分析器规则对于解决ANTLR中的许多问题非常重要。感谢。