2011-06-20 14 views
14

Buduję parser w antlr, który kompiluje się do działającego celu java. Po ponownym dopasowaniu dla C# 2 generuje on analizator składni, w którym wszystkie metody analizowania są prywatne, ale są oznaczone atrybutem [GrammarRule ("rulename")].Dlaczego metody antlr3 C# parser są prywatne?

Co to jest zatwierdzony oznacza faktycznie wywołać parser?

Używam ANTLR 3.3 30 listopada 2010 12:45:30

Dzięki Andy

Odpowiedz

20

Wykonaj co najmniej jedna zasada parser "publiczne" tak:

grammar T; 

options { 
    language=CSharp2; 
} 

public parse 
    : privateRule+ EOF 
    ; 

privateRule 
    : Token+ 
    ; 

// ... 

Ty można następnie wywołać parse() na wygenerowanym analizatorze składni.

protected i private (ustawienie domyślne, jeśli nic nie jest określone) również są obsługiwane.

+2

Dzięki, nie mogłem znaleźć żadnej dokumentacji o tym skutku. –

+0

@Andy, nie ma za co. Tak, działa to trochę inaczej niż cel Java, w którym możesz używać tych słów kluczowych, ale nie są one zaimplementowane. Domyślnie obiekt docelowy Java ANTLR generuje modyfikator 'public'. Powinien więc nadal działać z celem Java, jeśli umieścisz 'public' przed regułą parsera. –

Powiązane problemy