michael@0: /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- michael@0: * vim: set ts=8 sts=4 et sw=4 tw=99: michael@0: * This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: /* michael@0: * JS reflection package. michael@0: */ michael@0: #ifndef jsreflect_h michael@0: #define jsreflect_h michael@0: michael@0: namespace js { michael@0: michael@0: enum ASTType { michael@0: AST_ERROR = -1, michael@0: #define ASTDEF(ast, str, method) ast, michael@0: #include "jsast.tbl" michael@0: #undef ASTDEF michael@0: AST_LIMIT michael@0: }; michael@0: michael@0: enum AssignmentOperator { michael@0: AOP_ERR = -1, michael@0: michael@0: /* assign */ michael@0: AOP_ASSIGN = 0, michael@0: /* operator-assign */ michael@0: AOP_PLUS, AOP_MINUS, AOP_STAR, AOP_DIV, AOP_MOD, michael@0: /* shift-assign */ michael@0: AOP_LSH, AOP_RSH, AOP_URSH, michael@0: /* binary */ michael@0: AOP_BITOR, AOP_BITXOR, AOP_BITAND, michael@0: michael@0: AOP_LIMIT michael@0: }; michael@0: michael@0: enum BinaryOperator { michael@0: BINOP_ERR = -1, michael@0: michael@0: /* eq */ michael@0: BINOP_EQ = 0, BINOP_NE, BINOP_STRICTEQ, BINOP_STRICTNE, michael@0: /* rel */ michael@0: BINOP_LT, BINOP_LE, BINOP_GT, BINOP_GE, michael@0: /* shift */ michael@0: BINOP_LSH, BINOP_RSH, BINOP_URSH, michael@0: /* arithmetic */ michael@0: BINOP_ADD, BINOP_SUB, BINOP_STAR, BINOP_DIV, BINOP_MOD, michael@0: /* binary */ michael@0: BINOP_BITOR, BINOP_BITXOR, BINOP_BITAND, michael@0: /* misc */ michael@0: BINOP_IN, BINOP_INSTANCEOF, michael@0: michael@0: BINOP_LIMIT michael@0: }; michael@0: michael@0: enum UnaryOperator { michael@0: UNOP_ERR = -1, michael@0: michael@0: UNOP_DELETE = 0, michael@0: UNOP_NEG, michael@0: UNOP_POS, michael@0: UNOP_NOT, michael@0: UNOP_BITNOT, michael@0: UNOP_TYPEOF, michael@0: UNOP_VOID, michael@0: michael@0: UNOP_LIMIT michael@0: }; michael@0: michael@0: enum VarDeclKind { michael@0: VARDECL_ERR = -1, michael@0: VARDECL_VAR = 0, michael@0: VARDECL_CONST, michael@0: VARDECL_LET, michael@0: VARDECL_LET_HEAD, michael@0: VARDECL_LIMIT michael@0: }; michael@0: michael@0: enum PropKind { michael@0: PROP_ERR = -1, michael@0: PROP_INIT = 0, michael@0: PROP_GETTER, michael@0: PROP_SETTER, michael@0: PROP_LIMIT michael@0: }; michael@0: michael@0: extern char const * const aopNames[]; michael@0: extern char const * const binopNames[]; michael@0: extern char const * const unopNames[]; michael@0: extern char const * const nodeTypeNames[]; michael@0: michael@0: } /* namespace js */ michael@0: michael@0: #endif /* jsreflect_h */