我目前正在開發一個小DSL具有以下(shortend)語法:XTEXT驗證顯示錯行的分析錯誤
grammar mydsl with org.eclipse.xtext.common.Terminals hidden(WS, SL_COMMENT)
generate mydsl "uri::mydsl"
CommandSet:
(commands+=Command)*
;
Command:
(commandName=CommandName LBRACKET (args=ArgumentList)? RBRACKET EOL) |
;
terminal LBRACKET:
'('
;
terminal RBRACKET:
')'
;
terminal EOL:
';'
;
正如你所看到的,我用一個分號作爲EOL分隔符,它工作得對於我來說足夠了。在eclipse中使用dsl時,內置語法驗證器會出現問題。當我錯過一個分號,驗證拋出錯了行的語法錯誤:
是否與我的語法錯誤?謝謝;)
xtext中沒有EOL語義。預計會有一個Semikolon,但會找到一組關鍵字。這就是爲什麼組標記錯誤。如果您確實需要基於行的語法,則需要將WS從超文本劃分爲WS和NL –