diff options
Add many fixes to parser.
Introduce Object Literal and Call expression.
Add more test for parser.
Little enhance around interpreter.
1 files changed, 10 insertions, 7 deletions
| -rw-r--r-- | JSImpl/src/ExpressionDefinitions.h | 17 |
diff --git a/JSImpl/src/ExpressionDefinitions.h b/JSImpl/src/ExpressionDefinitions.h index b1b2595..edf344b 100644 --- a/JSImpl/src/ExpressionDefinitions.h +++ b/JSImpl/src/ExpressionDefinitions.h @@ -11,6 +11,9 @@ #define LITERAL_STRING_MEMBERS(MACRO)\ MACRO(IPLString, Value, "") +#define LITERAL_OBJECT_MEMBERS(MACRO)\ + MACRO(IPLVector<ExpressionPtr>, Values, IPLVector<ExpressionPtr>()) + #define BINARY_EXPRESSION_MEMBERS(MACRO)\ MACRO(ExpressionPtr, Left, nullptr)\ MACRO(ExpressionPtr, Right, nullptr)\ @@ -21,12 +24,6 @@ MACRO(TokenType, Operator, TokenType::Invalid)\ MACRO(bool, Suffix, false) -#define LITERAL_EXPRESSION_MEMBERS(MACRO)\ - MACRO(double, NumValue, 0.)\ - MACRO(IPLString, StringValue, "")\ - MACRO(bool, BooleanValue, false)\ - MACRO(LiteralType, Type, LiteralType::Undefined) - #define IDENTIFIER_EXPRESSION_MEMBERS(MACRO)\ MACRO(IPLString, Name, "") @@ -77,12 +74,17 @@ #define TOP_EXPRESSION_MEMBERS(MACRO)\ MACRO(IPLVector<ExpressionPtr>, Values, IPLVector<ExpressionPtr>()) +#define CALL_EXPRESSION_MEMBERS(MACRO)\ + MACRO(ExpressionPtr, Identifier, ExpressionPtr())\ + MACRO(ExpressionPtr, Arguments, ExpressionPtr()) + #define EXPRESSION_DEFINITION_ITERATOR(MACRO)\ MACRO(LiteralNull, Expression, NO_MEMBERS)\ MACRO(LiteralUndefined, Expression, NO_MEMBERS)\ MACRO(LiteralBoolean, Expression, LITERAL_BOOLEAN_MEMBERS)\ MACRO(LiteralNumber, Expression, LITERAL_NUMBER_MEMBERS)\ MACRO(LiteralString, Expression, LITERAL_STRING_MEMBERS)\ + MACRO(LiteralObject, Expression, LITERAL_OBJECT_MEMBERS)\ MACRO(BinaryExpression, Expression, BINARY_EXPRESSION_MEMBERS)\ MACRO(UnaryExpression, Expression, UNARY_EXPRESSION_MEMBERS)\ MACRO(IdentifierExpression, Expression, IDENTIFIER_EXPRESSION_MEMBERS)\ @@ -97,4 +99,5 @@ MACRO(ForStatement, Expression, FOR_EXPRESSION_MEMBERS)\ MACRO(FunctionDeclaration, Expression, FUNCTION_EXPRESSION_MEMBERS)\ MACRO(TopStatements, Expression, TOP_EXPRESSION_MEMBERS)\ - MACRO(EmptyExpression, Expression, NO_MEMBERS) + MACRO(EmptyExpression, Expression, NO_MEMBERS)\ + MACRO(CallExpression, Expression, CALL_EXPRESSION_MEMBERS) |
