2014-09-19 3 views
5

Ich bin neu in Antlr und müssen einen Parser für einen Legacy-Assembly-Code schreiben, Mai Zeilennummern in festen Spalten haben. Außerdem haben bestimmte Spalten eine Bedeutung - ob es sich um einen Kommentar, eine Fortsetzung usw. handelt. Wie kann ich diese erkennen?Parse-Programm mit Token an festen Positionen in einer Zeile

einige Beispiele geben:

000001 proc proc1

000002 * Kommentar

* comment without line numbers 

      continuation marker set ==>    X 

     Arbitrary text as continuation 

Dank Xan

+3

Könnten Sie etwas mehr Code schreiben. Versuchen Sie auch, den gesamten Code so einzurücken, dass die relative Einrückung in Ordnung ist. – Onur

+0

hast du die Lösung gefunden? Das interessiert mich auch –

Antwort

0

ich so etwas wie dies konfrontiert habe, wenn eine Antlr Grammatik Programmierung zu Parsen Cobol-Quellen. Cobol hat einige Eigenschaften wie Ihre (feste Spalten, Spalte ist wichtig, usw.).

Die einzige Lösung, die ich für dieses Problem gefunden haben: „Pre-Prozess“, der Eingang und verwandelte sie in einige, die Antlr ohne Probleme analysieren können!

Ex: In Cobol, ein Sternchen in Spalte 7 gibt an, dass die Linie eine Kommentarzeile ist; Ich habe es (das Sternchen selbst) in ">>" geändert und in meiner Grammatik angegeben, dass ">>" bedeutet, dass diese Zeile eine Kommentarzeile ist.

Verwandte Themen