9 #include "../runner/common/Noncopyable.h"
18 class GlobalSemanticAnalyzer;
19 class LocalSemanticAnalyzer;
22 class TypeDescriptorFactory;
37 int32_t
Parse() const;
195 std::unique_ptr<
Parser> mParser;
Definition: CodeBuffer.h:26
Definition: CodeGenerator.h:27
Definition: DataBuffer.h:25
Definition: GlobalSemanticAnalyzer.h:19
Definition: LocalSemanticAnalyzer.h:20
Definition: ParsingDriver.h:28
std::shared_ptr< SyntaxNode > CreateDecrement(const std::shared_ptr< SyntaxNode > &expression)
Definition: ParsingDriver.cpp:755
static std::shared_ptr< SyntaxNode > CreateMulAndAssign(const std::shared_ptr< SyntaxNode > &leftHand, const std::shared_ptr< SyntaxNode > &rightHand)
Definition: ParsingDriver.cpp:665
static std::shared_ptr< SyntaxNode > CreateAssign(const std::shared_ptr< SyntaxNode > &leftHand, const std::shared_ptr< SyntaxNode > &rightHand)
Definition: ParsingDriver.cpp:487
static std::shared_ptr< SyntaxNode > CreateJoin(const std::shared_ptr< SyntaxNode > &leftHand, const std::shared_ptr< SyntaxNode > &rightHand)
Definition: ParsingDriver.cpp:478
static std::shared_ptr< SyntaxNode > CreateDiv(const std::shared_ptr< SyntaxNode > &leftHand, const std::shared_ptr< SyntaxNode > &rightHand)
Definition: ParsingDriver.cpp:535
static std::shared_ptr< SyntaxNode > CreateContinue()
Definition: ParsingDriver.cpp:414
static std::shared_ptr< SyntaxNode > CreateOr(const std::shared_ptr< SyntaxNode > &leftHand, const std::shared_ptr< SyntaxNode > &rightHand)
Definition: ParsingDriver.cpp:567
static std::shared_ptr< SyntaxNode > CreateXorAndAssign(const std::shared_ptr< SyntaxNode > &leftHand, const std::shared_ptr< SyntaxNode > &rightHand)
Definition: ParsingDriver.cpp:719
static std::shared_ptr< SyntaxNode > CreateInternalFunction(const std::shared_ptr< SyntaxNode > &returnExpression, const std::string_view &identifier, const std::shared_ptr< SyntaxNode > &argument, const std::shared_ptr< SyntaxNode > &statement)
Definition: ParsingDriver.cpp:231
static std::shared_ptr< SyntaxNode > CreateLabel(const std::string_view &labelName)
Definition: ParsingDriver.cpp:387
static std::shared_ptr< SyntaxNode > CreateStruct(const std::string_view &identifier, const std::shared_ptr< SyntaxNode > &member)
Definition: ParsingDriver.cpp:222
static std::shared_ptr< SyntaxNode > CreateDeclareStaticMemory(const int_t size, const std::shared_ptr< SyntaxNode > &allocateDeclarations)
Definition: ParsingDriver.cpp:119
static std::shared_ptr< SyntaxNode > CreateAndAndAssign(const std::shared_ptr< SyntaxNode > &leftHand, const std::shared_ptr< SyntaxNode > &rightHand)
Definition: ParsingDriver.cpp:701
static std::shared_ptr< SyntaxNode > CreateReturn(const std::shared_ptr< SyntaxNode > &expression)
Definition: ParsingDriver.cpp:394
static std::shared_ptr< SyntaxNode > CreatePowAndAssign(const std::shared_ptr< SyntaxNode > &leftHand, const std::shared_ptr< SyntaxNode > &rightHand)
Definition: ParsingDriver.cpp:692
static std::shared_ptr< SyntaxNode > CreateArgumentNode(const std::shared_ptr< SyntaxNode > &expression)
Definition: ParsingDriver.cpp:931
static std::shared_ptr< SyntaxNode > CreateLessEqual(const std::shared_ptr< SyntaxNode > &leftHand, const std::shared_ptr< SyntaxNode > &rightHand)
Definition: ParsingDriver.cpp:623
static std::shared_ptr< SyntaxNode > CreateRequest(const std::shared_ptr< SyntaxNode > &priority, const std::shared_ptr< SyntaxNode > &expression, const std::string_view &actionName)
Definition: ParsingDriver.cpp:451
static std::shared_ptr< SyntaxNode > CreateRollback(const std::shared_ptr< SyntaxNode > &expression)
Definition: ParsingDriver.cpp:401
static std::shared_ptr< SyntaxNode > CreateLogicalOr(const std::shared_ptr< SyntaxNode > &leftHand, const std::shared_ptr< SyntaxNode > &rightHand)
Definition: ParsingDriver.cpp:503
static std::shared_ptr< SyntaxNode > CreateMod(const std::shared_ptr< SyntaxNode > &leftHand, const std::shared_ptr< SyntaxNode > &rightHand)
Definition: ParsingDriver.cpp:543
static std::shared_ptr< SyntaxNode > CreateModAndAssign(const std::shared_ptr< SyntaxNode > &leftHand, const std::shared_ptr< SyntaxNode > &rightHand)
Definition: ParsingDriver.cpp:683
static std::shared_ptr< SyntaxNode > CreateIf(const std::shared_ptr< SyntaxNode > &condition, const std::shared_ptr< SyntaxNode > &statementIfTrue, const std::shared_ptr< SyntaxNode > &statementIfFalse)
Definition: ParsingDriver.cpp:281
static std::shared_ptr< SyntaxNode > CreateComplement1(const std::shared_ptr< SyntaxNode > &expression)
Definition: ParsingDriver.cpp:788
std::shared_ptr< SyntaxNode > CreateFloat(const float_t value)
Definition: ParsingDriver.cpp:856
static std::shared_ptr< SyntaxNode > CreateGreaterEqual(const std::shared_ptr< SyntaxNode > &leftHand, const std::shared_ptr< SyntaxNode > &rightHand)
Definition: ParsingDriver.cpp:607
static std::shared_ptr< SyntaxNode > CreateActor(const std::string_view &identifier, const std::shared_ptr< SyntaxNode > &action)
Definition: ParsingDriver.cpp:180
const std::shared_ptr< GlobalSemanticAnalyzer > & GetGlobalSemanticAnalyzer()
Definition: ParsingDriver.cpp:64
static std::shared_ptr< SyntaxNode > CreateDeclareArgumentNode(const std::shared_ptr< SyntaxNode > &declareVariable)
Definition: ParsingDriver.cpp:947
static std::shared_ptr< SyntaxNode > CreateRightShift(const std::shared_ptr< SyntaxNode > &leftHand, const std::shared_ptr< SyntaxNode > &rightHand)
Definition: ParsingDriver.cpp:591
static std::shared_ptr< SyntaxNode > CreateAnd(const std::shared_ptr< SyntaxNode > &leftHand, const std::shared_ptr< SyntaxNode > &rightHand)
Definition: ParsingDriver.cpp:559
const std::shared_ptr< CodeGenerator > & GetCodeGenerator()
Definition: ParsingDriver.cpp:54
std::shared_ptr< SyntaxNode > CreateActorTypeDescription()
Definition: ParsingDriver.cpp:251
const std::shared_ptr< SymbolFactory > & GetSymbolFactory()
Definition: ParsingDriver.cpp:69
ParsingDriver()
Definition: ParsingDriver.cpp:24
static std::shared_ptr< SyntaxNode > CreateArray(const std::shared_ptr< SyntaxNode > &leftHand, const std::shared_ptr< SyntaxNode > &expression)
Definition: ParsingDriver.cpp:891
static std::shared_ptr< SyntaxNode > CreateGreater(const std::shared_ptr< SyntaxNode > &leftHand, const std::shared_ptr< SyntaxNode > &rightHand)
Definition: ParsingDriver.cpp:599
static std::shared_ptr< SyntaxNode > CreateSwitchCaseNode(const std::shared_ptr< SyntaxNode > &expression, const std::shared_ptr< SyntaxNode > &statements)
Definition: ParsingDriver.cpp:915
std::shared_ptr< SyntaxNode > CreateInteger(const int_t value)
Definition: ParsingDriver.cpp:840
static std::shared_ptr< SyntaxNode > CreateLeftShift(const std::shared_ptr< SyntaxNode > &leftHand, const std::shared_ptr< SyntaxNode > &rightHand)
Definition: ParsingDriver.cpp:583
static std::shared_ptr< SyntaxNode > CreateSwitch(const std::shared_ptr< SyntaxNode > &condition, const std::shared_ptr< SyntaxNode > &statement)
Definition: ParsingDriver.cpp:290
static std::shared_ptr< SyntaxNode > CreateNegative(const std::shared_ptr< SyntaxNode > &expression)
Definition: ParsingDriver.cpp:774
static std::shared_ptr< SyntaxNode > CreateRefuse()
Definition: ParsingDriver.cpp:438
static std::shared_ptr< SyntaxNode > CreateEqual(const std::shared_ptr< SyntaxNode > &leftHand, const std::shared_ptr< SyntaxNode > &rightHand)
Definition: ParsingDriver.cpp:631
const std::shared_ptr< TypeDescriptorFactory > & GetTypeDescriptorFactory()
Definition: ParsingDriver.cpp:79
std::shared_ptr< SyntaxNode > CreateIncrement(const std::shared_ptr< SyntaxNode > &expression)
Definition: ParsingDriver.cpp:746
static std::shared_ptr< SyntaxNode > CreateSizeOf(const std::shared_ptr< SyntaxNode > &variableType)
Definition: ParsingDriver.cpp:795
static std::shared_ptr< SyntaxNode > CreateSwitchDefaultNode(const std::shared_ptr< SyntaxNode > &statements)
Definition: ParsingDriver.cpp:923
std::shared_ptr< SyntaxNode > CreateSender()
Definition: ParsingDriver.cpp:826
ParsingDriver(ParsingDriver &&) noexcept=delete
static std::shared_ptr< SyntaxNode > BindCaseNode(const std::shared_ptr< SyntaxNode > &next, const std::shared_ptr< SyntaxNode > &kase)
Definition: ParsingDriver.cpp:907
static std::shared_ptr< SyntaxNode > CreateAdd(const std::shared_ptr< SyntaxNode > &leftHand, const std::shared_ptr< SyntaxNode > &rightHand)
Definition: ParsingDriver.cpp:511
const std::shared_ptr< StringPool > & GetStringPool()
Definition: ParsingDriver.cpp:74
static std::shared_ptr< SyntaxNode > CreateXor(const std::shared_ptr< SyntaxNode > &leftHand, const std::shared_ptr< SyntaxNode > &rightHand)
Definition: ParsingDriver.cpp:575
static std::shared_ptr< SyntaxNode > CreatePrint(const std::shared_ptr< SyntaxNode > &argument)
Definition: ParsingDriver.cpp:444
static std::shared_ptr< SyntaxNode > CreateCall(const std::string_view &identifier, const std::shared_ptr< SyntaxNode > &argument)
Definition: ParsingDriver.cpp:802
static std::shared_ptr< SyntaxNode > CreateWhile(const std::shared_ptr< SyntaxNode > &condition, const std::shared_ptr< SyntaxNode > &statement)
Definition: ParsingDriver.cpp:298
static std::shared_ptr< SyntaxNode > CreateExtend(const std::string_view &identifier)
Definition: ParsingDriver.cpp:214
static std::shared_ptr< SyntaxNode > CreateNotEqual(const std::shared_ptr< SyntaxNode > &leftHand, const std::shared_ptr< SyntaxNode > &rightHand)
Definition: ParsingDriver.cpp:639
static std::shared_ptr< SyntaxNode > CreateUndefineNode(const std::string_view &identifier)
Definition: ParsingDriver.cpp:172
static std::shared_ptr< SyntaxNode > CreateSubAndAssign(const std::shared_ptr< SyntaxNode > &leftHand, const std::shared_ptr< SyntaxNode > &rightHand)
Definition: ParsingDriver.cpp:656
static std::shared_ptr< SyntaxNode > CreatePow(const std::shared_ptr< SyntaxNode > &leftHand, const std::shared_ptr< SyntaxNode > &rightHand)
Definition: ParsingDriver.cpp:551
static std::shared_ptr< SyntaxNode > CreateFor(const std::shared_ptr< SyntaxNode > &initializeStatement, const std::shared_ptr< SyntaxNode > &condition, const std::shared_ptr< SyntaxNode > &iterationExpression, const std::shared_ptr< SyntaxNode > &statement)
Definition: ParsingDriver.cpp:314
static std::shared_ptr< SyntaxNode > CreateLogicalAnd(const std::shared_ptr< SyntaxNode > &leftHand, const std::shared_ptr< SyntaxNode > &rightHand)
Definition: ParsingDriver.cpp:495
static std::shared_ptr< SyntaxNode > CreateBlock(const std::shared_ptr< SyntaxNode > &statement)
Definition: ParsingDriver.cpp:273
static std::shared_ptr< SyntaxNode > CreateHalt()
Definition: ParsingDriver.cpp:420
static std::shared_ptr< SyntaxNode > CreateDeclareVariableNode(const std::shared_ptr< SyntaxNode > &variableType, const std::shared_ptr< SyntaxNode > &declarator, const std::shared_ptr< SyntaxNode > &expression)
Definition: ParsingDriver.cpp:963
static std::shared_ptr< SyntaxNode > CreateMemberFunction(const std::shared_ptr< SyntaxNode > &leftHand, const std::string_view &identifier, const std::shared_ptr< SyntaxNode > &argument)
Definition: ParsingDriver.cpp:882
std::shared_ptr< SyntaxNode > CreatePriority()
Definition: ParsingDriver.cpp:811
static std::shared_ptr< SyntaxNode > CreateModule(const std::string_view &identifier, const std::shared_ptr< SyntaxNode > &action)
Definition: ParsingDriver.cpp:196
const std::shared_ptr< DataBuffer > & GetDataBuffer()
Definition: ParsingDriver.cpp:59
static std::shared_ptr< SyntaxNode > CreateGoto(const std::string_view &labelName)
Definition: ParsingDriver.cpp:380
static std::shared_ptr< SyntaxNode > CreateExpressionIf(const std::shared_ptr< SyntaxNode > &condition, const std::shared_ptr< SyntaxNode > &trueStatement, const std::shared_ptr< SyntaxNode > &falseStatement)
Definition: ParsingDriver.cpp:764
static std::shared_ptr< SyntaxNode > CreateIdentifier(const std::string_view &identifier)
Definition: ParsingDriver.cpp:899
static std::shared_ptr< SyntaxNode > CreateAddAndAssign(const std::shared_ptr< SyntaxNode > &leftHand, const std::shared_ptr< SyntaxNode > &rightHand)
Definition: ParsingDriver.cpp:647
friend class Parser
Definition: ParsingDriver.h:206
static std::shared_ptr< SyntaxNode > CreateRightShiftAndAssign(const std::shared_ptr< SyntaxNode > &leftHand, const std::shared_ptr< SyntaxNode > &rightHand)
Definition: ParsingDriver.cpp:737
std::shared_ptr< SyntaxNode > CreateString(const std::string_view &text)
Definition: ParsingDriver.cpp:864
static std::shared_ptr< SyntaxNode > CreateDivAndAssign(const std::shared_ptr< SyntaxNode > &leftHand, const std::shared_ptr< SyntaxNode > &rightHand)
Definition: ParsingDriver.cpp:674
std::shared_ptr< SyntaxNode > CreateAction(const std::string_view &identifier, const std::shared_ptr< SyntaxNode > &block)
Definition: ParsingDriver.cpp:205
std::shared_ptr< SyntaxNode > Bind(const std::shared_ptr< SyntaxNode > &base, const std::shared_ptr< SyntaxNode > &next)
Definition: ParsingDriver.cpp:85
static std::shared_ptr< SyntaxNode > CreateBreak()
Definition: ParsingDriver.cpp:408
static std::shared_ptr< SyntaxNode > CreateTypeDescription(const std::string_view &identifier)
Definition: ParsingDriver.cpp:258
static std::shared_ptr< SyntaxNode > CreateSub(const std::shared_ptr< SyntaxNode > &leftHand, const std::shared_ptr< SyntaxNode > &rightHand)
Definition: ParsingDriver.cpp:519
static std::shared_ptr< SyntaxNode > CreateAwaitStart(const std::shared_ptr< SyntaxNode > &priority, const std::shared_ptr< SyntaxNode > &expression, const std::string_view &actionName)
Definition: ParsingDriver.cpp:460
static std::shared_ptr< SyntaxNode > CreateYield()
Definition: ParsingDriver.cpp:426
static std::shared_ptr< SyntaxNode > CreatePhantom(const std::string_view &identifier, const std::shared_ptr< SyntaxNode > &action)
Definition: ParsingDriver.cpp:188
std::shared_ptr< SyntaxNode > CreateConstantNode(const std::string_view &identifier, const int_t value)
Definition: ParsingDriver.cpp:139
static std::shared_ptr< SyntaxNode > CreateComply()
Definition: ParsingDriver.cpp:432
ParsingDriver(const ParsingDriver &)=delete
static std::shared_ptr< SyntaxNode > CreateMemberVariable(const std::shared_ptr< SyntaxNode > &leftHand, const std::string_view &identifier)
Definition: ParsingDriver.cpp:874
std::shared_ptr< SyntaxNode > CreateNil()
Definition: ParsingDriver.cpp:833
static std::shared_ptr< SyntaxNode > CreateVariableSizeNode(const size_t size)
Definition: ParsingDriver.cpp:1003
static std::shared_ptr< SyntaxNode > CreateDeclareMemory(const int_t size, const std::shared_ptr< SyntaxNode > &allocateDeclarations)
Definition: ParsingDriver.cpp:111
static std::shared_ptr< SyntaxNode > CreateLess(const std::shared_ptr< SyntaxNode > &leftHand, const std::shared_ptr< SyntaxNode > &rightHand)
Definition: ParsingDriver.cpp:615
static std::shared_ptr< SyntaxNode > CreateNativeFunction(const std::shared_ptr< SyntaxNode > &returnExpression, const std::string_view &identifier, const std::shared_ptr< SyntaxNode > &argument)
Definition: ParsingDriver.cpp:102
static std::shared_ptr< SyntaxNode > CreateLoop(const std::shared_ptr< SyntaxNode > &statement)
Definition: ParsingDriver.cpp:366
int32_t Parse() const
Definition: ParsingDriver.cpp:44
static std::shared_ptr< SyntaxNode > CreateMul(const std::shared_ptr< SyntaxNode > &leftHand, const std::shared_ptr< SyntaxNode > &rightHand)
Definition: ParsingDriver.cpp:527
static std::shared_ptr< SyntaxNode > CreateOrAndAssign(const std::shared_ptr< SyntaxNode > &leftHand, const std::shared_ptr< SyntaxNode > &rightHand)
Definition: ParsingDriver.cpp:710
static std::shared_ptr< SyntaxNode > CreateDeclaratorNode(const std::string_view &identifier)
Definition: ParsingDriver.cpp:987
std::shared_ptr< SyntaxNode > CreateSelf()
Definition: ParsingDriver.cpp:818
static std::shared_ptr< SyntaxNode > CreateAwaitCompletion(const std::shared_ptr< SyntaxNode > &priority, const std::shared_ptr< SyntaxNode > &expression, const std::string_view &actionName)
Definition: ParsingDriver.cpp:469
static std::shared_ptr< SyntaxNode > CreateLeftShiftAndAssign(const std::shared_ptr< SyntaxNode > &leftHand, const std::shared_ptr< SyntaxNode > &rightHand)
Definition: ParsingDriver.cpp:728
static std::shared_ptr< SyntaxNode > CreateDoWhile(const std::shared_ptr< SyntaxNode > &statement, const std::shared_ptr< SyntaxNode > &condition)
Definition: ParsingDriver.cpp:306
std::shared_ptr< SyntaxNode > CreateDefineNode(const std::string_view &identifier, const std::string_view &text)
Definition: ParsingDriver.cpp:166
const std::shared_ptr< CodeBuffer > & GetCodeBuffer()
Definition: ParsingDriver.cpp:49
static std::shared_ptr< SyntaxNode > CreateLock(const std::shared_ptr< SyntaxNode > &statement)
Definition: ParsingDriver.cpp:373
static std::shared_ptr< SyntaxNode > CreateNot(const std::shared_ptr< SyntaxNode > &expression)
Definition: ParsingDriver.cpp:781
Definition: StringPool.h:21
Definition: SymbolFactory.h:33
Definition: SyntaxNode.h:23
Definition: TypeDescriptorFactory.h:21
Definition: TypeDescriptor.h:22
Definition: CodeBuffer.cpp:12
std::int32_t int_t
Definition: Type.h:29
float float_t
Definition: Type.h:28
Definition: Noncopyable.h:18