«« ( Date ) »» // «« ( Thread ) »» // ri4pp - 2005

Rad sa CUP-om prakticno nemoguc

by Nenad Tesovic
petak, 30. decembar 2005 - 14:23.

Vec dva dana pokusavam da napravim bilo kakav primer za CUP koji ce on moci da prepozna.

Posto ni najprostiji primeri sa jednim, dva, i tri terminala i jednim neterminalom nisu proradili krenuo sam da skracujem dati primer koji normalno funkcionise.

Na kraju sam ostavio samo jedan neterminal i sve je i dalje radilo:

non terminal Program;

Program ::= CLASS IDENT
LBPAREN RBPAREN {: System.out.println("Glavna klasa"); :}
;

Fajl je bio sledece sadrzine:

class P
{
}

Ostavio sam cetiri reda terminala:

terminal IDENT, BREAK, CLASS, ELSE, IF, NEW, PRINT;
terminal READ, RETURN, VOID, WHILE, PLUS, MINUS, MULL, DIV, MOD, ISEQ;
terminal NOTEQ, GTER, GEQ, LESS, LEQ, AND, OR, EQUALS, PLUSPLUS, MINUSMINUS;
terminal SEMI, COMMA, DOT, LPAREN, RPAREN, LBRACKET, RBRACKET, LBPAREN, RBPAREN;

Ako se recimo 2. i 3. red premeste ispod 4. onda sve prestaje da radi.
Takodje, ako se obrise terminal SEMI (koji se u opste ne koristi), sve opet prestaje da radi.

U dokumentaciji se ne pominju pravila vezana za redoslede, definisanje nepostojecih terminala, itd. Ja ne umem da gatam tako da ne znam kako da krenem da radim ovaj domaci. Ne zelim da probam sve rasporede definisanih terminala jer je broj permutacija ogroman.