«« ( Date ) »» // «« ( Thread ) »» // ir4pp1 - 2006

invalid token, unarni minus & condition

by Marko Gacesa
subota, 02. decembar 2006 - 14:42.


MS> P.S.
MS> a = - - -b;
MS> bi trebalo (cini mi se) i mikrojava da prihvati..

Ne bi prihvatila. U postavci domaceg stoji:

Term = FactorList.
FactorList = FactorList Mulop Factor | Factor | "-" Factor.

Dakle samo ceo FactorList moze biti negiran ali ne i svaki Factor
pojedinacno. Evo jos jedan primer koji ne bi prosao: c = -a / -b;


Takodje ima jos jedna nelogicnost u MikroJavi. U Condition ne mogu
postojati zagrade, tako da nesto ovako ne prolazi:
if ( (a == 1 || a == 2) && b > 0) {}
mora se pisati:
if ( a == 1 && b > 0 || a == 2 && b > 0) {}
Unarni minus sam resio na svoj nacin, ali ovo ne zelim da diram... :)


MS> Primer domaceg sa vezbi:
MS> 3. Automatski generisan fajl sym.java sadrzi sve konstante koje
MS> su potrebne za rad leksickog analizatora koji je ranije
MS> napravljen, osim jedne, i to konstante INVALID. Potrebno je da i
MS> nju definisemo u klasi sym i sacuvamo tu promenu. Kada smo to zavrsili, uradicemo prevodenje:
MS> C:\Java>javac ppdz/sym.java
MS> 4. Posto smo napravili i preveli novu varijantu klase sym,
MS> moracemo ponovo da prevedemo izvorni kod leksickog analizatora:
MS> C:\Java>javac ppdz/MJlexer.lex.java
MS> 5. Prevodimo fajl parser.java:
MS> C:\Java>javac ppdz/parser.java

Hvala. Nisam to primetio. Ja sam automatizovao proces: napravio sam
bat fajl da odradi sva prevodjenja, kopiranja, pozive cup-a i JLex-a.
Razbijanje tog procesa samo zbog promene sym.java mi se ne svidja.
Ostajem pri resenju da proglasim INVALID za terminal u cup fajlu.
Nadam se da necu izgubiti neke bodove zbog toga... :)
Hvala jos jednom.

Marko

mailto:gamax@eunet.yu