In diesem Abschnitt ist die Eingabe für den Scanner-Generator SCANGEN [76] gelistet.
Die Eingabe geht davon aus, daß der ASCII-Characterset verwendet wird, wobei das höchste Bit (Paritätsbit) nicht signifikant ist.
Die in der Eingabe des Scanner-Generators definierten Terminal-Symbole (``Token'') werden vom Scanner bei der Analyse der JANAP-Eingabe an den Parser weitergegeben. Die Definition der Terminal-Symbole für den Scanner-Generator erfolgt durch sogenannte Regular Expressions. Jedem Terminal-Symbol werden vom Scanner zwei Zahlen (Major und Minor) zugeordnet. Dadurch werden die Terminal-Symbole eindeutig identifiziert. Für JANAP wurde die erste Zahl (Major) wie folgt gewählt:
OPTIONS list, report, tables, dfa, unreachable, optimize CLASS C = 'C','c'; E = 'E','e'; G = 'G','g'; I = 'I','i'; L = 'L','l'; M = 'M','m'; R = 'R','r'; S = 'S','s'; U = 'U','u'; V = 'V','v'; X = 'X','x'; SmallLetter = 'b', 'd', 'f', 'h', 'j', 'o','q', 'w', 'y', 'z' 'a', 'k', 'n', 'p', 't'; BigLetter = 'B', 'D', 'F', 'H', 'J', 'O','Q', 'W', 'Y', 'Z' 'A', 'K', 'N', 'P', 'T'; Digit = '0'..'9'; EndLineChar = 13; LineFeed = 10; Blank = ' ',9,12; Commachar = ','; dotchar = '.'; minuschar = '-'; pluschar = '+'; lparenchar= '('; rparenchar= ')'; starchar = '*'; slashchar = '/'; equalchar = '='; underlinechar = '_'; apochar = '''',96; dollar = '$'; Illegal = '!', '#', '%', '&', ':', ';', '?', '@', '[', ']','<','>', 1..8,11,14..31,123..127,'\', '^', '"'; DEFINITION letter = C, E, G, I, L, M, R, S, U, V, X, SmallLetter, BigLetter; restname = (letter, digit) *; TOKEN commentline{0} = EndLineChar{TOSS}.LineFeed{TOSS}*. starchar{TOSS}.(not EndLineChar{TOSS})*; TOKEN blankspace{0}= blank{TOSS}+; TOKEN newline{0} = EndLineChar{TOSS}.LineFeed{TOSS}*; TOKEN Cname {5,1} = C.restname EXCEPT 'CASES' {2,1}, 'COMMON' {2,2} ; TOKEN Gname {5,2} = G.restname ; TOKEN Iname {5,3} = I.restname EXCEPT 'INITIAL' {1,9} , 'INTERVAL' {2,5} ; TOKEN Lname {5,4} = L.restname EXCEPT 'LIBRARY' {1,10} ; TOKEN Mname {5,5} = M.restname EXCEPT 'MAGPH' {2,6} ; TOKEN Rname {5,6} = R.restname; TOKEN Sname {5,7} = S.restname EXCEPT 'SCATTER' {2,10}, 'SCALE' {2, 9}, 'STEADY' {1,15}, 'SUBCKT' {1,16}; TOKEN Uname {5,8} = U.restname ; TOKEN Vname {5,9} = V.restname EXCEPT 'VARYING' {1,21}; TOKEN Xname {5,10} = X.restname ; TOKEN oname {5,11} = (BigLetter,SmallLetter,E).restname EXCEPT 'DC' {1,1}, 'DEBUG' {1,2}, 'END' {1,3}, 'ENDS' {1,4}, 'EXTERN' {1,5}, 'FUNCTION' {1,7}, 'HISTO' {1,8}, 'OPTION' {1,11}, 'PARAM' {1,12}, 'PLOT' {1,13}, 'PRINT' {1,14}, 'TABLE' {1,17}, 'TITLE' {1,18}, 'TOPOLOGY' {1,19}, 'TRAN' {1,20}, 'DECADE' {2,3}, 'ENVELOPE' {2,4}, 'POINTS' {2,7}, 'PSTEP' {2,8}, 'TC1' {2,12}, 'TC2' {2,13}; TOKEN integer {4,1} = digit + ; TOKEN signinteger {4,5} = minuschar.integer; TOKEN digitname {5,12} = digit+.letter.(letter,digit)*; TOKEN signdigitname {4,4} = minuschar.digitname; TOKEN unreal {4,2} = (integer.(epsilon,dotchar.(epsilon,integer)), dotchar.integer). (epsilon,(E.(epsilon,pluschar{TOSS},minuschar).integer)). letter * ; TOKEN signreal {4,3} = (pluschar{TOSS},minuschar).unreal; TOKEN text {3,0} = apochar{TOSS}. (not (apochar,EndLineChar), apochar{TOSS}.apochar)* . apochar{TOSS}; TOKEN comma {6,1} = commachar{TOSS}; TOKEN plus {6,2} = pluschar{TOSS}; TOKEN minus {6,3} = minuschar; TOKEN mult {6,4} = starchar{TOSS}; TOKEN slash {6,5} = slashchar{TOSS}; TOKEN power {6,6} = starchar{TOSS}.starchar{TOSS}; TOKEN equal {6,7} = equalchar{TOSS}; TOKEN leftparen {6,8} = lparenchar{TOSS}; TOKEN rightparen {6,9} = rparenchar{TOSS}; TOKEN underline {6,10} = underlinechar{TOSS}; TOKEN spclE{7,1} = dollar{TOSS}.E; TOKEN spclR{7,2} = dollar{TOSS}.R; TOKEN spclV{7,3} = dollar{TOSS}.V; TOKEN spclS{7,4} = dollar{TOSS}.S;