Ho problemi a far funzionare "@header" o qualsiasi altra regola @ in ANTLR. Con una grammatica molto semplice, in questo modo:Utilizzo di @header in ANTLR
grammar test;
options {
language = CSharp2;
}
@header {
using System.Collections.Generic;
}
tokens {
TEST;
}
something : TEST*;
TEST : '0' .. '9';
Questo sembra aderire alla documentazione ANTLR e vari altri esempi on-line, ma quando provo a generare l'output attraverso sia ANTLRWorks v1.4 o il barattolo ANTLR v3. 2, ho ricevuto il seguente errore:
Cannot generate the grammar because:
error(100): [path]\test.g:11:1 syntax error: antlr: [path]\test.g:11:1 unexpected token: tokens {
Che non riesco a scuotere. Sono in grado di generare il lexer e il parser senza l'@header incluso nella grammatica. Ho l'ultima versione di Java su Windows:
java version "1.6.0_22" Java(TM) SE Runtime Environment (build 1.6.0_22-b04) Java HotSpot(TM) Client VM (build 17.1-b03, mixed mode, sharing)
Suppongo che questo è qualcosa di pietra semplice e io sono solo cieco ad esso, così si prega di portare sulle risposte ovvie.
Lei ha ragione, signore. Grazie molto. – Moxen
Credo che nella prossima versione di ANTLR (v4), l'ordine di questi blocchi non abbia importanza. –