Gyoji Compiler
Loading...
Searching...
No Matches
src
analysis
gyoji-analysis.hpp
1
#pragma once
2
#include <gyoji-mir.hpp>
3
#include <gyoji-context.hpp>
4
36
namespace
Gyoji::analysis
{
37
49
class
AnalysisPass
{
50
public
:
51
AnalysisPass
(
Gyoji::context::CompilerContext
& _compiler_context,
std::string
_name);
52
~AnalysisPass
();
53
virtual
void
check(
const
Gyoji::mir::MIR
& mir)
const
= 0;
54
55
Gyoji::context::CompilerContext
& get_compiler_context()
const
;
56
const
std::string
& get_name()
const
;
57
private
:
58
Gyoji::context::CompilerContext
& compiler_context;
59
std::string
name;
60
};
61
72
class
AnalysisPassTypeResolution
:
public
AnalysisPass
{
73
public
:
74
AnalysisPassTypeResolution
(
Gyoji::context::CompilerContext
& _compiler_context);
75
~AnalysisPassTypeResolution
();
76
77
virtual
void
check(
const
Gyoji::mir::MIR
& mir)
const
;
78
private
:
79
void
check_type(
const
Gyoji::mir::Type
& type)
const
;
80
};
81
99
class
AnalysisPassUnreachable
:
public
AnalysisPass
{
100
public
:
101
AnalysisPassUnreachable
(
Gyoji::context::CompilerContext
& _compiler_context);
102
~AnalysisPassUnreachable
();
103
104
virtual
void
check(
const
Gyoji::mir::MIR
& mir)
const
;
105
private
:
106
void
check(
const
Gyoji::mir::Function
& function)
const
;
107
};
108
116
class
AnalysisPassBorrowChecker
:
public
AnalysisPass
{
117
public
:
118
AnalysisPassBorrowChecker
(
Gyoji::context::CompilerContext
& _compiler_context);
119
~AnalysisPassBorrowChecker
();
120
virtual
void
check(
const
Gyoji::mir::MIR
& mir)
const
;
121
private
:
122
void
check(
const
Gyoji::mir::Function
& function)
const
;
123
};
124
134
class
AnalysisPassReturnValues
:
public
AnalysisPass
{
135
public
:
136
AnalysisPassReturnValues
();
137
~AnalysisPassReturnValues
();
138
virtual
void
check(
const
Gyoji::mir::MIR
& mir)
const
;
139
};
140
151
class
AnalysisPassVariableScopePairing
:
public
AnalysisPass
{
152
public
:
153
AnalysisPassVariableScopePairing
();
154
~AnalysisPassVariableScopePairing
();
155
virtual
void
check(
const
Gyoji::mir::MIR
& mir)
const
;
156
};
157
158
};
159
std::basic_string
Gyoji::analysis::AnalysisPassBorrowChecker
Performs the borrow-checker algorithm.
Definition
gyoji-analysis.hpp:116
Gyoji::analysis::AnalysisPassReturnValues
Performs checks for return-value consistency.
Definition
gyoji-analysis.hpp:134
Gyoji::analysis::AnalysisPassTypeResolution
Check that all types have been fully declared before use.
Definition
gyoji-analysis.hpp:72
Gyoji::analysis::AnalysisPassUnreachable
Checks for the existence of unreachable code.
Definition
gyoji-analysis.hpp:99
Gyoji::analysis::AnalysisPassVariableScopePairing
This pass ensures that every variable that has been declared is also paired with an un-declare.
Definition
gyoji-analysis.hpp:151
Gyoji::analysis::AnalysisPass
Abstract interface to analysis passes.
Definition
gyoji-analysis.hpp:49
Gyoji::context::CompilerContext
Compiler Context.
Definition
gyoji-context.hpp:30
Gyoji::mir::Function
Function inside a translation unit.
Definition
functions.hpp:303
Gyoji::mir::MIR
The middle-tier intermediate representation (MIR) of a translation unit.
Definition
gyoji-mir.hpp:57
Gyoji::mir::Type
This represents a type as declared in a translation unit.
Definition
types.hpp:299
Gyoji::analysis
Analysis pass performs checks to ensure semantic consistency.
Definition
gyoji-analysis.hpp:36
Generated by
1.9.8