summaryrefslogtreecommitdiff
path: root/ipl/procs/emptygen.icn
diff options
context:
space:
mode:
Diffstat (limited to 'ipl/procs/emptygen.icn')
-rw-r--r--ipl/procs/emptygen.icn220
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
+