Add proper pretty-printing functions.

jsP_dumpsyntax to print as javascript.
jsP_dumplist to print as s-expressions.
This commit is contained in:
Tor Andersson
2014-01-10 19:50:01 +01:00
parent 7e40d3fefd
commit 9db2fce3a2
7 changed files with 578 additions and 527 deletions
+1
View File
@@ -11,6 +11,7 @@
typedef struct js_State js_State;
typedef struct js_StringNode js_StringNode;
typedef struct js_Ast js_Ast;
typedef int (*js_CFunction)(js_State *J);
+570
View File
File diff suppressed because it is too large Load Diff
+3 -2
View File
@@ -5,8 +5,9 @@ static int jsP_loadstring(js_State *J, const char *filename, const char *source)
{
js_Ast *prog = jsP_parse(J, filename, source);
if (prog) {
jsP_foldconstants(J, prog);
jsP_pretty(J, prog);
jsP_optimize(J, prog);
jsP_dumpsyntax(J, prog);
jsP_dumplist(J, prog);
jsP_freeparse(J);
return 0;
}
+1 -1
View File
@@ -79,7 +79,7 @@ static int foldnumber(js_Ast *node, double *r)
return 0;
}
void jsP_foldconstants(js_State *J, js_Ast *prog)
void jsP_optimize(js_State *J, js_Ast *prog)
{
double x;
foldnumber(prog, &x);
+3 -4
View File
@@ -1,8 +1,6 @@
#ifndef js_parse_h
#define js_parse_h
typedef struct js_Ast js_Ast;
struct js_Ast
{
int type;
@@ -124,7 +122,8 @@ enum
js_Ast *jsP_parse(js_State *J, const char *filename, const char *source);
void jsP_freeparse(js_State *J);
void jsP_foldconstants(js_State *J, js_Ast *prog);
void jsP_pretty(js_State *J, js_Ast *prog);
void jsP_optimize(js_State *J, js_Ast *prog);
void jsP_dumpsyntax(js_State *J, js_Ast *prog);
void jsP_dumplist(js_State *J, js_Ast *prog);
#endif
-518
View File
File diff suppressed because it is too large Load Diff
-2
View File
@@ -1,8 +1,6 @@
#ifndef js_state_h
#define js_state_h
typedef struct js_Ast js_Ast;
struct js_State
{
jmp_buf jb; /* setjmp buffer for error handling in parser */