diff options
Diffstat (limited to 'ipl/procs/emptygen.icn')
-rw-r--r-- | ipl/procs/emptygen.icn | 220 |
1 files changed, 220 insertions, 0 deletions
diff --git a/ipl/procs/emptygen.icn b/ipl/procs/emptygen.icn new file mode 100644 index 0000000..3ca922a --- /dev/null +++ b/ipl/procs/emptygen.icn @@ -0,0 +1,220 @@ +############################################################################ +# +# File: emptygen.icn +# +# Subject: Procedures for meta-translation code generation +# +# Author: Ralph E. Griswold +# +# Date: December 5, 1995 +# +############################################################################ +# +# This file is in the public domain. +# +############################################################################ +# +# This program is designed to be linked with the output of the meta- +# translator. As given here, they produce an identity translation. +# Modifications can be made to effect different translations. +# +# The procedures here are just wrappers. This file is a skeleton that +# can be used as a basis for code-generation procedures. +# +############################################################################ +# +# Bug: The invocable declaration is not handled properly. "invocable all" +# will get by, but some other forms produce syntax errors. The +# problem is in the meta-translator itself, not in this program. +# +############################################################################ +# +# Links: strings +# +############################################################################ + +link strings + +procedure main() + + Mp() # call meta-procedure + +end + +procedure Alt(e1, e2) # e1 | e2 +end + +procedure Apply(e1, e2) # e1 ! e2 +end + +procedure Arg(e) # procedure argument (parameter) +end + +procedure Asgnop(op, e1, e2) # e1 op e2 +end + +procedure Augscan(e1, e2) # e1 ?:= e2 +end + +procedure Bamper(e1, e2) # e1 & e2 +end + +procedure Binop(op, e1, e2) # e1 op e2 +end + +procedure Body(es[]) # procedure body +end + +procedure Break(e) # break e +end + +procedure Case(e, clist) # case e of { caselist } +end + +procedure Cclause(e1, e2) # e1 : e2 +end + +procedure Clist(cclause1, cclause2) # cclause1 ; cclause2 +end + +procedure Clit(c) # 'c' +end + +procedure Compound(es[]) # { e1; e2; ... } +end + +procedure Create(e) # create e +end + +procedure Default(e) # default: e +end + +procedure End() # end +end + +procedure Every(e) # every e +end + +procedure EveryDo(e1, e2) # every e1 do e2 +end + +procedure Fail() # fail +end + +procedure Field(e, f) # e . f +end + +procedure Global(vs[]) # global v1, v2, ... +end + +procedure If(e1, e2) # if e1 then e2 +end + +procedure IfElse(e1, e2, e3) # if e1 then e2 else e3 +end + +procedure Ilit(i) # i +end + +procedure Initial(e) # initial e +end + +procedure Invocable(ss[]) # invocable s1, s2, ... (problem) +end + +procedure Invoke(e, es[]) # e(e1, e2, ...) +end + +procedure Key(s) # &s +end + +procedure Limit(e1, e2) # e1 \ e2 +end + +procedure Link(vs[]) # link "v1, v2, ..." +end + +procedure List(es[]) # [e1, e2, ... ] +end + +procedure Local(vs[]) # local v1, v2, ... +end + +procedure Next() # next +end + +procedure Not(e) # not e +end + +procedure Null() # &null +end + +procedure Paren(es[]) # (e1, e2, ... ) +end + +procedure Pdco(e, es[]) # e{e1, e2, ... } +end + +procedure Proc(n, vs[]) # procedure n(v1, v2, ...) +end + +procedure Record(n, fs[]) # record n(f1, f2, ...) +end + +procedure Repeat(e) # repeat e +end + +procedure Return(e) # return e +end + +procedure Rlit(r) # r +end + +procedure Scan(e1, e2) # e1 ? e2 +end + +procedure Section(op, e1, e2, e3) # e1[e2 op e3] +end + +procedure Slit(s) # "s" +end + +procedure Static(vs[]) # static v1, v2, .. +end + +procedure Subscript(e1, e2) # e1[e2] +end + +procedure Suspend(e) # suspend e +end + +procedure SuspendDo(e1, e2) # suspend e1 do e2 +end + +procedure To(e1, e2) # e1 to e2 +end + +procedure ToBy(e1, e2, e3) # e1 to e2 by e3 +end + +procedure Repalt(e) # |e +end + +procedure Unop(op, e) # op e +end + +procedure Until(e) # until e +end + +procedure UntilDo(e1, e2) # until e1 do e2 +end + +procedure Var(v) # v +end + +procedure While(e) # while e +end + +procedure WhileDo(e1, e2) # while e1 do e2 +end + |