Xreate
The Xreate programming language
|
Provides the interpretation analysis. Determines parts of a program eligible for Interpretation by xreate::interpretation::TargetInterpretation. More...
#include <interpretationpass.h>
Provides the interpretation analysis. Determines parts of a program eligible for Interpretation by xreate::interpretation::TargetInterpretation.
The class encapsulates Interpretation Analysis to support Interpretation.
It recognizes program functions, expressions, instructions eligible for interpretation and stores the output in Attachments<FunctionInterpretationData> and Attachments<InterpretationData>
There are number of instructions currently eligible for interpretation:
query
intrinsic function callsif
, loop fold
, switch
, switch variant
statementsSome of these instructions are eligible also for late interpretation to allow coupling of compiled instructions with interpreted ones, those are:
if
, loop fold
, switch
, switch variant
statementsPublic Member Functions | |
InterpretationResolution | process (const Expression &expression, PassContext context, const std::string &varDecl="") override |
Processes single Expression. | |
InterpretationResolution | process (ManagedFnPtr function) |
Processes Function. | |
InterpretationResolution | processFnCall (ManagedFnPtr function, PassContext context) |
Processes function invocation instruction. | |
void | run () |
Executes pass. | |
Public Member Functions inherited from AbstractPass< InterpretationResolution > | |
virtual InterpretationResolution | processFnCallUncertain (const std::string &calleeName, const std::list< ManagedFnPtr > &candidates, PassContext context) |
Processes function invocation instruction in uncertain cases. More... | |
virtual void | process (ManagedRulePtr rule) |
Processes Logic Rule. | |
virtual InterpretationResolution | process (CodeScope *scope, PassContext context, const std::string &hintBlockDecl="") |
Processes single CodeScope. | |
void | run () |
Executes AST traverse. | |
Public Member Functions inherited from IPass | |
virtual void | finish () |
Finalizes pass. Empty by default. | |