summaryrefslogtreecommitdiff
path: root/ipl/procs/emptygen.icn
blob: 3ca922ac425f321fb4414a61722cc03a2f6268ef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
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