-- Now TEX scaner is available. -- T+ defines LaTeX lexical rules -- and value of new "tex_lexics" boolean variable -- @+ defines (additionaly to T+) .sty - file mode of LaTeX, -- when @ characters are allowed in command names -- .TEX file have to be with 'P-U-p-A-T+' -- .STY file have to be with 'P-U-p-A-T+@+' #E OPEN S 'S2.LST'; $L:=#CALL_PAS(35 'sample.TEX' 'P-U-p-A-T+'); PRINT $L; $L:= #CONV($L); PRINT $L; #STAT($L); #CALL_PAS(1); FORALL $E IN $L DO S<]@$E; IF NOT $E->S<<;S<<;FI;OD; ## #CONV (. (* ( ( '%' (* S'($$) *) NULL ) -- removes all comments ! ( $X!.:=' ' (* ' ' *) ) -- removes all spaces but one ! ( NULL (+ NULL +) / $X!.:=NULL / ) -- leave one NULL if many ! ( NULL / $X!. :=' '/) -- removes single NULLs, -- changing them to spaces ! $X!.:=$E ) *) .) /RETURN $X/ ## #STAT (. (* ( $IDENT!.:=#IDENT ! $KEYS!.:=#_KEYWORD ! $NULLS!.:=NULL ! $ATOMS!.:=$ANY ) *) .) / PRINT (. IDENTIFIERS $IDENT .); PRINT (. KEYWORDs $KEYS .); PRINT (. NULLs $NULLS .); PRINT (. OTHER GOOD THINGS $ATOMS .); / ##