Website Summary Files Commits Branches @commit @diff @stats
path: root / JSImpl / src / ExpressionDefinitions.h
diff options
context:
space:
mode:
Commitd51e7e38448e24123af13f0fa2682b861a64f964 (patch)
Author
 martin dobrev <martindobrev0@gmail.com>
2018-11-02 00:12:31 +0200
Committer
 martin dobrev <martindobrev0@gmail.com>
2018-11-02 00:12:31 +0200
Filesff687e7a9aba1f8d53af110afe3e1e079e7b2614 /JSImpl/src/ExpressionDefinitions.h
IPL-d51e7e38448e24123af13f0fa2682b861a64f964.tar
IPL-d51e7e38448e24123af13f0fa2682b861a64f964.tar.gz
IPL-d51e7e38448e24123af13f0fa2682b861a64f964.zip
Parent8f90af904002a028d37cbf25a07d81f7984577d1 (diff)
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.h17
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)