|
|
1.1 root 1: /* a5 -- pdp-11 assembler pass 1 */
2: #include "as1.h"
3:
4: OP savop;
5: OP lastop;
6: int noputw;
7:
8: OP
9: readop()
10: {
11: if (savop.xp) {lastop=savop; savop.xp=0; return(lastop);}
12: noputw=0;
13: lastop=_readop(rch());
14: if (noputw==0) putw(lastop.v);
15: return(lastop);
16: }
17:
18: extern int fbflag;
19: int rschflg;
20:
21: OP
22: _readop(t)
23: register int t;
24: {
25: OP s;
26:
27: for (;;) {
28: switch (chartab[t]) {
29: case C_IOR:
30: s.v=037; return(s);
31: case C_ESC:
32: switch (t=rch()) {
33: case '/': s.v='/'; return(s);
34: case '<': s.v=035; return(s);
35: case '>': s.v=036; return(s);
36: case '%': s.v=037; return(s);
37: }
38: s.v=t; return(s);
39: case C_WHITE:
40: break;
41: case C_TERM:
42: s.v=t; return(s);
43: case C_SQUO:
44: t=rsch(); goto ccon;
45: case C_DQUO:
46: t=rsch(); t |= rsch()<<8;
47: ccon:
48: numval=t; putw(T_ABS); putw(numval); s.v=T_ABS; noputw=1; return(s);
49: case C_GARB:
50: error('g'); break;
51: case C_SKIP:
52: for (;;) {
53: t=rch();
54: if (t=='\004' || t=='\n') {s.v=t; return(s);}
55: }
56: case C_EOL:
57: s.v=t; return(s);
58: case C_STR:
59: putw('<'); numval=0;
60: for (;;) {
61: t=rsch();
62: if (rschflg) break;
63: putw(t|0400);
64: numval++;
65: }
66: putw(-1);
67: s.v='<'; noputw=1; return(s);
68: default:
69: ch=t;
70: if ('0'<=t && t<='9') {
71: t=number();
72: if (fbflag==0) goto ccon;
73: s.v=t; return(s);
74: }
75: s.xp=rname(t); return(s);
76: }
77: t=rch();
78: }
79: }
80:
81: rsch()
82: {
83: register int t=rch();
84:
85: if (t=='\004' || t=='\n') {error('<'); aexit();}
86: rschflg=0;
87: if (t=='\\') {
88: switch (t=rch()) {
89: case 'n': return(012);
90: case 's': return(040);
91: case 't': return(011);
92: case 'e': return(004);
93: case '0': return(000);
94: case 'r': return(015);
95: case 'a': return(006);
96: case 'p': return(033);
97: }
98: return(t);
99: }
100: if (t=='>') rschflg=1;
101: return(t);
102: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.