@@ -197,6 +197,10 @@ class LetNode : Node {
197197 type = NodeType.Let;
198198 error = perror;
199199 }
200+
201+ override string toString () => array?
202+ format(" let array %d %s %s" , arraySize, varType, name) :
203+ format(" let %s %s" , varType, name);
200204}
201205
202206class EnableNode : Node {
@@ -206,6 +210,8 @@ class EnableNode : Node {
206210 type = NodeType.Enable;
207211 error = perror;
208212 }
213+
214+ override string toString () => format(" enable %s" , ver);
209215}
210216
211217class RequiresNode : Node {
@@ -215,6 +221,8 @@ class RequiresNode : Node {
215221 type = NodeType.Requires;
216222 error = perror;
217223 }
224+
225+ override string toString () => format(" requires %s" , ver);
218226}
219227
220228class VersionNode : Node {
@@ -225,6 +233,16 @@ class VersionNode : Node {
225233 type = NodeType.Version;
226234 error = perror;
227235 }
236+
237+ override string toString () {
238+ string ret = format(" version %s\n " , ver);
239+
240+ foreach (ref node ; block) {
241+ ret ~= format(" %s\n " , node);
242+ }
243+
244+ return ret ~ " end" ;
245+ }
228246}
229247
230248class ArrayNode : Node {
@@ -236,6 +254,16 @@ class ArrayNode : Node {
236254 type = NodeType.Array;
237255 error = perror;
238256 }
257+
258+ override string toString () {
259+ string ret = constant? " c[" : " [" ;
260+
261+ foreach (ref node ; elements) {
262+ ret ~= node.toString() ~ ' ' ;
263+ }
264+
265+ return ret ~ ' ]' ;
266+ }
239267}
240268
241269class StringNode : Node {
@@ -246,6 +274,8 @@ class StringNode : Node {
246274 type = NodeType.String;
247275 error = perror;
248276 }
277+
278+ override string toString () => format(" %s\" %s\" " , constant? " c" : " " , value);
249279}
250280
251281class StructNode : Node {
@@ -257,6 +287,16 @@ class StructNode : Node {
257287 type = NodeType.Struct;
258288 error = perror;
259289 }
290+
291+ override string toString () {
292+ string ret = format(" struct %s\n " , name);
293+
294+ foreach (i, ref name ; names) {
295+ ret ~= format(" %s %s\n " , types[i], name);
296+ }
297+
298+ return ret ~ " end" ;
299+ }
260300}
261301
262302class ConstNode : Node {
@@ -267,6 +307,8 @@ class ConstNode : Node {
267307 type = NodeType.Const;
268308 error = perror;
269309 }
310+
311+ override string toString () => format(" const %s %d" , name, value);
270312}
271313
272314class EnumNode : Node {
0 commit comments