core: display_helper: Display escaped characters.
authorJan Nieuwenhuizen <janneke@gnu.org>
Sat, 21 Apr 2018 21:58:28 +0000 (23:58 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Sat, 21 Apr 2018 21:58:28 +0000 (23:58 +0200)
* src/lib.c (display_helper): Display escaped characters.

scaffold/mini-mes.c
src/lib.c

index 9b99a265e2383a370044bd4610eae39a27092bf4..e76a087d7e4b20033c8084b03158f3ef79174d0f 100644 (file)
@@ -18,6 +18,7 @@
  * along with Mes.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#define MES_MINI 1
 #if POSIX
 #error "POSIX not supported"
 #endif
@@ -40,6 +41,7 @@ int g_free = 0;
 
 SCM g_continuations = 0;
 SCM g_symbols = 0;
+SCM g_macros = 0;
 SCM g_stack = 0;
 // a/env
 SCM r0 = 0;
@@ -104,6 +106,7 @@ struct scm scm_symbol_set_x = {TSYMBOL, "set!",0};
 
 struct scm scm_symbol_sc_expand = {TSYMBOL, "sc-expand",0};
 struct scm scm_symbol_macro_expand = {TSYMBOL, "macro-expand",0};
+struct scm scm_symbol_portable_macro_expand = {TSYMBOL, "portable-macro-expand",0};
 struct scm scm_symbol_sc_expander_alist = {TSYMBOL, "*sc-expander-alist*",0};
 
 struct scm scm_symbol_call_with_values = {TSYMBOL, "call-with-values",0};
@@ -129,9 +132,8 @@ struct scm scm_symbol_mes_version = {TSYMBOL, "%version",0};
 
 struct scm scm_symbol_car = {TSYMBOL, "car",0};
 struct scm scm_symbol_cdr = {TSYMBOL, "cdr",0};
-struct scm scm_symbol_null_p = {TSYMBOL, "null?",0};
-struct scm scm_symbol_eq_p = {TSYMBOL, "eq?",0};
-struct scm scm_symbol_cons = {TSYMBOL, "cons",0};
+struct scm scm_symbol_pmatch_car = {TSYMBOL, "pmatch-car",0};
+struct scm scm_symbol_pmatch_cdr = {TSYMBOL, "pmatch-cdr",0};
 
 struct scm scm_vm_evlis = {TSPECIAL, "*vm-evlis*",0};
 struct scm scm_vm_evlis2 = {TSPECIAL, "*vm-evlis2*",0};
@@ -139,13 +141,10 @@ struct scm scm_vm_evlis3 = {TSPECIAL, "*vm-evlis3*",0};
 struct scm scm_vm_apply = {TSPECIAL, "core:apply",0};
 struct scm scm_vm_apply2 = {TSPECIAL, "*vm-apply2*",0};
 struct scm scm_vm_eval = {TSPECIAL, "core:eval",0};
-struct scm scm_vm_eval_define = {TSPECIAL, "*vm-eval-define*",0};
 
-//MES_FIXED_PRIMITIVES
-struct scm scm_vm_eval_car = {TSPECIAL, "*vm-eval-car*",0};
-struct scm scm_vm_eval_cdr = {TSPECIAL, "*vm-eval-cdr*",0};
-struct scm scm_vm_eval_cons = {TSPECIAL, "*vm-eval-cons*",0};
-struct scm scm_vm_eval_null_p = {TSPECIAL, "*vm-eval-null-p*",0};
+struct scm scm_vm_eval_pmatch_car = {TSPECIAL, "*vm-eval-pmatch-car*",0};
+struct scm scm_vm_eval_pmatch_cdr = {TSPECIAL, "*vm-eval-pmatch-cdr*",0};
+struct scm scm_vm_eval_define = {TSPECIAL, "*vm-eval-define*",0};
 
 struct scm scm_vm_eval_set_x = {TSPECIAL, "*vm-eval-set!*",0};
 struct scm scm_vm_eval_macro_expand_eval = {TSPECIAL, "*vm:eval-macro-expand-eval*",0};
@@ -161,7 +160,7 @@ struct scm scm_vm_begin_expand_primitive_load = {TSPECIAL, "*vm:core:begin-expan
 struct scm scm_vm_begin_primitive_load = {TSPECIAL, "*vm:core:begin-primitive-load*",0};
 struct scm scm_vm_macro_expand_car = {TSPECIAL, "*vm:core:macro-expand-car*",0};
 struct scm scm_vm_macro_expand_cdr = {TSPECIAL, "*vm:macro-expand-cdr*",0};
-struct scm scm_vm_begin_expand = {TSPECIAL, "*vm:begin-expand*",0};
+struct scm scm_vm_begin_expand = {TSPECIAL, "core:eval-expand",0};
 struct scm scm_vm_begin_expand_eval = {TSPECIAL, "*vm:begin-expand-eval*",0};
 struct scm scm_vm_begin_expand_macro = {TSPECIAL, "*vm:begin-expand-macro*",0};
 struct scm scm_vm_begin = {TSPECIAL, "*vm-begin*",0};
@@ -189,11 +188,15 @@ int g_function = 0;
 
 #include "gc.mes.h"
 #include "lib.mes.h"
+#if !MES_MINI
 #include "math.mes.h"
+#endif
 #include "mes.mes.h"
+#if !MES_MINI
 #include "posix.mes.h"
-// #include "reader.mes.h"
+//#include "reader.mes.h"
 #include "vector.mes.h"
+#ndif
 
 #define TYPE(x) g_cells[x].type
 #define CAR(x) g_cells[x].car
@@ -1017,8 +1020,8 @@ make_tmps (struct scm* cells)
   return 0;
 }
 
-#include "posix.c"
-#include "math.c"
+// #include "posix.c"
+// #include "math.c"
 #include "lib.c"
 
 //\f Jam Collector
@@ -1140,20 +1143,30 @@ mes_builtins (SCM a) ///((internal))
 #include "mes.mes.i"
 
 // Do not sort: Order of these includes define builtins
+#if !MES_MINI
 #include "posix.mes.i"
 #include "math.mes.i"
+#endif
 #include "lib.mes.i"
+#if !MES_MINI
 #include "vector.mes.i"
+#endif
 #include "gc.mes.i"
-// #include "reader.mes.i"
+#if !MES_MINI
+  //#include "reader.mes.i"
+#endif
 
 #include "gc.mes.environment.i"
 #include "lib.mes.environment.i"
+#if !MES_MINI
 #include "math.mes.environment.i"
+#endif
 #include "mes.mes.environment.i"
+#if !MES_MINI
 #include "posix.mes.environment.i"
-// #include "reader.mes.environment.i"
+  //#include "reader.mes.environment.i"
 #include "vector.mes.environment.i"
+#endif
 
   return a;
 }
@@ -1219,7 +1232,9 @@ bload_env (SCM a) ///((internal))
   return r2;
 }
 
+#if !MES_MINI
 #include "vector.c"
+#endif
 #include "gc.c"
 
 int
index 54cdbc92c5c5f589cc677faebf3289b1379fbf66..0e3dbb96593a61817ba39f3a474f3015d29ed2e4 100644 (file)
--- a/src/lib.c
+++ b/src/lib.c
@@ -47,7 +47,9 @@ display_helper (SCM x, int cont, char* sep, int fd, int write_p)
               case '\n': fputs ("newline", fd); break;
               case '\v': fputs ("vtab", fd); break;
               case '\f': fputs ("page", fd); break;
-              case '\r': fputs ("return", fd); break;
+                //Nyacc bug
+                // case '\r': fputs ("return", fd); break;
+              case 13: fputs ("return", fd); break;
               case ' ': fputs ("space", fd); break;
               default: fputc (VALUE (x), fd);
               }
@@ -140,13 +142,28 @@ display_helper (SCM x, int cont, char* sep, int fd, int write_p)
         SCM t = CAR (x);
         while (t && t != cell_nil)
           {
-            switch (write_p ? VALUE (CAR (t)) : 0)
+            switch (write_p ? VALUE (CAR (t)) : -1)
               {
+              case '\0': fputs ("\\0", fd); break;
+              case '\a': fputs ("\\a", fd); break;
+              case '\b': fputs ("\\b", fd); break;
               case '\t': fputs ("\\t", fd); break;
+              case '\v': fputs ("\\v", fd); break;
               case '\n': fputs ("\\n", fd); break;
+              case '\f': fputs ("\\f", fd); break;
+#if 1 //__MESC__
+      //Nyacc bug
+              case 13: fputs ("\\r", fd); break;
+              case 27: fputs ("\\e", fd); break;
+#else
+                //case '\r': fputs ("\\r", fd); break;
+                //Nyacc crash
+                //case '\e': fputs ("\\e", fd); break;
+#endif
               case '\\': fputs ("\\\\", fd); break;
               case '"': fputs ("\\\"", fd); break;
-              default: fputc (VALUE (CAR (t)), fd);
+              default:
+                fputc (VALUE (CAR (t)), fd);
               }
             t = CDR (t);
           }