Как добавить встроенную функцию в грамматику ANTLR? - PullRequest
0 голосов
/ 24 января 2020

Мы работаем над расширением грамматики Antlr VB6 для охвата LotusScript.

LotusScript имеет несколько функций, которые чужды VB. Я пытаюсь, чтобы моя грамматика понимала что-то вроде этого:

x = Inputbox("How Happy are you")
y = Inputbox("Number", "Enter any number", "0")

Я пытался добавить грамматику:

inputboxStmt
   : INPUTBOX WS? argList
   ; 

INPUTBOX
   : I N P U T B O X
   ;

Существующие определения из vb6 Grammar :

argList
   : LPAREN (WS? arg (WS? COMMA WS? arg)*)? WS? RPAREN
   ;

arg
   : (OPTIONAL WS)? ((BYVAL | BYREF) WS)? (PARAMARRAY WS)? ambiguousIdentifier typeHint? (WS? LPAREN WS? RPAREN)? (WS asTypeClause)? (WS? argDefaultValue)?
   ;

WS
   : [ \t\u000C] +
   ;

Однако, когда я анализирую код выше, я получаю ошибки вроде:

line 5:14 no viable alternative at input '\nDim nstr As String\n x = Inputbox("How Happy are you"'
line 5:14 no viable alternative at input '\n x = Inputbox("How Happy are you"'
line 5:14 mismatched input '"How Happy are you"' expecting { [long list of keywords]}
line 6:16 mismatched input '"Number"' expecting {[same long list of keywords] }
line 6:26 mismatched input '"Enter any number"' expecting <EOF>

Что мне здесь не хватает?

...