Antlr Problem mit Grammatik?

Objektorientierte Programmiersprache auf Basis einer virtuellen Maschine (https://www.oracle.com/java/)
Antworten
Proxic
Beiträge: 14
Registriert: So Apr 24, 2016 9:38 pm

Antlr Problem mit Grammatik?

Beitrag von Proxic » Sa Okt 22, 2016 7:47 pm

Hallo, ich habe bei Antlr ein Problem mit meiner Grammatik, also in meiner .g4-Datei wie es scheint, weil ich wohl irgendwie nach einer Änderung etwas verhunzt habe. Ich bin gerade dabei eine Grammatik zu schreiben mit der man dann nachher mathematische Ausdrücke, Funktionen usw. auswerten kann. Später will ich die dann auch noch plotten aber so viel erst einmal dazu. Das ganze hat auch schon bis vor kurzem für +, -,*, :, und für zuweisungen, also assignments funktioniert aber jetzt funktioniert davon nur noch das assignemnt. Die ganzen Grundrechenarten nicht mehr. Ich hoffe mal sehr, dass sich hier jemand mit der EBNF bzw. Antlr konkret auskennt.

Code: Alles auswählen

root
	: begin=stat EOF
	;

stat

    : express=expr (SEMI | SEMI begin=stat)?
    ....
    ;

expr
	: leftop=expr op=(MULT|DIV) rightop=expr
	| leftop=expr op=(ADD|SUB) rightop=expr
        ....
	;

..
Da wo jetzt ein ... ist habe ich jetzt einmal was entfernt, um das ganze übersichtlicher zu halten. Das ist auf jeden Fall mein parser grammer und das hier ist das lexer grammar, auch ein wenig gekürzt, um es übersichtlicher zu halten.

Code: Alles auswählen

MULT
	: '*'
    ;

DIV
	: '/'
    ;

ADD
	: '+'
    ;

SUB
	: '-'
    ;

SEMI
	: ';'
    ;
Ich habe jetzt auch vor kurzem einen eigenen ErrorListener geschrieben, da der native ja nicht gerade sehr aussagekräftig ist und damit ich den einfach noch erweitern konnte habe ich dann ebend meinen eigenen geschrieben und den alten beim parser abgemedeldet. Meiner gibt mir dann jetzt aus, wenn ich diese Aufgabe erstelle:

Code: Alles auswählen

String task = "8 + 3";
folgenden Fehler:

Code: Alles auswählen

Error on line 1 at char 2 (whitespaces skipped)
mismatched input '+' expecting {<EOF>, '*', '/', '+', '-', ';'}
Sieht jemand den Fehler bzw. das warum? Ich sitze jetzt schon eine ganze Zeit davor und komme nicht weiter, vor allem steht da ja: "mismatched input '+' aber erwartet wird doch entweder ein EOF, *, /, + usw.? :shock:

nufan
Wiki-Moderator
Beiträge: 2446
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Antlr Problem mit Grammatik?

Beitrag von nufan » So Okt 23, 2016 12:44 pm

Tag! :)
Grundsätzlich kenne ich mich mit ANTLR in Java aus. Wenn du mir ein kompilierbares Projekt hochlädst kann ich am Abend genau drüberschaun.

Antworten