我想有一些我不理解的相当基本的东西。下面的语法在我看来很简单。从规则“解析”开始,在我看来并没有太多可能模棱两可的地方。但我得到下面列出的错误。如果有人甚至可以解释第一个会有所帮助的错误。
目的是解析简单的名字,比如“先生”。约翰史密斯三世和简史密斯夫人”或“史密斯,约翰”。
parse
: name+ EOF
;
// match Mr. John or Smith,
name
: NAMESEP? SALUTATION* NAME (firstlast | lastcommafirst)
;
// match Smith III
firstlast
: INITIAL? NAME+ COMMA? title*
;
// match John
lastcommafirst
: COMMA SALUTATION* NAME+ COMMA? title*
;
// match III
title
: TITLE COMMA?
;
警告(200):/NameParser.g:23:16:决策可以使用多种选择匹配输入,例如“NAME”:1、2
结果,该输入警告(200)禁用了替代项 2:/NameParser.g:27:25:决策可以匹配输入,例如“NAME COMMA SALUTATION NAME COMMA SALUTATION NAME {EOF, NAME, SALUTATION.. TITLE, NAMESEP}" 使用多种选择:1、2
结果,该输入警告(200)禁用了替代项2:/NameParser.g:27:25:决策可以匹配输入,例如“NAME {EOF,NAME,SALUTATION..TITLE,NAMESEP}”使用多种选择:1、2
结果,该输入警告(200)禁用了替代2:/NameParser.g:27:25:决策可以使用多个替代匹配输入,例如“NAME COMMA SALUTATION NAME {NAME,INITIAL}”:1 , 2