Ich habe folgende Grammatik in ANTLR4ANTLR4 Grammatik Ausgabe
grammar DEF;
def
:
'DEF' vartypes ID ';'
;
ID
:
(
'A' .. 'Z'|'a'..'z'
)+
;
vartypes
:
INT
| REAL
;
INT:'INT';
REAL:'REAL';
VARIABLE
:
(
'A' .. 'Z'
| 'a' .. 'z'
| '0' .. '9'
| '_'
| '-'
)+
;
fragment VARTYPEREAL
:
'REAL'
;
fragment VARTYPEINT
:
'INT'
;
LINENUMBER
:
'N' INTVALUE
;
INTVALUE
:
(
'-'
)?
(
'0' .. '9'
)+
;
WS
:
(
' '
| '\t'
| '\n'
| '\r'
)+ -> skip
;
Und wenn ich analysieren die Zeichenfolge 'DEF REAL-Test;' Ich erhalte den folgenden Fehler:
line 1:4 missing {'INT', 'REAL'} at 'REAL'
Zeile 1: 9 Fremdeingang 'Test' erwartet ';'
Aber, wenn ich meine Grammatik
grammar DEF;
def
:
'DEF' vartypes ID ';'
;
ID
:
(
'A' .. 'Z'|'a'..'z'
)+
;
vartypes
:
'INT'
| 'REAL'
;
VARIABLE
:
(
'A' .. 'Z'
| 'a' .. 'z'
| '0' .. '9'
| '_'
| '-'
)+
;
fragment VARTYPEREAL
:
'REAL'
;
fragment VARTYPEINT
:
'INT'
;
LINENUMBER
:
'N' INTVALUE
;
INTVALUE
:
(
'-'
)?
(
'0' .. '9'
)+
;
WS
:
(
' '
| '\t'
| '\n'
| '\r'
)+ -> skip
;
alles
ändern ist in Ordnung. Wo liege ich in der Grammatik 1 falsch?
Als Kommentar ist es nicht einfach, den Unterschied zwischen Ihren Grammatiken zu erkennen. Um zu vermeiden, dass die Stimmen beim nächsten Mal geschlossen werden, beschreiben Sie, was genau Sie geändert haben. – doublep