| expr . expr | concat | |
| expr | expr | nebo | |
| expr & expr | intersect | |
| expr - expr | diff | |
| expr -- expr | strong diff | |
| expr* | ||
| expr+ | ||
| expr? | ||
| expr{n,m} | ||
| !expr | ||
| ^expr |
defacto hratky s prioritami
| guarded | ||
|---|---|---|
| expr :> expr | main = any* :> 'FIN' | Finish-Guarded Concatenation |
| expr ::> expr | comment= '/*' (any @comm)* :» '*/' | Entry-Guarded Concatenation |
| expr ::> expr | main = any* :» 'FIN' | catch-all on the last chars of FIN |
| expr <: expr | main := (' '* >start %fin ) <: (' ' $ws %%|%% [a-z] $alpha)* | Left-Guarded Concatenation |
| expr ** expr | Left-Guarded Concatenation |
action a1 { c-code; }
| > | start |
| $ | all |
| % | leave |
| @ | finish |
main := (lower* >A $B %C ) . '\n' @N;
host interface
| int | cs | current state, lze modifikovat “zvenku” |
| char * | p | data pointer |
| char * | pe | data end pointer |
| int | eof | end-of-file pointer |
| array | data | pouze java,ruby |
| int[] | stack | |
| int | top | viz stack |
| int | act | někdy použito skenerem |
| char * | ts | pro skener? 6.3 |
| char * | te | pro skener? 6.3 |
pomoci variable lze p,pe,eof,cs,top,stack,ts,te,act předifovat, lze také použít getkey a/nebo access
způsob, jak získat dato z data pointeru, opakovaně použito!
definuje prefix, zpravidla pointer na strukturu
kod pro manipulaci se zásobníkem, pokud je tento dynamický (top,stack) použíto během fcall
konstantní static data, do třídy, funkce i global.
alternativa pro přístup ke start/first_final/error statvům
zpravidla inicializace cs, top/stack, pouze jednou před startem mašiny