Utilisation de @header dans ANTLR

j'ai du mal à faire fonctionner la règle" @header " ou toute autre @ rule dans ANTLR. Avec un très de base de la grammaire, comme ceci:

grammar test;

options {
     language = CSharp2;
}

@header {
    using System.Collections.Generic;
}

tokens {
  TEST;
}

something : TEST*;

TEST : '0' .. '9'; 

cela semble adhérer à la documentation ANTLR et divers autres exemples en ligne, mais quand j'essaie de générer la sortie par L'un ou L'autre V1 D'ANTLRWorks.4 ou le ANTLR jar v3.2, I get the following error:

Ne peut pas générer la grammaire parce que:

erreur(100): [chemin]test.g:11: 1 syntaxe error: antlr: [chemin]test.g: 11: 1 jeton inattendu: jetons {

que je n'arrive pas à secouer. Je suis capable de générer le lexer et l'analyseur avec succès sans l'en-tête @inclus dans la grammaire. J'ai la dernière version de Java sur Windows:

version java " 1.6.0_22" Java (TM) SE environnement D'exécution (build 1.6.0_22-b04) Java HotSpot (TM) Client VM (build 17.1-b03, mixed mode, sharing)

je suppose que c'est quelque chose de très simple et Je suis aveugle, alors apportez les réponses évidentes.

8
demandé sur Bart Kiers 2010-11-01 04:56:47

1 réponses

l'erreur est due au fait que ces blocs doivent apparaître dans un certain ordre.

  1. options
  2. jetons
  3. @en-tête
  4. @les membres

ensuite vos règles

9
répondu Brad Mace 2010-11-01 02:08:26