2016-04-04 7 views
0

Im Grunde versuche ich dieses Pascal-Programm über Antlr 4 in Powershell auszuführen.Antlr v4: 'nicht übereinstimmende Eingabe'

PROGRAM AddTwoNumbers; 

    VAR Num1, Num2, Sum : Integer; 

BEGIN 
    Write('Input number 1:'); 
    Readln(Num1); 
    Writeln('Input number 2:'); 
    Readln(Num2); 
    Sum := Num1 + Num2; 
    Writeln(Sum); 
    Readln; 
    END. 

Aber ich erhalte den folgenden Fehler in Powershell:

line 8:4 mismatched input 'Writeln' expecting {'END', ';'} 

Hier sind die relevanten Teile meiner Grammatikdatei:

simpleStatement 
    : assignmentStatement 
    | procedureStatement 
    | exitStatement 
    | gotoStatement 
    | emptyStatement 
    | outputStatement 
    | readKey 
    ; 

outputStatement 
    : ('Writeln' | 'Write') LPAREN string RPAREN SEMI 
    input 
    ; 

input 
    : inputStatement 
    | readKey 
    ; 

inputStatement 
    : 'Readln' (LPAREN identifier RPAREN)* SEMI 
    ; 

readKey 
    : 'Readkey' SEMI 
    ; 

Wie behebe ich diesen Fehler? Vielen Dank.

+0

Weitere Informationen benötigt. Wie führst du es, gib Befehle. – majkinetor

+1

Ich bin mir nicht sicher, das sind die einzigen * relevanten Teile der Grammatik *. Was sagt die Grammatik über eine Reihe von "outputStatement" -Termen? Der Parser scheint ein Problem mit der Anzeige eines zweiten im Eingabestream zu haben. – lurker

+1

Stellen Sie auch volle Grammatik zur Verfügung. – cantSleepNow

Antwort

0

Ihre kompiliert und läuft perfekt in meiner Maschine. Haben Sie versucht, es mit einem anderen Compiler zu kompilieren?

Verwandte Themen