6 #if defined(GD_IDE_ONLY)
7 #ifndef GDCORE_ExpressionCodeGenerator_H
8 #define GDCORE_ExpressionCodeGenerator_H
12 #include "GDCore/Events/Parsers/ExpressionParser2Node.h"
13 #include "GDCore/Events/Parsers/ExpressionParser2NodeWorker.h"
14 #include "GDCore/String.h"
17 class ObjectsContainer;
19 class ParameterMetadata;
20 class ExpressionMetadata;
21 class EventsCodeGenerationContext;
22 class EventsCodeGenerator;
41 : rootType(rootType_), rootObjectName(rootObjectName_), codeGenerator(codeGenerator_), context(context_){};
64 const gd::String& GetOutput() {
return output; };
70 void OnVisitNumberNode(
NumberNode& node)
override;
71 void OnVisitTextNode(
TextNode& node)
override;
74 void OnVisitVariableBracketAccessorNode(
79 void OnVisitEmptyNode(
EmptyNode& node)
override;
83 const std::vector<std::unique_ptr<ExpressionNode>>& parameters,
88 const std::vector<std::unique_ptr<ExpressionNode>>& parameters,
94 const std::vector<std::unique_ptr<ExpressionNode>>& parameters,
97 const std::vector<std::unique_ptr<ExpressionNode>>& parameters,
99 size_t initialParameterIndex);
101 static std::vector<gd::Expression> PrintParameters(
102 const std::vector<std::unique_ptr<ExpressionNode>>& parameters);
105 gd::String objectNameToUseForVariableAccessor;
Used to manage the context when generating code for events.
Definition: EventsCodeGenerationContext.h:27
Internal class used to generate code from events.
Definition: EventsCodeGenerator.h:40
Generate code for a parsed expression.
Definition: ExpressionCodeGenerator.h:35
Class representing an expression used as a parameter of a gd::Instruction. This class is nothing more...
Definition: Expression.h:30
The interface for any worker class ("visitor" pattern) that want to interact with the nodes of a pars...
Definition: ExpressionParser2NodeWorker.h:36
String represents an UTF8 encoded string.
Definition: String.h:31
Definition: CommonTools.h:24
An empty node, used when parsing failed/a syntax error was encountered and any other node could not m...
Definition: ExpressionParser2Node.h:416
A function call node (either free function, object function or object behavior function)....
Definition: ExpressionParser2Node.h:364
An identifier node, usually representing an object or a variable with an optional function name or ch...
Definition: ExpressionParser2Node.h:197
A number node. For example: "123". Its type is always "number".
Definition: ExpressionParser2Node.h:154
The name of a function to call on an object or the behavior For example: "MyObject....
Definition: ExpressionParser2Node.h:314
An operator node. For example: "lhs + rhs".
Definition: ExpressionParser2Node.h:122
Definition: ExpressionParser2Node.h:108
A text node. For example: "Hello World". Its type is always "string".
Definition: ExpressionParser2Node.h:170
A unary operator node. For example: "-2".
Definition: ExpressionParser2Node.h:138
A direct accessor to a child variable. Example: MyChild in MyVariable.MyChild.
Definition: ExpressionParser2Node.h:275
A bracket accessor to a child variable. Example: ["MyChild"] (in MyVariable["MyChild"]).
Definition: ExpressionParser2Node.h:293
A variable, or object variable, with bracket accessor or at least 2 "dot" accessors.
Definition: ExpressionParser2Node.h:254