2011-06-20 8 views
14

Estoy construyendo un analizador en antlr que compila a un objetivo Java en funcionamiento. Cuando redestino para C# 2, produce un analizador sintáctico en el que todos los métodos de análisis son privados pero están marcados con un atributo [GrammarRule ("rulename")].¿Por qué los métodos antlr3 C# parser son privados?

¿Cuál es el medio aprobado para invocar realmente el analizador?

estoy usando antlr 3.3 30 de Nov, 2010 12:45:30

Gracias, Andy

Respuesta

20

hacer al menos una regla de analizador "público" de esta manera:

grammar T; 

options { 
    language=CSharp2; 
} 

public parse 
    : privateRule+ EOF 
    ; 

privateRule 
    : Token+ 
    ; 

// ... 

Usted puede llamar al parse() en el analizador generado.

protected y private (el valor predeterminado si no se especifica nada) también son compatibles.

+2

Gracias, no pude encontrar ninguna documentación en este sentido. –

+0

@Andy, de nada. Sí, funciona de forma un poco diferente que el objetivo de Java donde puede usar estas palabras clave, pero no se implementan. El objetivo de Java de ANTLR por defecto produce el modificador 'public'. Por lo tanto, debería funcionar con el objetivo de Java si coloca un 'public' antes de alguna regla del analizador. –

Cuestiones relacionadas