在ANTLR中未验证对包含点(.)的输入字符串的分析

在ANTLR中未验证对包含点(.)的输入字符串的分析,antlr,Antlr,我有一个应用程序“abc”,我正试图解析一个作业(输入字符串) 如果作业名称包含点(.),则显示作业状态的abc抛出错误 Lexar的片段: DOT : '.' ; ID: [a-zA-Z0-9_]([a-zA-Z0-9_@{}()#$%^~!`'-] | '[' | ']' )*; 错误消息: 命令语法错误。无关输入“.1”应为{,作业,作业所有者,作业类型,作业状态} 有人能建议我需要做哪些更改吗。根据您的具体要求,在ID中指定一个允许的字符,或者更改 (id | DOT | strin

我有一个应用程序“abc”,我正试图解析一个作业(输入字符串)

如果作业名称包含点(.),则显示作业状态的abc抛出错误

Lexar的片段:

DOT : '.' ;

ID: [a-zA-Z0-9_]([a-zA-Z0-9_@{}()#$%^~!`'-] | '[' | ']' )*;
错误消息:

命令语法错误。无关输入“.1”应为{,作业,作业所有者,作业类型,作业状态}


有人能建议我需要做哪些更改吗。

根据您的具体要求,在
ID
中指定一个允许的字符,或者更改

(id | DOT | stringWithQuotes)


现在,您可以使用带引号的字符串、标识符或单个点-而不是标识符与点混合。

谢谢@Jiri Tousek,我会检查这一点。
DOT : '.' ;

ID: [a-zA-Z0-9_]([a-zA-Z0-9_@{}()#$%^~!`'-] | '[' | ']' )*;
(id | DOT | stringWithQuotes)
(
    id (DOT id)*
|   stringWithQuotes
)