From 0c666088bdf8ad15bbdfbc687cef38532dff96b4 Mon Sep 17 00:00:00 2001 From: martin dobrev Date: Sun, 14 Oct 2018 18:27:53 +0300 Subject: Split expression definitions in different file. --- JSImpl/src/ExpressionDefinitions.h | 100 +++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 JSImpl/src/ExpressionDefinitions.h (limited to 'JSImpl/src/ExpressionDefinitions.h') diff --git a/JSImpl/src/ExpressionDefinitions.h b/JSImpl/src/ExpressionDefinitions.h new file mode 100644 index 0000000..b1b2595 --- /dev/null +++ b/JSImpl/src/ExpressionDefinitions.h @@ -0,0 +1,100 @@ +#pragma once + +#define NO_MEMBERS(MACRO) + +#define LITERAL_BOOLEAN_MEMBERS(MACRO)\ + MACRO(bool, Value, false) + +#define LITERAL_NUMBER_MEMBERS(MACRO)\ + MACRO(double, Value, 0.0) + +#define LITERAL_STRING_MEMBERS(MACRO)\ + MACRO(IPLString, Value, "") + +#define BINARY_EXPRESSION_MEMBERS(MACRO)\ + MACRO(ExpressionPtr, Left, nullptr)\ + MACRO(ExpressionPtr, Right, nullptr)\ + MACRO(TokenType, Operator, TokenType::Invalid) + +#define UNARY_EXPRESSION_MEMBERS(MACRO)\ + MACRO(IPLSharedPtr, Expr, nullptr)\ + 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, "") + +#define VARIABLEDEFINITION_EXPRESSION_MEMBERS(MACRO)\ + MACRO(IPLString, Name, "")\ + MACRO(ExpressionPtr, Value, nullptr) + +#define LIST_EXPRESSION_MEMBERS(MACRO)\ + MACRO(IPLVector, Values, IPLVector()) + +#define BLOCK_EXPRESSION_MEMBERS(MACRO)\ + MACRO(IPLVector, Values, IPLVector()) + +#define LABELED_EXPRESSION_MEMBERS(MACRO)\ + MACRO(IPLString, Identifier, "")\ + MACRO(ExpressionPtr, Statement, nullptr) + +#define IF_EXPRESSION_MEMBERS(MACRO)\ + MACRO(ExpressionPtr, Condition, nullptr)\ + MACRO(ExpressionPtr, IfStatement, nullptr)\ + MACRO(ExpressionPtr, ElseStatement, nullptr) + +#define CASE_EXPRESSION_MEMBERS(MACRO)\ + MACRO(ExpressionPtr, Condition, nullptr)\ + MACRO(ExpressionPtr, Body, nullptr) + +#define SWITCH_EXPRESSION_MEMBERS(MACRO)\ + MACRO(ExpressionPtr, Condition, nullptr)\ + MACRO(IPLVector, Cases, IPLVector())\ + MACRO(ExpressionPtr, DefaultCase, nullptr) + +#define WHILE_EXPRESSION_MEMBERS(MACRO)\ + MACRO(ExpressionPtr, Condition, nullptr)\ + MACRO(ExpressionPtr, Body, nullptr)\ + MACRO(bool, DoWhile, false) + +#define FOR_EXPRESSION_MEMBERS(MACRO)\ + MACRO(ExpressionPtr, Initialization, nullptr)\ + MACRO(ExpressionPtr, Condition, nullptr)\ + MACRO(ExpressionPtr, Iteration, nullptr)\ + MACRO(ExpressionPtr, Body, nullptr) + +#define FUNCTION_EXPRESSION_MEMBERS(MACRO)\ + MACRO(IPLString, Name, "")\ + MACRO(IPLVector, ArgumentsIdentifiers, IPLVector())\ + MACRO(ExpressionPtr, Body, nullptr) + +#define TOP_EXPRESSION_MEMBERS(MACRO)\ + MACRO(IPLVector, Values, IPLVector()) + +#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(BinaryExpression, Expression, BINARY_EXPRESSION_MEMBERS)\ + MACRO(UnaryExpression, Expression, UNARY_EXPRESSION_MEMBERS)\ + MACRO(IdentifierExpression, Expression, IDENTIFIER_EXPRESSION_MEMBERS)\ + MACRO(VariableDefinitionExpression, Expression, VARIABLEDEFINITION_EXPRESSION_MEMBERS)\ + MACRO(ListExpression, Expression, LIST_EXPRESSION_MEMBERS)\ + MACRO(BlockStatement, Expression, BLOCK_EXPRESSION_MEMBERS)\ + MACRO(LabeledStatement, Expression, LABELED_EXPRESSION_MEMBERS)\ + MACRO(IfStatement, Expression, IF_EXPRESSION_MEMBERS)\ + MACRO(SwitchStatement, Expression, SWITCH_EXPRESSION_MEMBERS)\ + MACRO(CaseStatement, Expression, CASE_EXPRESSION_MEMBERS)\ + MACRO(WhileStatement, Expression, WHILE_EXPRESSION_MEMBERS)\ + MACRO(ForStatement, Expression, FOR_EXPRESSION_MEMBERS)\ + MACRO(FunctionDeclaration, Expression, FUNCTION_EXPRESSION_MEMBERS)\ + MACRO(TopStatements, Expression, TOP_EXPRESSION_MEMBERS)\ + MACRO(EmptyExpression, Expression, NO_MEMBERS) -- cgit v1.3.1-23-gd82d