Witam,
Od paru godzin próbuje napisać lexer, który zaakceptuje program, który będzie się zawierał w '{' i '}' i akceptował ( na razie ) tylko poprawne deklaracje zmiennych czyli np. coś takiego:
{ int a; int[80][80] b; float c;}
Mam problem z + ponieważ gdzie go nie dodam to coś mi nie działa.
Mam takie coś aktualnie:
grammar test;
r: block ; // zaczyna sie od begin
block: '{' DEKLARACJA|(DEKLARACJA DEKLARACJA_TABLICY) NAZWA SREDNIK '}'; // deklaracja int ab; lub int[80] ab; lub int[90][90] ab; JAK ZROBIC ZEBY BYLO WIELE?
DEKLARACJA: ['int' 'bool' 'float']; // na poczatku musi byc deklaracja przynajmniej jedna
NAZWA: [a-z]+; // nazwa zmiennej
LICZBA: [0-9]+; // liczba kolumn/wierszy
SREDNIK: ';' ; // SREDNIK
DEKLARACJA_TABLICY: (KWADRATOWY_LEWY LICZBA KWADRATOWY_PRAWY)+ ; // ile wymiarow ma tablica i jakie wartosci?
KWADRATOWY_LEWY: '[' ; // nawias kwadratowy otwierajacy
KWADRATOWY_PRAWY: ']' ; // nawias kwadratowy zamykajacy
WS : [ \t\r\n]+ -> skip ; // skip spaces, tabs, newlines
Proszę o jakieś wskazówki
Pozdrawiam