Pseudo-realno vreme - nije u realnom vremenu, možda sam pogrešno formulisao termin, ali hteo sam da naznačim da izgleda kao da unos ide u realnom vremenu, ali ne ide, jer se ispravnost svakog karaktera proverava pošto se unese i u zavisnosti od toga odlučuje šta se radi sa njim.
Kontekstna analiza - analiziraš svaki uneti karakter u KONETKSTU svih prethodnih kada gledaš da li je ispravan, a u KONTEKSTU celog izraza kada računaš njegovu vrednost, a ne samog za sebe.
Dakle ako ja u tvom hipotetičkom programu unesem sledeći niz karaktera sa tastature: '1','*','/'; tvoj program treba da me zaustavi, jer to deljenje, posmatrano samo za sebe ne može da bude ispravano ili neispravano, ali ako je pre njega već bila neka operacija (u ovom slučaju množenje) onda imaš grešku (čemu je jednak izraz "1:/2" ?!). Dakle znak podeljeno se posmatra u konektstu (u celini, u zavisnosti od, u odnosu na) svih ostalih znakova unesenih pre njega.
Dakle morao bi da definišeš pravila na osnovu matematike (jedino plus i minus od operacija mogu da stoje u velikom nizu jedan pored drugog i onda se svi sem prvog (ili zadnjeg, zavisi kako odlučiš da grupišeš) budu tretirani kao unarni operatori znaka (recimo "1+-+-+-+-+-+-+-+-+-+-++++----2" se računa tako što sve pluseve sem prvog zanemariš (posmatraš ih kao operatore koji ne menjaju ništa, pod uslovom da ne uvedeš operator inkrementa (++) i svaka dva minusa izbaciš (tu minus tretiraš kao operaciju koja menja znak operanda desno od nje, tako da ako dva puta promeniš znak, dobiješ isti znak) tako da rezultat ispadne 3 (prvi plus je binarni operator (ima dva operanda) ostali se ne gledaju i ima paran broj minusa koji se potiru) - dakle sve se posmatra u kontekstu svega ostalog :)). Ovo je dosta velik posao, preporučujem ti da ostaneš na četiri osnovne operacije i da ne koristiš zagrade (dakle sve sem broja i znakova +,-,*,/,= smatraš greškom). Eventualno da ubaciš neke tastere da predstavljaju rad sa memorijom (kao na digitronu memory store, memory reset, memory add).
NĆirić