-
1. Data: 2009-04-29 22:40:26
Temat: Duży kawałek kodu .g
Od: Radosław Osiński <r...@g...com>
Witam,
piszę właśnie lexer w ANTLR 3.1.2. Lexer operuje na pewnym języku
skryptowym z zagnieżdżonymi innymi językami np. HTML. W przyszłości
język ten będzie obsługiwał więcej języków. Wygenerowany lexer w javie
ma w tej chwili powyżej 28000 linii kodu więc trafiłem na ograniczenie
związane z maksymalną wielkością klasy (metody/rozmiaru pliku - nie
istotne) w javie. Rozmiar ten wynika z dużej ilości "potrzebnych"
predykatów.
Chciałbym rozbić tą monolityczną strukturę leksera na kilka lekserów
obsługujących pojedyncze języki w celu uzyskania elastyczności rozwiązania.
W ANTLR wersji 2.7.7 był mechanizm "TokenStreamSelector" który pozwalał
w locie przełączać leksery. Niestety w najnowszych wersjach ANTLR
mechanizm ten zniknął. Nie chciał bym wynajdywać koła dlatego też zadaję
pytanie do grupy:
Czy istnieje jakiś mechanizm zastępczy dla "TokenStreamSelector" w nowej
wersji ANTLR?
--
Z poważaniem Radosław Osiński
-
2. Data: 2009-05-04 23:42:52
Temat: Re: Duży kawałek kodu .g
Od: Krzysztof Stachlewski <s...@f...pl>
Radosław Osiński pisze:
> ...
> ma w tej chwili powyżej 28000 linii kodu więc trafiłem na ograniczenie
> związane z maksymalną wielkością klasy (metody/rozmiaru pliku - nie
> istotne) w javie.
Naprawdę jest coś takiego w tej "enterprise" javie?
Fascynujące. :->
Stach
--
http://stachlewski.info
-
3. Data: 2009-05-05 08:10:07
Temat: Re: Duży kawałek kodu .g
Od: Radosław Osiński <r...@g...com>
Witam,
Krzysztof Stachlewski pisze:
>
> Naprawdę jest coś takiego w tej "enterprise" javie?
> Fascynujące. :->
>
> Stach
otrzymuję takie coś:
[javac] /home/radek/workspace/.../src/...LexerParser/x.java:
23859:
code too large
[javac] public int specialStateTransition(int s, IntStream
_input) throws NoViableAltException {
[javac] ^
[javac] 1 error
BUILD FAILED
plik z kodem javy został wygenerowany na podstawie pliku .g poprawnie
ograniczenie jest z strony javy. Pisząc java myślałem o:
radek@osator ~ $ java -version
java version "1.6.0_13"
Java(TM) SE Runtime Environment (build 1.6.0_13-b03)
Aktualnie zacząłem radzić sobie w inny sposób. Ale odpowiedź na pytanie:
"Czy istnieje jakiś mechanizm zastępczy dla "TokenStreamSelector" w
nowej wersji ANTLR?"
nadal mnie ciekawi.
--
Z poważaniem Radosław Osiński