To powinno być dość proste. Pracuję nad gramatyką leksykonu przy użyciu ANTLR i chcę ograniczyć maksymalną długość identyfikatorów zmiennych do 30 znaków. Starałem się to osiągnąć z tej linii (po normalnej regex - z wyjątkiem „” rzecz - składni):Składnia kwantyfikatora zasięgu w ANTLR Regex
ID : ('a'..'z'|'A'..'Z') ('a'..'z'|'A'..'Z'|'0'..'9'|'_'){0,29} {System.out.println("IDENTIFIER FOUND.");}
;
żadnych błędów w generacji kodu, ale kompilacja nie ze względu na linię w wygenerowanego kodu, który był po prostu :
0,29
Oczywiście antlr bierze fragment tekstu między nawiasami i umieszczenie go w strefie publicznej akceptacji wraz z linii druku. Przeszukałem stronę ANTLR i nie znalazłem przykładu ani odniesienia do równoważnego wyrażenia. Jak powinna wyglądać składnia tego wyrażenia?
Dziękuję za pomoc. – user1634761
Jeśli ANTLR zostały użyte tylko do generowania kompilatorów dla języków programowania, może być mało wykorzystania do kwantyfikatorów. Ale gramatyka (schemat) do sprawdzania poprawności dowolnych uporządkowanych danych z pewnością ich potrzebuje - numery kart kredytowych to 16 cyfr, a nie 13 lub 25. Książka ANTLR4 ma gramatyki JSON i XML, ale bez podstawowych ograniczeń tokenów trudno byłoby użyć Gramatyka ANTLR jako abstrakcyjna (niezależna od kodeków) wersja JSON Schema i XSD. – Dave
"Obecnie niewiele jest powodów, by ograniczać identyfikatory w języku" - nie oznacza to, że nie istnieją żadne języki z ograniczonymi identyfikatorami, ani że ludzie mogą chcieć pisać dla nich parsery. –