From 2bd7d32f48e503903b1fd93aba0cf08029eaec4e Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Wed, 25 Nov 2020 12:21:31 -0700 Subject: [PATCH] ReaderExpDef.toString() --- src/kiss/Reader.hx | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/src/kiss/Reader.hx b/src/kiss/Reader.hx index 1e6cfd8e..e14fbb73 100644 --- a/src/kiss/Reader.hx +++ b/src/kiss/Reader.hx @@ -16,7 +16,7 @@ enum ReaderExpDef { StrExp(s:String); // "literal" Symbol(name:String); // s RawHaxe(code:String); // #| haxeCode() |# - TypedExp(path:String, exp:ReaderExp); // :type [exp]] + TypedExp(path:String, exp:ReaderExp); // :type [exp] MetaExp(meta:String); // &meta } @@ -114,4 +114,40 @@ class Reader { def: def }; } + + public static function toString(exp:ReaderExpDef) { + return switch (exp) { + case CallExp(func, args): + // (f a1 a2...) + var str = '(' + func.def.toString(); + for (arg in args) { + str += arg.def.toString(); + } + str += ')'; + str; + case ListExp(exps): + // [v1 v2 v3] + var str = '['; + for (exp in exps) { + str += exp.def.toString(); + } + str += ']'; + str; + case StrExp(s): + // "literal" + '"$s"'; + case Symbol(name): + // s + name; + case RawHaxe(code): + // #| haxeCode() |# + '#| $code |#'; + case TypedExp(path, exp): + // :type [exp] + ':$path ${exp.def.toString()}'; + case MetaExp(meta): + // &meta + '&$meta'; + } + } }