include lexi.e
integer fo    -- output file

-- parser .
-- ("uit te voeren aktie")
-- ANCHOR=0
-- htmlcolor : [ '<!-' ("put SKIP;put commentcollor;put convert-lt!-") comment | 
--               '</'  ("put SKIP;put endtagcolor;put convert-lt/") | 
--               '<'   ("put SKIP;put tagcolor;put convert-lt")|
--               '-->' ("put SKIP;put convert--gt;put endcolor") |
--               '>'   ("put SKIP;put convert-gt;put endcolor")
--             ] 'EOF' .
-- comment   : '<'     ("put SKIP;put convert-lt") comment |
--             '>'     ("put SKIP;put convert-gt") comment |
--             '-->'   ("put SKIP;put convert--gt;put endcolor") .
--
 
constant zoek={"<!-","</","<","-->",">"} -- set of alternative terminals .

procedure color_comment() 
while L_result[L_INDEX]!=4 do
 puts(fo,L_result[L_SEARCH])
 L_in(zoek)
 puts(fo,L_result[L_SKIP])
 if    L_result[L_INDEX]=4 -- -->
 then  L_result[L_SEARCH]=L_result[L_SEARCH][1..-2]&"></font>"
 elsif L_result[L_INDEX]=5 -- >
 then  L_result[L_SEARCH]=">"
 else  L_result[L_SEARCH]="<"&L_result[L_SEARCH][2..]
 end if
end while
end procedure

procedure color_HTML()
puts(fo,L_result[L_SKIP])  
if    L_result[L_INDEX]=1    -- <!-
then  L_result[L_SEARCH]="<br><font color=red><"&L_result[L_SEARCH][2..]
      color_comment()
elsif L_result[L_INDEX]=2 -- </ 
then  L_result[L_SEARCH]="<font color=green><"&L_result[L_SEARCH][2..]
elsif L_result[L_INDEX]=3 -- <
then  L_result[L_SEARCH]="<br><font color=blue><"&L_result[L_SEARCH][2..]
elsif L_result[L_INDEX]=4 -- -->
then  L_result[L_SEARCH]=L_result[L_SEARCH][1..-2]&"></font>"
elsif L_result[L_INDEX]=5 -- >
then  L_result[L_SEARCH]="></font>"
end if
puts(fo,L_result[L_SEARCH])
end procedure

--sequence file=open("d:/judo/nieuweagenda/noord.htm","r")
integer  file=open("c:/mhtml/noord.htm","r")
         fo  =open("test.htm","w")
if not L_init(file) 
then puts(1,"File not there\n") abort(1) end if
L_any({}) -- zet ANCHOR = 0
   
-- main scanner
L_in(zoek)
color_HTML()
while L_result[L_INDEX]>0 do
 L_in(zoek)
 color_HTML()
end while
 
-- no more file's to handle ?
if L_end()
then puts(1,"End failed , stil work to do\n")
else puts(1,"End successfull\n")
end if
close(file)
close(fo)