2014-09-19 6 views
5

Sono nuovo in Antlr e ho bisogno di scrivere un parser per un codice assembly legacy che potrebbe avere numeri di riga in colonne fisse. Inoltre, alcune colonne hanno un significato, che si tratti di un commento, di una continuazione, ecc. Come posso rilevarle?programma di analisi con token in posizioni fisse in una riga

Per fare alcuni esempi:

000001 proc PROC1

000002 * commento

* comment without line numbers 

      continuation marker set ==>    X 

     Arbitrary text as continuation 

Grazie Xan

+3

Potrebbe postare altro codice. Prova anche a rientrare tutto il codice in modo che il rientro relativo sia ok. – Onur

+0

hai trovato la soluzione? Anche a me interessa questo –

risposta

0

Ho affrontato qualcosa di simile durante la programmazione di una grammatica Antlr a analizzare fonti Cobol. Cobol ha alcune caratteristiche come la tua (colonne fisse, colonne significative, ecc.).

L'unica soluzione che ho trovato per questo problema: "pre-processare" l'input e trasformarlo in qualcosa che Antlr potrebbe analizzare senza problemi!

Es: in Cobol, un asterisco nella colonna 7 indica che la linea è una riga di commento; L'ho modificato (l'asterisco stesso) in ">>" e specificato nella mia grammatica che ">>" significa che questa linea è una riga di commento.