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;