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",{}}}
L_any(" ")
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
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()