Xquery 我无法将EBNF语法转换为Antlr4语法

Xquery 我无法将EBNF语法转换为Antlr4语法,xquery,antlr,antlr4,Xquery,Antlr,Antlr4,我有以下EBNF语法: StringConstructor ::= "``[" StringConstructorContent "]``" StringConstructorContent ::= StringConstructorChars (StringConstructorInterpolation StringConstructorChars)* StringConstructorChars ::= (Char* - (Cha

我有以下EBNF语法:

StringConstructor      ::=      "``[" StringConstructorContent "]``"
StringConstructorContent       ::=      StringConstructorChars (StringConstructorInterpolation StringConstructorChars)*
StringConstructorChars     ::=      (Char* - (Char* ('`{' | ']``') Char*))
StringConstructorInterpolation     ::=      "`{" Expr? "}`"
Char       ::=      #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
我正在Antlr4中尝试以下操作:

XQueryParser.g4

stringConstructor: '`' '`' '[' stringConstructorContent ']' '`' '`' ;

stringConstructorContent: stringConstructorChars (stringConstructorInterpolation stringConstructorChars)* ;

stringConstructorChars: ( CHAR* ~ ( CHAR* (('`' '{') | (']' '`' '`')) CHAR* ) ) ;

stringConstructorInterpolation: '`' '{' expr '}' '`' ;
XQueryLexer.g4

CHAR:   ( '\t' | '\n' | '\r' | '\u0020'..'\u0039' | '\u003B'..'\uD7FF' | '\uE000'..'\uFFFD' ) ;
它用于分析以下内容:

for $s in ("one", "two", "red", "blue")
return ``[`{$s}` fish]``
并评估序列(“一条鱼”、“两条鱼”、“红鱼”、“蓝鱼”)

我收到以下错误:

error(50): :494:38: syntax error: missing RPAREN at '*' while looking for rule element
error(50): :494:70: syntax error: extraneous input ')' expecting SEMI while matching a rule

有人有什么建议来解决这个问题吗?我已经注释掉了语法的那一部分,以便它能够编译。

我最终创建了自己的Antlr4语法,而不是尝试自动将EBNF转换为Antlr4。

这些错误是指第38列和第70列的第494行吗?如果是,您提供的代码中的哪一行是文件中的第494行?第494行是XQueryParser.g4中的stringConstructorChars