如果此问题已在本网站的其他地方提出并解决,请原谅我。当我在 ANTLRWorks 1.4.3 中输入示例语法时,编辑器不显示某些字符,例如竖线 ('|') 或左括号'('。我注意到在这个站点的某个地方 Maya Posch 提出了一个问题关于扩展的 ASCII 字符没有被正确处理,但我似乎有不同的情况。当我输入教程中的示例语法时,我在编辑器屏幕中看不到这些字符。但是,编辑器窗格下方的语法图表似乎识别那些“缺失”字符的存在。以下是语法(奇怪的是,当我在这里复制和粘贴时,它们显示如下!):
grammar Expr;
// START:stat
prog: stat+ ;
stat: expr NEWLINE
| ID '=' expr NEWLINE
| NEWLINE
;
// END:stat
// START:expr
expr: multExpr (('+'|'-') multExpr)*
;
multExpr
: atom ('*' atom)*
;
atom: INT
| ID
| '(' expr ')'
;
// END:expr
// START:tokens
ID : ('a'..'z'|'A'..'Z')+ ;
INT : '0'..'9'+ ;
NEWLINE:'\r'? '\n' ;
WS : (' '|'\t')+ {skip();} ;
// END:tokens
这是我在编辑器中看到的:
grammar Expr;
// START:stat
prog: stat+ ;
stat: expr NEWLINE
ID '=' expr NEWLINE
NEWLINE
;
// END:stat
// START:expr
expr: multExpr '+' '-') multExpr)*
;
multExpr
: atom '*' atom)*
;
atom: INT
ID
'(' expr ')'
;
// END:expr
// START:tokens
ID : 'a'..'z' 'A'..'Z')+ ;
INT : '0'..'9'+ ;
NEWLINE:'\r'? '\n' ;
WS : ' ' '\t')+ {skip);} ;
// END:tokens
代码看起来很混乱,因为竖线和左括号字符在编辑器窗格中不可见。但是,当我将文本从编辑器复制到此帖子的代码段时,那些丢失的字符确实会显示为我最初在上面发布的内容。但是,文字左括号 ('(') 确实仍然可见。这可能是编辑器的配置问题吗?
当我生成代码时,一切正常。此外,语法图正确显示了规则。令人不安的是语法规则中缺少/不可见的字符。我在 MacBook Pro 上运行 ANTLRWorks。
编辑:按照 Bart 的建议,我尝试了不同的字体,并且那些不可见的字符确实显示在编辑器窗格中。我进入首选项页面,将字体更改为默认 Courier New 以外的其他字体。我的电脑是 MacBook Pro,所以这可能特定于 Mac 环境。希望这可以帮助其他遇到同样问题的人。谢谢,巴特!