Table of Contents

ragel

epxr

expr . expr concat
expr | expr nebo
expr & expr intersect
expr - expr diff
expr -- expr strong diff
expr*
expr+
expr?
expr{n,m}
!expr
^expr

extra

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

action a1 { c-code; }

transitional

> start
$ all
% leave
@ finish
main := (lower* >A $B %C ) . '\n' @N;

in state

variable

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

getkey *p

způsob, jak získat dato z data pointeru, opakovaně použito!

access fsm->

definuje prefix, zpravidla pointer na strukturu

prepush

postpop

kod pro manipulaci se zásobníkem, pokud je tento dynamický (top,stack) použíto během fcall

write

write data ?nofinal|noerror|nofinal?

konstantní static data, do třídy, funkce i global.

write start

write first_final

write error

alternativa pro přístup ke start/first_final/error statvům

write init ?nocs?

zpravidla inicializace cs, top/stack, pouze jednou před startem mašiny

write exec

write exports