MiniUnix/usr/source/tmg/tmgl.s
1 ..1
..1:begin:
ignore
blanks
pr1:
comment
salt;pr1
parse
first
salt;pr2
diag
error
pr2:
comment
salt;pr2
parse
line
salt;pr2
diag
error
salt;pr2
putcharcl
1 parse
last
.3=.
<1 \0>;.even
.2=.
.tx;.3
.tp;.byte 1,0;
1 .tn
.1=.
fref
1 trans;1 .2
.4=.
.tp;.byte 2,0;
.txs;':
1 .tp;.byte 1,0;
first:
parse
.1
getfref
line
1 trans;1 .4
.1=.
1
.2=.
2
.3=.
1 .txs;';
.5=.
<??? \0>;.even
.4=.
.tn
.tx;.5
.tp;.byte 2,0;
.tp;.byte 1,0;
1 .tn
error:
smark
ignore
none
any
.1
string
.2
scopy
.pxs;';
alt;..3
trans;1 .3
goto;..2
..3:null
..2:
1 trans;1 .4
.1=.
.tp;.byte 2,0;
.tn
.tp;.byte 1,0;
1 .tn
line:
labels
charcl
alt;..7
.pxs;';
goto;..4
..7:statement
salt;..5
numbers
salt;..6
trule
.pxs;';
..6:
..5:
..4:
1 trans;1 .1
.1=.
.tp;.byte 2,0;
.tn
1 .tp;.byte 1,0;
numbers:
number
.pxs;';
numbers
alt;done
1 trans;1 .1
.1=.
.tp;.byte 2,0;
.tn
1 .tp;.byte 1,0;
labels:
label
labels
alt;done
1 trans;1 .1
.1=.
.tp;.byte 1,0;
1 .txs;':
label:
name
.pxs;':
1 trans;1 .1
.2=.
<.pn:1 .pxs;12\0>;.even
.3=.
<.tn:1 .txs;12\0>;.even
.1=.
.tx;.2
.tn
.tx;.3
1 .tn
last:
1 trans;1 .1
.1=.
</*\0>;.even
.2=.
4
comment:
.px;.1
co1:
ignore
.2
.pxs;'*
ignore
none
.pxs;'/
1 alt;co1
.1=.
0
.2=.
gpar;1
.tp;.byte 2,0;
1 .tp;.byte 1,0;
.3=.
gpar;1
1 generate
.4=.
gpar;1
.tp;.byte 2,0;nil
.tn
1 .tp;.byte 1,0;q1
.5=.
1 .tp;.byte 1,0;xbit
.7=.
<1 succ\0>;.even
.6=.
.tp;.byte 1,0;nil
.tn
1 .tx;.7
statement:
.l;csym
.l;.1
.st
.p
oldtab
dtt
oldtab
pat
proc
alt;..11
plst
tlst
.pxs;')
trans;1 .2
goto;..10
..11:trans;1 .3
noelem
..10:
stt1:
bundle
frag
alt;..15
trans;1 .4
salt;stt1
goto;..12
..15:.pxs;';
ifelem
alt;..14
trans;1 .5
goto;..13
..14:trans;1 .6
..13:
..12:
1 succ
.1=.
<proc(\0>;.even
proc:
smark
ignore
none
1 .px;.1
.1=.
1 octal
npa
.3=.
<params;\0>;.even
.2=.
.tx;.3
.tp;.byte 1,0;
1 .tn
plst:
list
pident
alt;null
remote
.1
1 trans;1 .2
pident:
ident
1 newtab
pat
npa
.1=.
0
.2=.
name
.l;i
.ia
1 .p
.3=.
1 octal
i
.5=.
<push;\0>;.even
.4=.
.tx;.5
.tp;.byte 1,0;
.tn
.tp;.byte 2,0;
1 .tn
tlst:
.pxs;';
alt;null
.l;i
.l;.1
.st
.p
list
.2
remote
.3
1 trans;1 .4
.1=.
gpar;1
1 .tp;.byte 1,0;nil
q1
.2=.
gpar;1
1 .tp;.byte 1,0;
frag:
prule
alt;..17
trans;1 .1
goto;..16
..17:labels
noelem
trans;1 .2
..16:
1 succ
.2=.
<salt;\0>;.even
.1=.
gpar;2
.tp;.byte 3,0;nil
nil
.tn
.tx;.2
.tp;.byte 2,0;
.tn
.tp;.byte 1,0;q2
q1
.tn
.tp;.byte 2,0;
1 .txs;':
.5=.
<alt;\0>;.even
.4=.
.tn
.tx;.5
1 .tp;.byte 1,0;
.6=.
<goto;\0>;.even
.3=.
gpar;2
.tp;.byte 4,0;.4
q1
.tn
.tx;.6
.tp;.byte 3,0;
.tn
.tp;.byte 1,0;
.txs;':
.tp;.byte 2,0;q2
q1
.tn
.tp;.byte 3,0;
1 .txs;':
prule:
.l;sndt
.l;ndt
.st
.p
disj
.pxs;'|
alt;..23
.l;ndt
.l;sndt
.st
.p
fref
ifeasy
alt;..21
prule
trans;1 .1
goto;..20
..21:prule
fref
trans;1 .3
..20:
noelem
goto;..22
..23:
..22:
1 succ
.1=.
gpar;2
.tp;.byte 2,0;q2
nil
.tn
1 .tp;.byte 1,0;nil
q1
disj:
pelem
pdot
disj
alt;..25
trans;1 .1
ifelem
alt;done
ishard
goto;..24
..25:
..24:
1 succ
.1=.
gpar;2
.tp;.byte 1,0;q1
1 .tq;2
.2=.
1
.3=.
gpar;2
1 generate
pelem:
pprim
alt;..31
trans;1 .1
iseasy
goto;..26
..31:.pxs;'(
push
.2
sndt
prule
alt;..30
.pxs;')
goto;..27
..30:.pxs;')
trans;1 .3
noelem
..27:
..26:
1 succ
.1=.
gpar;1
.tq;1
.tp;.byte 2,0;
.tn
1 .tp;.byte 1,0;
.2=.
gpar;1
.tq;1
1 .tp;.byte 1,0;
.4=.
<alt;\0>;.even
.3=.
1 .tx;.4
.5=.
<\\\0>;.even
.7=.
<salt;\0>;.even
.6=.
1 .tx;.7
.10=.
gpar;1
.tp;.byte 3,0;nil
.tn
.tq;1
.tp;.byte 2,0;
1 .tp;.byte 1,0;
pprim:
special
salt;..32
rname
.pxs;':
alt;..37
fail
goto;..33
..37:spdot
salt;..34
..34:
ignore
none
.pxs;'(
alt;..36
ignore
blanks
list
parg
.pxs;')
trans;1 .1
goto;..35
..36:trans;1 .2
..35:
..33:
..32:
.pxs;'/
alt;..41
trans;1 .3
goto;..40
..41:.px;.5
alt;..43
trans;1 .6
..40:
rname
trans;1 .10
goto;..42
..43:
..42:
1 succ
.2=.
0
pdot:
.pxs;'.
alt;done
ignore
none
ident
salt;alias
.l;dtt
.t
salt;..44
table
dtt
.l;ndt
.l;.2
.st
.p
..44:
.l;ndt
.ia
1 .p
.1=.
1 any
letter
spdot:
.pxs;'.
ignore
none
not
.1
alias:
1 newtab
dtt
ndt
parg:
rname
salt;..45
remote
specparg
..45:
1 succ
.2=.
<\\n\\0\0>;.even
.1=.
1 .tx;.2
.4=.
<1 succ\0>;.even
.3=.
1 .tx;.4
.5=.
3
.6=.
0
.7=.
1 .tp;.byte 1,0;nil
xbit
.11=.
<1 succ\0>;.even
.10=.
.tp;.byte 1,0;nil
nil
.tn
1 .tx;.11
specparg:
number
salt;..46
charcl
salt;..47
.pxs;'<
alt;..57
longlit
goto;..50
..57:.pxs;'*
alt;..56
trans;1 .1
goto;..51
..56:.pxs;'(
.pxs;')
alt;..55
trans;1 .3
goto;..52
..55:push
.5
dtt
ndt
sndt
.l;dtt
.l;.6
.st
.p
prule
.pxs;')
oldtab
dtt
ifelem
alt;..54
trans;1 .7
goto;..53
..54:trans;1 .10
..53:
..52:
..51:
..50:
..47:
..46:
1 succ
.1=.
1
iseasy:
.l;easy
.l;.1
.st
1 .p
.1=.
0
ishard:
.l;easy
.l;.1
.st
1 .p
.1=.
2
noelem:
.l;easy
.l;.1
.st
1 .p
.1=.
2
ifelem:
.l;easy
.l;.1
.ne
1 .t
.2=.
1
ifeasy:
.l;easy
.l;.2
.eq
1 .t
.2=.
<trans;1 \0>;.even
.1=.
gpar;1
.tq;1
.tx;.2
1 .tp;.byte 1,0;
.4=.
<.px\0>;.even
.3=.
gpar;1
.tq;1
.tx;.4
1 .tp;.byte 1,0;
.6=.
<.pn\0>;.even
.5=.
gpar;1
.tq;1
1 .tx;.6
.10=.
<.t\0>;.even
.7=.
1 .tx;.10
.12=.
<.p\0>;.even
.11=.
1 .tx;.12
.13=.
gpar;1
.tp;.byte 2,0;
.tn
.tq;1
1 .tp;.byte 1,0;
special:
.pxs;'=
alt;..70
rname
salt;..60
remote
trule
..60:
trans;1 .1
goto;..61
..70:.pxs;'<
alt;..67
literal
trans;1 .3
goto;..62
..67:.pxs;'*
alt;..66
trans;1 .5
goto;..63
..66:.pxs;'[
expr
.pxs;'?
alt;..65
trans;1 .7
goto;..64
..65:trans;1 .11
..64:
.pxs;']
trans;1 .13
..63:
..62:
..61:
1 succ
.2=.
<[-\0>;.even
.3=.
<\\<1]\0>;.even
.1=.
.tx;.2
.tp;.byte 1,0;
1 .tx;.3
rname:
name
alt;..72
tabval
pat
npa
alt;done
goto;..71
..72:.pxs;'$
number
..71:
1 trans;1 .1
.2=.
<gpar;\0>;.even
.1=.
.tx;.2
.tp;.byte 2,0;
.tn
1 .tp;.byte 1,0;
trule:
oldtab
ptt
tbody
salt;..73
.pxs;'(
number
salt;..74
tra
..74:
.pxs;')
tbody
trans;1 .1
..73:
1 succ
tra:
list
tident
1 octal
npt
tident:
ident
1 newtab
ptt
npt
.2=.
<1 generate\0>;.even
.1=.
1 .tx;.2
tbody:
.pxs;'{
.pxs;'}
alt;..76
trans;1 .1
goto;..75
..76:trb
..75:
1 succ
.1=.
xbit
1 .tp;.byte 1,0;
.2=.
.tp;.byte 2,0;
.tn
1 .tp;.byte 1,0;
trb:
telem
.pxs;'}
alt;..100
trans;1 .1
goto;..77
..100:trb
trans;1 .2
..77:
1 succ
.2=.
<.tx\0>;.even
.1=.
.tx;.2
1 .tp;.byte 1,0;
.4=.
<.tn\0>;.even
.3=.
1 .tx;.4
.6=.
<.tq;\0>;.even
.5=.
.tx;.6
1 .tp;.byte 1,0;
telem:
.pxs;'<
alt;..110
literal
trans;1 .1
goto;..101
..110:.pxs;'*
alt;..107
trans;1 .3
goto;..102
..107:.pxs;'$
alt;..106
number
trans;1 .5
goto;..103
..106:number
alt;..105
tdot
trans;1 tpt
goto;..104
..105:name
te1
salt;done
te2
salt;done
..104:
..103:
..102:
..101:
1 succ
te1:
tabval
dtt
ndt
tdot
1 trans;1 tpt
.2=.
<.tq;\0>;.even
.1=.
.tx;.2
1 .tp;.byte 1,0;
te2:
tabval
ptt
npt
1 trans;1 .1
.1=.
1 .txs;'0
.2=.
.tp;.byte 2,0;
.txs;';
1 .tp;.byte 1,0;
tdot:
.pxs;'.
alt;..112
number
goto;..111
..112:trans;1 .1
..111:
.pxs;'(
alt;..114
list
targ
.pxs;')
goto;..113
..114:null
..113:
1 trans;1 .2
targ:
name
salt;..115
remote
tbody
..115:
1 succ
.1=.
<.tp;.byte \0>;.even
tpt:
.tx;.1
.tp;.byte 2,0;
.txs;',
1 .tp;.byte 1,0;
.1=.
.txs;';
1 .tp;.byte 1,0;
literal:
shortlit
salt;..116
remote
longlit
trans;1 .1
..116:
1 succ
.1=.
<\>\0>;.even
.3=.
<s;'\0>;.even
.2=.
.tx;.3
1 .tp;.byte 1,0;
shortlit:
ignore
none
smark
any
litch
.px;.1
scopy
1 trans;1 .2
.1=.
<\>\0>;.even
.3=.
<\\\0>;.even
.4=.
<\>\0>;.even
.2=.
.tx;.3
1 .tx;.4
.5=.
<\>\0>;.even
.7=.
<\\0\0>;.even
.10=.
<\>;.even\0>;.even
.6=.
.txs;'<
.tp;.byte 2,0;
.tp;.byte 1,0;
.tx;.7
1 .tx;.10
longlit:
ignore
none
.px;.1
alt;..120
trans;1 .2
goto;..117
..120:null
..117:
litb
.px;.5
1 trans;1 .6
.1=.
<\\\0>;.even
.3=.
<\\\\\0>;.even
.2=.
.tp;.byte 2,0;
.tx;.3
1 .tp;.byte 1,0;
litb:
smark
string
litch
scopy
.px;.1
alt;done
litb
1 trans;1 .2
expr:
assignment
salt;..121
rv
..121:
1 succ
.1=.
.tp;.byte 3,0;
.tn
.tp;.byte 1,0;
.tn
1 .tp;.byte 2,0;
assignment:
lv
assign
expr
1 trans;1 .1
.1=.
.tp;.byte 3,0;
.tn
.tp;.byte 1,0;
.tn
1 .tp;.byte 2,0;
.2=.
.tp;.byte 2,0;
.tn
1 .tp;.byte 1,0;
rv:
prime
rv1:
bundle
infix
alt;..125
prime
trans;1 .1
salt;rv1
goto;..122
..125:rva
alt;..124
trans;1 .2
goto;..123
..124:
..123:
..122:
1 succ
.2=.
<.t;alt;\0>;.even
.3=.
<salt;\0>;.even
.1=.
.tx;.2
.tp;.byte 2,0;
.tn
.tp;.byte 4,0;
.tn
.tx;.3
.tp;.byte 1,0;
.tn
.tp;.byte 2,0;
.txs;':
.tp;.byte 3,0;
.tn
.tp;.byte 1,0;
1 .txs;':
rva:
.pxs;'?
rv
.pxs;':
rv
fref
fref
1 trans;1 .1
.1=.
.tp;.byte 2,0;
.tn
1 .tp;.byte 1,0;
.2=.
.tp;.byte 1,0;
.tn
1 .tp;.byte 2,0;
.3=.
.tp;.byte 1,0;
.tn
1 .tp;.byte 2,0;
.5=.
<.l;\0>;.even
.4=.
.tx;.5
1 .tp;.byte 1,0;
prime:
lv
alt;..135
suffix
alt;done
trans;1 .1
goto;..126
..135:prefix
alt;..134
lv
trans;1 .2
goto;..127
..134:.pxs;'(
alt;..133
expr
.pxs;')
goto;..130
..133:unary
alt;..132
prime
trans;1 .3
goto;..131
..132:remote
number
trans;1 .4
..131:
..130:
..127:
..126:
1 succ
.2=.
<.l;\0>;.even
.1=.
.tx;.2
1 .tp;.byte 1,0;
.4=.
<.rv\0>;.even
.3=.
.tp;.byte 1,0;
.tn
1 .tx;.4
.6=.
<.f\0>;.even
.5=.
.tp;.byte 2,0;
.tn
.tp;.byte 1,0;
.tn
1 .tx;.6
lv:
rname
alt;..141
trans;1 .1
goto;..136
..141:.pxs;'(
alt;..140
lv
.pxs;')
goto;..137
..140:.pxs;'*
prime
trans;1 .3
..137:
..136:
lv1:
.pxs;'[
alt;done
bundle
expr
.pxs;']
trans;1 .5
1 salt;lv1
.2=.
<.u\0>;.even
.1=.
.tp;.byte 1,0;
.tn
1 .tx;.2
.4=.
<.st\0>;.even
.3=.
1 .tx;.4
assign:
.pxs;'=
ignore
none
infix
alt;..143
trans;1 .1
goto;..142
..143:trans;1 .3
..142:
1 succ
.2=.
1 .pxs;'+
.1=.
.pxs;'+
1 not
.2
.4=.
<.a\0>;.even
.3=.
1 .tx;.4
.6=.
<.s\0>;.even
.5=.
1 .tx;.6
.10=.
<.m\0>;.even
.7=.
1 .tx;.10
.12=.
<.q\0>;.even
.11=.
1 .tx;.12
.14=.
<.r\0>;.even
.13=.
1 .tx;.14
.16=.
<.o\0>;.even
.15=.
1 .tx;.16
.20=.
<.x\0>;.even
.17=.
1 .tx;.20
.22=.
<.n\0>;.even
.21=.
1 .tx;.22
.23=.
<==\0>;.even
.25=.
<.eq\0>;.even
.24=.
1 .tx;.25
.26=.
<!=\0>;.even
.30=.
<.ne\0>;.even
.27=.
1 .tx;.30
.31=.
<<=\0>;.even
.33=.
<.le\0>;.even
.32=.
1 .tx;.33
.34=.
<\>=\0>;.even
.36=.
<.ge\0>;.even
.35=.
1 .tx;.36
.37=.
<<<\0>;.even
.41=.
<.sl\0>;.even
.40=.
1 .tx;.41
.43=.
<.lt\0>;.even
.42=.
1 .tx;.43
.44=.
<\>\0>;.even
.45=.
<\>\0>;.even
.47=.
<.sr\0>;.even
.46=.
1 .tx;.47
.51=.
<.gt\0>;.even
.50=.
1 .tx;.51
infix:
smark
ignore
none
.pxs;'+
alt;..201
not
.1
trans;1 .3
goto;..144
..201:.pxs;'-
alt;..200
trans;1 .5
goto;..145
..200:.pxs;'*
alt;..177
trans;1 .7
goto;..146
..177:.pxs;'/
alt;..176
trans;1 .11
goto;..147
..176:.pxs;'%
alt;..175
trans;1 .13
goto;..150
..175:.pxs;'|
alt;..174
trans;1 .15
goto;..151
..174:.pxs;'^
alt;..173
trans;1 .17
goto;..152
..173:.pxs;'&
alt;..172
trans;1 .21
goto;..153
..172:.px;.23
alt;..171
trans;1 .24
goto;..154
..171:.px;.26
alt;..170
trans;1 .27
goto;..155
..170:.px;.31
alt;..167
trans;1 .32
goto;..156
..167:.px;.34
alt;..166
trans;1 .35
goto;..157
..166:.px;.37
alt;..165
trans;1 .40
goto;..160
..165:.pxs;'<
alt;..164
trans;1 .42
goto;..161
..164:.px;.44
.px;.45
alt;..163
trans;1 .46
goto;..162
..163:trans;1 .50
..162:
..161:
..160:
..157:
..156:
..155:
..154:
..153:
..152:
..151:
..150:
..147:
..146:
..145:
..144:
1 succ
.2=.
<.lv\0>;.even
.1=.
1 .tx;.2
.3=.
<++\0>;.even
.5=.
<.ib\0>;.even
.4=.
1 .tx;.5
.6=.
<--\0>;.even
.10=.
<.db\0>;.even
.7=.
1 .tx;.10
prefix:
smark
ignore
none
.pxs;'&
alt;..205
trans;1 .1
goto;..202
..205:.px;.3
alt;..204
trans;1 .4
goto;..203
..204:.px;.6
trans;1 .7
..203:
..202:
1 succ
.1=.
<++\0>;.even
.3=.
<.ia\0>;.even
.2=.
1 .tx;.3
.4=.
<--\0>;.even
.6=.
<.da\0>;.even
.5=.
1 .tx;.6
suffix:
smark
ignore
none
.px;.1
alt;..207
trans;1 .2
goto;..206
..207:.px;.4
trans;1 .5
..206:
1 succ
.2=.
<.nt\0>;.even
.1=.
1 .tx;.2
.4=.
<.ng\0>;.even
.3=.
1 .tx;.4
.6=.
<.cm\0>;.even
.5=.
1 .tx;.6
unary:
.pxs;'!
alt;..213
trans;1 .1
goto;..210
..213:.pxs;'-
alt;..212
trans;1 .3
goto;..211
..212:.pxs;'~
trans;1 .5
..211:
..210:
1 succ
charcl:
.pxs;'!
alt;..215
ccla
cclb
goto;..214
..215:ccla
..214:
1 octal
classmask
.1=.
<<<\0>;.even
.2=.
1
.4=.
<<<\0>;.even
ccla:
.px;.1
.l;classmask
.l;.2
.l;nclass
.ia
.sl
.st
.p
.l;classmask
.t
alt;cherr
ccl1:
cclc
.px;.4
1 salt;ccl1
.1=.
<\>\0>;.even
cclc:
ignore
none
ccl3:
.px;.1
salt;ccl4
ccle
1 salt;ccl3
.1=.
<\>\0>;.even
.3=.
<\>\0>;.even
.2=.
1 .px;.3
ccl4:
.px;.1
salt;..216
cclx
fail
..216:
not
.2
salt;..217
ccle
..217:
1 succ
.1=.
2
ccle:
char
n
.l;.1
.l;n
.m
.l;classes
.lv
.a
.rv
.l;classmask
.o
.u
1 .p
cclb:
zeron
ccl5:
.l;classes
.lv
.l;n
.a
.rv
.l;classmask
.x
.u
.p
testn
1 salt;ccl5
cclx:
.l;nclass
.da
.p
zeron
ccl6:
.l;classes
.lv
.l;n
.a
.rv
.l;classmask
.cm
.n
.u
.p
testn
1 salt;ccl6
.3=.
<too many char classes\0>;.even
.2=.
1 .tx;.3
.1=.
1 trans;1 .2
cherr:
1 diag
.1
.1=.
0
zeron:
.l;n
.l;.1
.st
1 .p
.1=.
2
.2=.
400
testn:
.l;n
.l;.1
.a
.u
.l;.2
.lt
1 .t
.1=.
0
.4=.
<.globl classtab\0>;.even
.5=.
<classtab:\0>;.even
.3=.
.tn
.tx;.4
.tn
.tx;.5
1 .tn
.2=.
1 trans;1 .3
.7=.
.tp;.byte 1,0;
1 .tn
.6=.
octal
w
1 trans;1 .7
putcharcl:
zeron
.l;classes
.l;.1
.st
.p
parse
.2
ptc1:
.l;w
.l;classes
.lv
.l;n
.a
.rv
.st
.p
parse
.6
bundle
testn
1 salt;ptc1
classmask:
0
nclass:
0
classes:
cl1:
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
cl2:
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
cl3:
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
cl4:
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
cl5:
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
cl6:
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
cl7:
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
cl8:
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
done:
1 succ
.1=.
.txs;'.
1 .tp;.byte 1,0;
create:
.l;csym
.ia
.p
getcsym:
octal
csym
1 trans;1 .1
.2=.
<..\0>;.even
.1=.
.tx;.2
1 .tp;.byte 1,0;
fref:
.l;fsym
.ia
.p
getfref:
octal
fsym
1 trans;1 .1
.1=.
1
not:
params
.1
[-1\<1]
alt;done
1 fail
.1=.
1
.2=.
.tp;.byte 2,0;
.tn
1 .tp;.byte 1,0;
list:
params
.1
[-1\<1]
list1:
bundle
.pxs;',
alt;done
[-1\<1]
trans;1 .2
1 salt;list1
.1=.
1
remote:
params
.1
create
1 parse
rem1
[-1\<1]
.1=.
1
.3=.
<=.\0>;.even
.2=.
.tp;.byte 2,0;
.tx;.3
.tn
.tp;.byte 1,0;
1 .tn
rem1:
params
.1
getcsym
[-1\<1]
1 trans;1 .2
number:
smark
ignore
none
any
digit
string
digit
1 scopy
name:
ident
1 scopy
ident:
smark
ignore
none
any
letter
1 string
alpha
.1=.
1
.3=.
0
oldtab:
params
.1
.l;[-1\<1]
.t
alt;done
discard
[-1\<1]
.l;[-1\<1]
.l;.3
.st
1 .p
.1=.
2
.3=.
0
newtab:
params
.1
.l;[-2\<1]
.t
salt;..220
table
[-2\<1]
.l;[-1\<1]
.l;.3
.st
.p
..220:
enter
[-2\<1]
i
.l;[-2\<1]
.l;i
.f
.l;[-1\<1]
.ia
.st
1 .p
.1=.
2
tabval:
params
.1
.l;[-2\<1]
.t
find
[-2\<1]
i
.l;i
.l;[-1\<1]
.l;[-2\<1]
.l;i
.f
.s
.st
.p
1 octal
i
null:
1 trans;1 nil
.1=.
<1 \0>;.even
xbit:
1 .tx;.1
q1:
1 .tq;1
q2:
1 .tq;2
nil:
1 generate
blanks:
10
digit:
20
letter:
40
alpha:
100
litch:
200
none:
400
csym:
0
fsym:
0
easy:
0
w:
0
n:
0
dtt:
0
ndt:
0
sndt:
0
pat:
0
npa:
0
ptt:
0
npt:
0
i:
0
.globl classtab
classtab:
0
207
207
207
207
207
207
207
207
217
217
207
207
207
207
207
207
207
207
207
207
207
207
207
207
207
207
207
207
207
207
207
217
207
207
207
207
207
207
207
207
207
203
207
207
207
207
207
327
327
327
327
327
327
327
327
327
327
207
205
207
207
7
207
207
347
347
347
347
347
347
347
347
347
347
347
347
347
347
347
347
347
347
347
347
347
347
347
347
347
347
207
7
207
207
207
207
347
347
347
347
347
347
347
347
347
347
347
347
347
347
347
347
347
347
347
347
347
347
347
347
347
347
207
207
207
207
207
.pn:1 .pxs;12
.tn:1 .txs;12