home *** CD-ROM | disk | FTP | other *** search
-
- [EXPRN.REC]
- [CNVRT compiler for "C" Expressions]
- [Harold V. McIntosh, 10 June 1983]
-
- {
- {
- [find/make FCB] (Jj'TTY:'EQZD;(':'UQD':'ED\64-%;0%;)
- ('.'U<(8a;@b;)Q|D>;Z'.DAT'IJj:)
- '.'FJDZ(3a;@b;)Q|JZDI
- 32(dpGm$r0=npGpGd0&$Sm@znpGQ&$rrS0;
- r12wQmwnEn;n:)D;) f
- [blank fill by count] (Zz(d' 'I:;)JZ;) b
- [zero fill] (cmpw0%(f:;)w;) 0
- [zero FCB & buffer] ($m33@0130@0nn&0||pLnS;) z
- [set default input file] (0,30$S'5C'H12wA' 'Ew4@0n0|0|pL31$S
- 'TTY:'31$rrS; B9aQD(3a' 'E
- 'DAT';Q;)|mw31@zn31$rrS31@r;) i
- [open for read] (@hr15K(255='NO FILE'I;L;)L;) r
- [open for write] (@hpGpG4+1&SrpG19k22k^^r128&S;) w
- [set DMA address] ($rpG^^r^^26k;) h
- [open] (m@f0=n@@;nLL;) O
- [read] (''(AL@f(0=pG@r;'TTY:'(='T');))
- ('T'='';L31pG$rr12w'TTY:'Ew;w)
- L@&'> 'TL(@#I;:);
- $r(pG^^rpGmr(0=(npGpGm128&S^^26kpGr
- 20K0=L;LL1npGpGm129+26%&SS;)npGmr;;)
- pG130&-n+&dm(u13%=;10%(=)pGI(26%=;
- L);ndm:)L^^rn&S;LpG^^r0&S:);) R
- [write] (Jj'='U<(A@f'TTY:'(=)(0=pG@w;;))>'='ED
- ZqtD; >'='EDZ<@g;) W
- [write to disk] ($r(pG^^rpGpGmrpGm- 130+n&maQD>Z<nSn^^
- 26kpGr21kpG^^r128&S:JZQD>nSnSL;);) g
- [close all files] (31pGm($r0=;pG4+r(0=L;LJj26%I<npGm@gpG
- ^^rpGr127(N^^26kpGr21k;L;)r16k;)ndpGm:)
- nL;;) c
- [PVR] (pG@'= '|TL$r(0='undef';yG;)TL;) _
- [cr, lf] (2573TL;)&
- [insert cr, lf] (2573I;)|
- [read console] (R13%='';T08%(=)(@#|;2080[sp,bs]TLL@#;);)#
- [type comment] (@TD;)C
- [display at logon] ('cnvrt/icuap/1983'TL@&;)D
- [write workspace] (@&JZqt;)T
- (@@;) }%
- [integer arithmetic] {(+;)+ (-;)- (*;)* (/&L;)/
- (pGm/L1=nL1;0=n;n&:)|
- ((pGmJj(U);QD(O)I;npGmEDZQD(O)IjnpGmI;
- n@@#I)nLJZ;;) } #
- [save & init variables] (pGpGm$rm0&$S;) (
- [reinitialize variable] (pG$r0=L;LnL0&$S;) :
- [undefine variable] ($r0=;LnL;) )
- [compare/define variable] (pG$r0=ZQzml&$S;&LyGEz;) ]
- [body of variable search] (pG$r(0=)yG(E;&L)z&L@=L;pG$r(0=;LL)
- Z<((&pGm&n(F;''mZz<)jJQmpGl&$S
- zZ<@=>;J>);nLA:0&$SL>)>LL;) >
- [body of variable search] (pG$r(0=)yGEz@=L;pG$r(0=;LL)
- Z<((jJQmpGl&$S
- zZ<@=>;J>);nLA:0&$S>)>L;) <
- [insert variable] ($ryGI;) [
-
- [compile expression]
- {
- ( [or] Z<('<<'Ez; J'>>'Ez; J'->'Ez; J [and] Z<(1(a;L)z jJ><[not] (Z< [or] Z<('<'Ez; J'>'Ez;>)> [or] J>)J>[not] Zz(A);>)> [and] ;>)> [or] ;) 0
- ( [or] Z<('<='Ez; J'>='Ez; J'<'Ez; J'>'Ez;>)> [or] @W;) 1
-
- (z<0@['@@'I1@[@zZ>;) Z
- (0@( 1@( 2@( {(0@: 1@: 2@: ;); (
-
- [print WS] @;(J2573TL'x 'TLZqtj(A)JZD;);
- [assignment] @;(J [and] Z<(@L jJ><0@](A);>)> [and] [and] Z<(@p jJ><1@](A);>)> [and] [and] Z<(@D jJ><2@](A);>)> [and] JZDz<2@[@xZ>z<0@[@xZ>'/assignment 'I1@[;);
- [binary ||] @;(J {[vbl] ( [and] Z<('||'Ez@H(A) jJ><1@](A);>)> [and] ;) = (0@<;)}[vbl] JZDz<@ZZ>;);
- [binary &&] @;(J {[vbl] ( [and] Z<('&&'Ez@J(A) jJ><1@](A);>)> [and] ;) = (0@<;)}[vbl] JZDz<@ZZ>;);
- [binary |] @;(J {[vbl] ( [and] Z<('|'Ez@Q(A) jJ><1@](A);>)> [and] ;) = (0@<;)}[vbl] JZDz<@ZZ>;);
- [binary ^] @;(J {[vbl] ( [and] Z<('^'Ez@S(A) jJ><1@](A);>)> [and] ;) = (0@<;)}[vbl] JZDz<@ZZ>;);
- [binary &] @;(J {[vbl] ( [and] Z<('&'Ez@U(A) jJ><1@](A);>)> [and] ;) = (0@<;)}[vbl] JZDz<@ZZ>;);
- [binary ==] @;(J {[vbl] ( [and] Z<( [or] Z<('=='Ez; J'!='Ez;>)> [or] @V(A) jJ><1@](A);>)> [and] ;) = (0@<;)}[vbl] JZDz<@ZZ>;);
- [binary .lt.] @;(J [and] Z<(((Z<@0 [and] Z<(@1(A) jJ><1@](A);>)> [and] >;J>);A:) jJ>< {[vbl] ( {[vbl] ((A);) = (1@<;)}[vbl] ;) = (0@<;)}[vbl] (A);>)> [and] JZDz<@ZZ>;);
- [binary rot] @;(J {[vbl] ( [and] Z<( [or] Z<('<<'Ez; J'>>'Ez;>)> [or] @X(A) jJ><1@](A);>)> [and] ;) = (0@<;)}[vbl] JZDz<@ZZ>;);
- [binary + -] @;(J {[vbl] ( [and] Z<( [or] Z<('+'Ez; J'-'Ez;>)> [or] @Y(A) jJ><1@](A);>)> [and] ;) = (0@<;)}[vbl] JZDz<@ZZ>;);
- [binary * / %]@;(J {[vbl] ( [and] Z<( [or] Z<('*'Ez; J'/'Ez; J'%'Ez;>)> [or] @A(A) jJ><1@](A);>)> [and] ;) = (0@<;)}[vbl] JZDz<@ZZ>;);
- [other] @;(J0@]JZDz<0@[@yZ>;);
- ;)} 0@) 1@) 2@) nn$S nn$S nn$S;)} x
-
- [compile unary expressions]
- {(0@( 1@( {(0@: 1@: ;); (
- @;(J2573TL'y 'TLZqtj(A)JZD;);
- [autoinc] @;(J'++'Ez [and] Z<(@L jJ><0@](A);>)> [and] JZDz<0@[@xZ>'/preinc'I;);
- [autoinc] @;(J [and] Z<(@L jJ><0@](A);>)> [and] '++'EzJZDz<0@[@xZ>'/postinc'I;);
- [autodec] @;(J'--'Ez [and] Z<(@L jJ><0@](A);>)> [and] JZDz<0@[@xZ>'/predec'I;);
- [autodec] @;(J [and] Z<(@L jJ><0@](A);>)> [and] '--'EzJZDz<0@[@xZ>'/postdec'I;);
- [unary] @;(J [and] Z<(@r jJ><0@](A);>)> [and] 1@]JZDz<1@[@yZ>'/unary 'I0@[;);
- [index] @;(J {[vbl] ( [and] Z<('['Ez@E']'Ez(A) jJ><'['Ez {[vbl] (']'Ez(A);) = (']'1@>;)}[vbl] (A);>)> [and] ;) = (0@<;)}[vbl] JZDz<0@[@xZ>z<1@[@xZ>'/index'I;);
- [subexpr] @;(J [and] Z<('('Ez@E')'Ez jJ><'('Ez {[vbl] (')'Ez(A);) = (0@<;)}[vbl] (A);>)> [and] JZDz<0@[@xZ>;);
- [function] @;(J {[vbl] ( [and] Z<('('Ez@E')'Ez(A) jJ><'('Ez {[vbl] (')'Ez(A);) = (1@<;)}[vbl] (A);>)> [and] ;) = (0@<;)}[vbl] JZDz<1@[@xZ>z<0@[@xZ>'/function'I;);
- [structure] @;(J {[vbl] ( [and] Z<('->'Ez@I(A) jJ><'->'Ez1@](A);>)> [and] ;) = (0@<;)}[vbl] JZDz<0@[@xZ>'/struct 'I1@[;);
- [dot] @;(J {[vbl] ( [and] Z<('.'Ez@I(A) jJ><'.'Ez1@](A);>)> [and] ;) = (0@<;)}[vbl] JZDz<0@[@xZ>'/dot 'I1@[;);
- [primary] @;(J [and] Z<(@P(A) jJ><0@](A);>)> [and] JZD'/fetch 'I0@[;);
- [unknown] @;(J0@]JZD'/uy 'I0@[;);
- ;)} 0@) 1@) nn$S nn$S;)} y
-
- [compile binary or coincident unary]
- {(0@( 1@( 2@( {(0@: 1@: 2@: ;); (
- @;(J2573TL'z 'TLZqtj(A)JZD;);
- [pure unary] @;(J'@@'Ez1@]JZDz<1@[@yZ>;);
- @;(J [and] Z<(@L jJ><0@](A);>)> [and] '@@++'Ez1@]JZDz<'('I0@['++)'I1@[@xZ>;);
- @;(J [and] Z<(@L jJ><0@](A);>)> [and] '@@--'Ez1@]JZDz<'('I0@['--)'I1@[@xZ>;);
- @;(J {[vbl] ('+@@+'Ez1@];) = ('+@@+'0@>;)}[vbl] JZD0@['@@++'I1@[;):
- [l rot] @;(J {[vbl] ('<@@<'Ez1@];) = (0@<;)}[vbl] JZD0@['@@<<'I1@[;):
- [r rot] @;(J {[vbl] ('>@@>'Ez1@];) = (0@<;)}[vbl] JZD0@['@@>>'I1@[;):
- [offside] @;(J {[vbl] ( [and] Z<(@r jJ><1@](A);>)> [and] '@@'Ez2@];) = (0@<;)}[vbl] JZD0@['@@'I1@[2@[;):
- [coincident] @;(J {[vbl] ('@@'Ez [and] Z<(@q jJ><1@](A);>)> [and] 2@];) = ('@@'0@>;)}[vbl] JZDz<0@[@xZ>z<2@[@xZ>'/binary 'I1@[;);
- [unknown] @;(J0@]JZD'/uz 'I0@[;);
- ;)} 0@) 1@) 2@) nn$S nn$S nn$S;)} z
-
- [main program including syntactic elements]
- {
- [alfanum] ( [and] Z<(1(a;L)z jJ><' ''~'Mz(A);>)> [and] ;) a
- [letter] ( [and] Z<(1(a;L)z jJ>< [or] Z<('A''Z'Mz; J'a''z'Mz; J'_'Ez;>)> [or] (A);>)> [and] ;) b
- [odigit] ( [and] Z<(1(a;L)z jJ><'0''7'Mz(A);>)> [and] ;) c
- [ddigit] ( [and] Z<(1(a;L)z jJ><'0''9'Mz(A);>)> [and] ;) d
- [hdigit] ( [and] Z<(1(a;L)z jJ>< [or] Z<('0''9'Mz; J'A''F'Mz; J'a''f'Mz;>)> [or] (A);>)> [and] ;) e
- [dstring] (([ITR] Z<@d>:J>;)[ITR] ;) h
- [cconst] ( [or] Z<('\'Ez@a; J39%Ez@a39%Ez;>)> [or] ;) j
- [iconst] ( [or] Z<('0'Ez [or] Z<('X'Ez; J'x'Ez;>)> [or] ([ITR] Z<@e>:J>;)[ITR] ; J'0'Ez([ITR] Z<@c>:J>;)[ITR] ; J@d@h;>)> [or] ;) k
- [fconst] (@h'.'Ez@h [or] Z<( {[OR] ( {[OR] (@h;) \ (Z<('+'Ez@\; J'-'Ez@\; J@\;)>;>)} [OR] ;) \ (Z<('E'Ez@\; J'e'Ez@\;)>;>)} [OR] ; J;>)> [or] ;) l
- [sconst] (34%Ez([ITR] Z<@a>:J>;)[ITR] 34%Ez;) m
- [constant] ( [or] Z<(@l; J@k; J@j; J@m;>)> [or] ;) o
- [identifier](@b([ITR] Z< [or] Z<(@b; J@d;>)> [or] >:J>;)[ITR] ;) I
- [aoperator] ( [or] Z<('='Ez; J'+='Ez; J'-='Ez; J'*='Ez; J'/='Ez; J'%='Ez; J'>>='Ez; J'<<='Ez; J'&='Ez; J'^='Ez; J'|='Ez;>)> [or] ;) p
- [boperator] ( [or] Z<('*'Ez; J'/'Ez; J'%'Ez; J'+'Ez; J'-'Ez; J'>>'Ez; J'<<'Ez; J'<='Ez; J'>='Ez; J'<'Ez; J'>'Ez; J'=='Ez; J'!='Ez; J'&&'Ez; J'^'Ez; J'||'Ez; J'&'Ez; J'|'Ez;>)> [or] ;) q
- [uoperator] ( [or] Z<('*'Ez; J'&'Ez; J'-'Ez; J'!'Ez; J'~'Ez; J'sizeof'Ez; J'(typename)'Ez;>)> [or] ;) r
- [lvalue] ( [or] Z<( [and] Z<(@P jJ><(('['(Fz;Zz<)Z<@E']'Ez(A)>;J>);A:)(A);>)> [and] ; J [and] Z<(@P jJ><(('-'(Fz;Zz<)Z<'>'Ez@I(A)>;J>);A:)(A);>)> [and] ; J [and] Z<(@P jJ><(('.'(Fz;Zz<)Z<@I(A)>;J>);A:)(A);>)> [and] ; J@I; J'*'Ez@A; J'('Ez@L')'Ez;>)> [or] ;) L
- [pexten] ( [or] Z<('['Ez@E']'Ez; J'('Ez([ITR] Z<@E>:J>;)[ITR] ')'Ez; J'->'Ez@I; J'.'Ez@I;>)> [or] ;) N
- [primary] ( [or] Z<(@I; J@o; J'('Ez@E')'Ez;>)> [or] ([ITR] Z<@N>:J>;)[ITR] ;) P
- [eroot] ( [or] Z<('++'Ez@L; J'--'Ez@L; J@L'++'Ez; J@L'--'Ez; J@r@A; J@P;>)> [or] ;) A
- [bnryexpr] (@A([ITR] Z<@q@A>:J>;)[ITR] ;) B
- [cndlexpr] (@B [or] Z<('?'Ez@K':'Ez@K; J;>)> [or] ;) K
- [asgnexpr] ( [or] Z<(@L@p@D; J@K;>)> [or] ;) D
- [expression](@D([ITR] Z<','Ez@D>:J>;)[ITR] ;) E
- [||expr] (@H([ITR] Z<'||'Ez@H>:J>;)[ITR] ;) G
- [&&expr] (@J([ITR] Z<'&&'Ez@J>:J>;)[ITR] ;) H
- [|expr] (@Q([ITR] Z<'|'Ez@Q>:J>;)[ITR] ;) J
- [^expr] (@S([ITR] Z<'^'Ez@S>:J>;)[ITR] ;) Q
- [&expr] (@U([ITR] Z<'&'Ez@U>:J>;)[ITR] ;) S
- [== !=] (@V([ITR] Z< [or] Z<('=='Ez; J'!='Ez;>)> [or] @V>:J>;)[ITR] ;) U
- [comparison](@W([ITR] Z< [or] Z<('<='Ez; J'>='Ez; J'<'Ez; J'>'Ez;>)> [or] @W>:J>;)[ITR] ;) V
- [rotate] (@X([ITR] Z< [or] Z<('<<'Ez; J'>>'Ez;>)> [or] @X>:J>;)[ITR] ;) W
- [+ -] (@Y([ITR] Z< [or] Z<('+'Ez; J'-'Ez;>)> [or] @Y>:J>;)[ITR] ;) X
- [* / %] (@A([ITR] Z< [or] Z<('*'Ez; J'/'Ez; J'%'Ez;>)> [or] @A>:J>;)[ITR] ;) Y
- (0@( {(0@: ;); (
- @;(J';'EzJZD'done'I;);
- @;(J0@]JZDz<z<0@[@xZ>'C'@%Z>z<'R'@%Z>;):
- ;)} 0@) nn$S;)} ~
- ('i'@%'D'@%'R'@%@~JZqt'c'@%;) }
-
- [end]
-