include lexi.e
sequence ident={"ABCDEFGHIJKLNMOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLNMOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_"}                   
sequence num  ={"0123456789","0123456789"}
sequence punctuation = {"?/()#$*-+:=<>&{}[]@!,;'.^\"",{}}
global constant TOKEN=1,IDENT=2
global constant text=1,getal=2,punct=3,eol=4,eof=5  
sequence lexi_zoek = { ident , num , punctuation , {"\n",{}}}  
-- simulation of lexi from lexscan.e
L_any(" ") -- ANCHOR=1
function lexi() 
L_in(lexi_zoek)
if    L_result[L_INDEX]=text  then return {text,L_result[L_SEARCH]}
elsif L_result[L_INDEX]=getal then return {getal,L_result[L_SEARCH]}
elsif L_result[L_INDEX]=punct then return {punct,L_result[L_SEARCH]}
elsif L_result[L_INDEX]=eol   then return {eol,L_result[L_SEARCH]}
elsif L_result[L_INDEX]=-1    then return {eof,L_result[L_SEARCH]}
else  puts(1,"Ill char found = "&L_result[L_SKIP]&'\n')
end if
end function
-- test simulatie lexi 
sequence lexitest
~L_init("naam -> 1012 ident: toestand=gevolg . ")
lexitest = lexi()
while lexitest[TOKEN]!=eof do
printf(1,"token %d string=%s\n",lexitest)
lexitest = lexi()
end while
~L_end()