Простите, если этот вопрос был задан и адресован в другом месте на этом сайте. Когда я набираю пример грамматики в ANTLRWorks 1.4.3, редактор не отображает некоторые символы, такие как вертикальная черта ('|') или открытая скобка '('. Я заметил, что где-то на этом сайте Майя Пощ задала вопрос на расширенные символы 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
Код выглядит беспорядочным, поскольку вертикальная черта и символы открытых скобок не видны на панели редактора. Но когда я копирую текст из редактора в сегмент кода в этой публикации, эти пропущенные символы отображаются так, как я писал выше. Однако буквально открытая скобка ('(') остается видимой. Может ли это быть проблемой конфигурации для редактора?
Когда я генерирую код, все работает просто отлично. Кроме того, синтаксическая диаграмма правильно отображает правило. Это просто отсутствующие / невидимые символы в правиле грамматики, которые вызывают беспокойство. Я использую ANTLRWorks на MacBook Pro.
Редактировать: По предложению Барта, я попробовал другой шрифт, и эти невидимые символы отображаются на панели редактора. Я перешел на страницу настроек и изменил шрифт на другой, отличный от стандартного Courier New. Мой компьютер - MacBook Pro, так что это может относиться к среде Mac. Надеюсь, что это помогает другим, испытывающим ту же проблему. Спасибо, Барт!