Mana
LocalSemanticAnalyzer.h
Go to the documentation of this file.
1 
8 #pragma once
9 #include "SemanticAnalyzer.h"
10 #include "SymbolFactory.h"
11 #include "SyntaxNode.h"
12 #include "TypeDescriptor.h"
13 
14 namespace mana
15 {
16  /*
17  アクションや関数などローカルな範囲の文法を解析します
18  */
20  {
21  public:
23  const std::shared_ptr<SymbolFactory>& symbolFactory,
24  const std::shared_ptr<TypeDescriptorFactory>& typeDescriptorFactory
25  );
26  ~LocalSemanticAnalyzer() override = default;
27 
28  void PostResolverResolve(std::shared_ptr<SyntaxNode> node);
29 
30  private:
31  bool GetNodeType(TypeDescriptor::Id* t1, TypeDescriptor::Id* t2, const std::shared_ptr<const SyntaxNode>& node);
32  void AutoCast(const std::shared_ptr<SyntaxNode>& node);
33  };
34 }
Definition: LocalSemanticAnalyzer.h:20
void PostResolverResolve(std::shared_ptr< SyntaxNode > node)
Definition: LocalSemanticAnalyzer.cpp:73
~LocalSemanticAnalyzer() override=default
LocalSemanticAnalyzer(const std::shared_ptr< SymbolFactory > &symbolFactory, const std::shared_ptr< TypeDescriptorFactory > &typeDescriptorFactory)
Definition: LocalSemanticAnalyzer.cpp:14
Definition: SemanticAnalyzer.h:17
Id
type identifier
Definition: TypeDescriptor.h:30
Definition: CodeBuffer.cpp:12