forked from KolibriOS/kolibrios
kosjs: replace libmujs.a with sources; if argc = 0, see "usage"
git-svn-id: svn://kolibrios.org@8456 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
146
programs/develop/kosjs/libmujs/jsparse.h
Executable file
146
programs/develop/kosjs/libmujs/jsparse.h
Executable file
@@ -0,0 +1,146 @@
|
||||
#ifndef js_parse_h
|
||||
#define js_parse_h
|
||||
|
||||
enum js_AstType
|
||||
{
|
||||
AST_LIST,
|
||||
AST_FUNDEC,
|
||||
AST_IDENTIFIER,
|
||||
|
||||
EXP_IDENTIFIER,
|
||||
EXP_NUMBER,
|
||||
EXP_STRING,
|
||||
EXP_REGEXP,
|
||||
|
||||
/* literals */
|
||||
EXP_UNDEF, /* for array elisions */
|
||||
EXP_NULL,
|
||||
EXP_TRUE,
|
||||
EXP_FALSE,
|
||||
EXP_THIS,
|
||||
|
||||
EXP_ARRAY,
|
||||
EXP_OBJECT,
|
||||
EXP_PROP_VAL,
|
||||
EXP_PROP_GET,
|
||||
EXP_PROP_SET,
|
||||
|
||||
EXP_FUN,
|
||||
|
||||
/* expressions */
|
||||
EXP_INDEX,
|
||||
EXP_MEMBER,
|
||||
EXP_CALL,
|
||||
EXP_NEW,
|
||||
|
||||
EXP_POSTINC,
|
||||
EXP_POSTDEC,
|
||||
|
||||
EXP_DELETE,
|
||||
EXP_VOID,
|
||||
EXP_TYPEOF,
|
||||
EXP_PREINC,
|
||||
EXP_PREDEC,
|
||||
EXP_POS,
|
||||
EXP_NEG,
|
||||
EXP_BITNOT,
|
||||
EXP_LOGNOT,
|
||||
|
||||
EXP_MOD,
|
||||
EXP_DIV,
|
||||
EXP_MUL,
|
||||
EXP_SUB,
|
||||
EXP_ADD,
|
||||
EXP_USHR,
|
||||
EXP_SHR,
|
||||
EXP_SHL,
|
||||
EXP_IN,
|
||||
EXP_INSTANCEOF,
|
||||
EXP_GE,
|
||||
EXP_LE,
|
||||
EXP_GT,
|
||||
EXP_LT,
|
||||
EXP_STRICTNE,
|
||||
EXP_STRICTEQ,
|
||||
EXP_NE,
|
||||
EXP_EQ,
|
||||
EXP_BITAND,
|
||||
EXP_BITXOR,
|
||||
EXP_BITOR,
|
||||
EXP_LOGAND,
|
||||
EXP_LOGOR,
|
||||
|
||||
EXP_COND,
|
||||
|
||||
EXP_ASS,
|
||||
EXP_ASS_MUL,
|
||||
EXP_ASS_DIV,
|
||||
EXP_ASS_MOD,
|
||||
EXP_ASS_ADD,
|
||||
EXP_ASS_SUB,
|
||||
EXP_ASS_SHL,
|
||||
EXP_ASS_SHR,
|
||||
EXP_ASS_USHR,
|
||||
EXP_ASS_BITAND,
|
||||
EXP_ASS_BITXOR,
|
||||
EXP_ASS_BITOR,
|
||||
|
||||
EXP_COMMA,
|
||||
|
||||
EXP_VAR, /* var initializer */
|
||||
|
||||
/* statements */
|
||||
STM_BLOCK,
|
||||
STM_EMPTY,
|
||||
STM_VAR,
|
||||
STM_IF,
|
||||
STM_DO,
|
||||
STM_WHILE,
|
||||
STM_FOR,
|
||||
STM_FOR_VAR,
|
||||
STM_FOR_IN,
|
||||
STM_FOR_IN_VAR,
|
||||
STM_CONTINUE,
|
||||
STM_BREAK,
|
||||
STM_RETURN,
|
||||
STM_WITH,
|
||||
STM_SWITCH,
|
||||
STM_THROW,
|
||||
STM_TRY,
|
||||
STM_DEBUGGER,
|
||||
|
||||
STM_LABEL,
|
||||
STM_CASE,
|
||||
STM_DEFAULT,
|
||||
};
|
||||
|
||||
typedef struct js_JumpList js_JumpList;
|
||||
|
||||
struct js_JumpList
|
||||
{
|
||||
enum js_AstType type;
|
||||
int inst;
|
||||
js_JumpList *next;
|
||||
};
|
||||
|
||||
struct js_Ast
|
||||
{
|
||||
enum js_AstType type;
|
||||
int line;
|
||||
js_Ast *parent, *a, *b, *c, *d;
|
||||
double number;
|
||||
const char *string;
|
||||
js_JumpList *jumps; /* list of break/continue jumps to patch */
|
||||
int casejump; /* for switch case clauses */
|
||||
js_Ast *gcnext; /* next in alloc list */
|
||||
};
|
||||
|
||||
js_Ast *jsP_parsefunction(js_State *J, const char *filename, const char *params, const char *body);
|
||||
js_Ast *jsP_parse(js_State *J, const char *filename, const char *source);
|
||||
void jsP_freeparse(js_State *J);
|
||||
|
||||
const char *jsP_aststring(enum js_AstType type);
|
||||
void jsP_dumpsyntax(js_State *J, js_Ast *prog, int minify);
|
||||
void jsP_dumplist(js_State *J, js_Ast *prog);
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user