MinitScript  0.9.31 PRE-BETA
Static Public Member Functions | Static Private Member Functions | List of all members
Transpiler Class Reference

MinitScript transpiler. More...

#include <minitscript/minitscript/Transpiler.h>

Collaboration diagram for Transpiler:
Collaboration graph

Static Public Member Functions

static void transpile (MinitScript *minitScript, const string &transpilationFileName, const vector< string > &minitScriptExtensionFileNames)
 Transpile MinitScript script instance. More...
 
static void untranspile (const string &scriptFileName, const string &transpilationFileName)
 Untranspile. More...
 
static const string createSourceCode (MinitScript *minitScript)
 Create source code for whole script. More...
 

Static Private Member Functions

static const string getScriptTypeReadableName (MinitScript::Script::Type type)
 Get script type name. More...
 
static const string getScriptTypeEnumIdentifier (MinitScript::Script::Type type)
 Get script type enum identifier. More...
 
static const string createMethodName (MinitScript *minitScript, int scriptIdx)
 Create method name. More...
 
static const string createShortMethodName (MinitScript *minitScript, int scriptIdx)
 Create short method name. More...
 
static const string escapeString (const string &str)
 Escape string variable. More...
 
static bool variableHasStatement (const string &variableStatement)
 Check if variable has access statement. More...
 
static const string createVariableName (const string &variableStatement)
 Create variable name. More...
 
static const string createGlobalVariableName (const string &variableStatement)
 Create global variable name. More...
 
static const string createLocalVariableName (const string &variableStatement)
 Create local variable name. More...
 
static const unordered_set< string > getAllClassesMethodNames (MinitScript *minitScript)
 Get all classes method names. More...
 
static const vector< string > getAllClassesMethodNamesSorted (MinitScript *minitScript)
 Get all classes method names sorted. More...
 
static const unordered_map< string, vector< string > > getClassesMethodNames (MinitScript *minitScript)
 Get method names per classes. More...
 
static void determineVariables (MinitScript *minitScript, unordered_set< string > &globalVariables, vector< unordered_set< string >> &localVariables)
 Determine variables. More...
 
static void determineVariables (int scriptIdx, const MinitScript::SyntaxTreeNode &syntaxTreeNode, unordered_set< string > &globalVariables, vector< unordered_set< string >> &localVariables)
 Determine variables within syntax tree. More...
 
static void gatherMethodCode (const vector< string > &minitScriptExtensionsCode, const string &className, int registerLine, unordered_map< string, vector< string >> &methodCodeMap)
 Gather method code. More...
 
static void generateVariableAccess (MinitScript *minitScript, string &generatedCode, int scriptConditionIdx, int scriptIdx, const string &variableName, const string &indent, bool getMethodArgumentVariable, bool getVariable, bool getVariableReference, bool setVariable, bool setVariableReference, bool setConstant, const string &returnValueStatement="returnValue = ", const string &statementEnd=";\n", int getArgumentIdx=0, int setArgumentIdx=1)
 Generate variable access. More...
 
static void generateArrayAccessMethods (MinitScript *minitScript, string &generatedDefinitions, const string &minitScriptClassName, int scriptConditionIdx, int scriptIdx, const string &methodName, const MinitScript::SyntaxTreeNode &syntaxTree, const MinitScript::Statement &statement, const unordered_map< string, vector< string >> &methodCodeMap, const unordered_set< string > &allMethods, bool condition, const vector< int > &argumentIndices={}, int depth=0)
 Generate array access methods. More...
 
static void generateEvaluateMemberAccessArrays (MinitScript *minitScript, vector< string > &generatedDeclarations, vector< string > &generatedDefinitions)
 Generate evaluate member access arrays. More...
 
static void generateArrayMapSetVariable (MinitScript *minitScript, int scriptConditionIdx, int scriptIdx, const MinitScript::Variable &variable, const unordered_map< string, vector< string >> &methodCodeMap, const unordered_set< string > &allMethods, const string &methodName, bool condition, const string &minitScriptClassName, string &generatedDefinitions, int depth=0, int initializerDepth=0, const string &postStatement=string())
 Generate array/map/set variable. More...
 
static void generateArrayMapSetInitializer (MinitScript *minitScript, string &generatedDefinitions, int scriptConditionIdx, int scriptIdx, const string &minitScriptClassName, const string &methodName, const MinitScript::SyntaxTreeNode &syntaxTree, const MinitScript::Statement &statement, const unordered_map< string, vector< string >> &methodCodeMap, const unordered_set< string > &allMethods, bool condition, const vector< int > &argumentIndices={}, int depth=0)
 Generate array/map/set variable. More...
 
static bool transpileStatement (MinitScript *minitScript, string &generatedCode, const MinitScript::SyntaxTreeNode &syntaxTree, const MinitScript::Statement &statement, int scriptConditionIdx, int scriptIdx, int &statementIdx, const unordered_map< string, vector< string >> &methodCodeMap, const unordered_set< string > &allMethods, bool &scriptStateChanged, bool &scriptStopped, vector< string > &enabledNamedConditions, int depth=0, const vector< int > &argumentIndices={}, const string &returnValue=string(), const string &injectCode=string(), int additionalIndent=0)
 Transpile statement. More...
 
static bool transpile (MinitScript *minitScript, const string &className, string &generatedCode, int scriptIdx, const unordered_map< string, vector< string >> &methodCodeMap, const unordered_set< string > &allMethods)
 Transpile a script statement. More...
 
static bool transpileCondition (MinitScript *minitScript, string &generatedCode, int scriptIdx, const unordered_map< string, vector< string >> &methodCodeMap, const unordered_set< string > &allMethods, const string &returnValue, const string &injectCode, int depth=0)
 Transpile a condition. More...
 
static const string createSourceCode (const MinitScript::SyntaxTreeNode &syntaxTreeNode)
 Create source code for given syntax tree node. More...
 
static const string createSourceCode (MinitScript::Script::Type scriptType, const string &condition, const vector< MinitScript::Script::Argument > &functionArguments, const string &name, const MinitScript::SyntaxTreeNode &conditionSyntaxTree, const vector< MinitScript::SyntaxTreeNode > &syntaxTree)
 Create source code for given syntax tree. More...
 

Detailed Description

MinitScript transpiler.

Author
Andreas Drewke

Definition at line 28 of file Transpiler.h.

Member Function Documentation

◆ transpile() [1/2]

void transpile ( MinitScript minitScript,
const string &  transpilationFileName,
const vector< string > &  minitScriptExtensionFileNames 
)
static

Transpile MinitScript script instance.

Parameters
minitScriptMinitScript script instance
transpilationFileNametranspilation file name
minitScriptExtensionFileNamesMinitScript extension file names

Definition at line 45 of file Transpiler.cpp.

◆ untranspile()

void untranspile ( const string &  scriptFileName,
const string &  transpilationFileName 
)
static

Untranspile.

Parameters
scriptFileNamescript file name
transpilationFileNametranspilation file name

Definition at line 798 of file Transpiler.cpp.

◆ createSourceCode() [1/3]

const string createSourceCode ( MinitScript minitScript)
static

Create source code for whole script.

Parameters
minitScriptMinitScript instance
Returns
source code

Definition at line 2985 of file Transpiler.cpp.

◆ getScriptTypeReadableName()

static const string getScriptTypeReadableName ( MinitScript::Script::Type  type)
inlinestaticprivate

Get script type name.

Parameters
typescript type
Returns
script type enum identifier

Definition at line 58 of file Transpiler.h.

◆ getScriptTypeEnumIdentifier()

static const string getScriptTypeEnumIdentifier ( MinitScript::Script::Type  type)
inlinestaticprivate

Get script type enum identifier.

Parameters
typescript type
Returns
script type enum identifier

Definition at line 75 of file Transpiler.h.

◆ createMethodName()

static const string createMethodName ( MinitScript minitScript,
int  scriptIdx 
)
inlinestaticprivate

Create method name.

Parameters
scriptIdxscript index
Returns
method name

Definition at line 92 of file Transpiler.h.

◆ createShortMethodName()

static const string createShortMethodName ( MinitScript minitScript,
int  scriptIdx 
)
inlinestaticprivate

Create short method name.

Parameters
scriptIdxscript index
Returns
short method name

Definition at line 120 of file Transpiler.h.

◆ escapeString()

static const string escapeString ( const string &  str)
inlinestaticprivate

Escape string variable.

Parameters
strstring
Returns
escaped string

Definition at line 137 of file Transpiler.h.

◆ variableHasStatement()

static bool variableHasStatement ( const string &  variableStatement)
inlinestaticprivate

Check if variable has access statement.

Parameters
variableStatementvariable statement
Returns
variable has statement

Definition at line 180 of file Transpiler.h.

◆ createVariableName()

static const string createVariableName ( const string &  variableStatement)
inlinestaticprivate

Create variable name.

Parameters
variableStatementvariable statement
Returns
variable name

Definition at line 195 of file Transpiler.h.

◆ createGlobalVariableName()

static const string createGlobalVariableName ( const string &  variableStatement)
inlinestaticprivate

Create global variable name.

Parameters
variableStatementvariable statement
Returns
global CPP variable name

Definition at line 211 of file Transpiler.h.

◆ createLocalVariableName()

static const string createLocalVariableName ( const string &  variableStatement)
inlinestaticprivate

Create local variable name.

Parameters
variableStatementvariable statement
Returns
local CPP variable name

Definition at line 230 of file Transpiler.h.

◆ getAllClassesMethodNames()

const unordered_set< string > getAllClassesMethodNames ( MinitScript minitScript)
staticprivate

Get all classes method names.

Parameters
minitScriptMinitScript instance
Returns
all classes method names

Definition at line 912 of file Transpiler.cpp.

◆ getAllClassesMethodNamesSorted()

const vector< string > getAllClassesMethodNamesSorted ( MinitScript minitScript)
staticprivate

Get all classes method names sorted.

Parameters
minitScriptMinitScript instance
Returns
all classes method names sorted

Definition at line 934 of file Transpiler.cpp.

◆ getClassesMethodNames()

const unordered_map< string, vector< string > > getClassesMethodNames ( MinitScript minitScript)
staticprivate

Get method names per classes.

Parameters
minitScriptMinitScript instance
Returns
method names per classes

Definition at line 944 of file Transpiler.cpp.

◆ determineVariables() [1/2]

void determineVariables ( MinitScript minitScript,
unordered_set< string > &  globalVariables,
vector< unordered_set< string >> &  localVariables 
)
staticprivate

Determine variables.

Parameters
minitScriptMinitScript script instance
globalVariablesglobal variables
localVariableslocal variables per script index

Definition at line 967 of file Transpiler.cpp.

◆ determineVariables() [2/2]

void determineVariables ( int  scriptIdx,
const MinitScript::SyntaxTreeNode syntaxTreeNode,
unordered_set< string > &  globalVariables,
vector< unordered_set< string >> &  localVariables 
)
staticprivate

Determine variables within syntax tree.

Parameters
scriptIdxscript index
syntaxTreeNodesyntax tree node
globalVariablesglobal variables
localVariableslocal variables per script index

Definition at line 1012 of file Transpiler.cpp.

◆ gatherMethodCode()

void gatherMethodCode ( const vector< string > &  minitScriptExtensionsCode,
const string &  className,
int  registerLine,
unordered_map< string, vector< string >> &  methodCodeMap 
)
staticprivate

Gather method code.

Parameters
minitScriptExtensionsCodeMinitScript extensions code
classNameclass name
registerline register line
methodCodeMapmethod code map

Definition at line 1081 of file Transpiler.cpp.

◆ generateVariableAccess()

void generateVariableAccess ( MinitScript minitScript,
string &  generatedCode,
int  scriptConditionIdx,
int  scriptIdx,
const string &  variableName,
const string &  indent,
bool  getMethodArgumentVariable,
bool  getVariable,
bool  getVariableReference,
bool  setVariable,
bool  setVariableReference,
bool  setConstant,
const string &  returnValueStatement = "returnValue = ",
const string &  statementEnd = ";\n",
int  getArgumentIdx = 0,
int  setArgumentIdx = 1 
)
staticprivate

Generate variable access.

Parameters
minitScriptMinitScript instance
generatedCodegenerated code
scriptConditionIdxscript condition index
scriptIdxscript index
variableNamevariable name
accessNameaccess name
indentindent
getMethodArgumentVariableget method argument variable
getVariableissue get variable access
getVariableReferenceissue get variable reference access
setVariableset variable
setVariableReferenceset variable reference
setConstantset constant
returnValuereturn value
statementEndstatement end
getArgumentIdxget argument index
setArgumentIdxset argument index

Definition at line 1228 of file Transpiler.cpp.

◆ generateArrayAccessMethods()

void generateArrayAccessMethods ( MinitScript minitScript,
string &  generatedDefinitions,
const string &  minitScriptClassName,
int  scriptConditionIdx,
int  scriptIdx,
const string &  methodName,
const MinitScript::SyntaxTreeNode syntaxTree,
const MinitScript::Statement statement,
const unordered_map< string, vector< string >> &  methodCodeMap,
const unordered_set< string > &  allMethods,
bool  condition,
const vector< int > &  argumentIndices = {},
int  depth = 0 
)
staticprivate

Generate array access methods.

Parameters
minitScriptMinitScript instance
generatedDefinitionsgenerated definitions
minitScriptClassNameMinitScript class name
scriptConditionIdxscript condition index
scriptIdxscript index
methodNamemethod name
syntaxTreesyntax tree
statementstatement
methodCodeMapmethod code map
allMethodsall methods
conditioncondition
argumentIndicesargument indices stack
depthdepth

Definition at line 1432 of file Transpiler.cpp.

◆ generateEvaluateMemberAccessArrays()

void generateEvaluateMemberAccessArrays ( MinitScript minitScript,
vector< string > &  generatedDeclarations,
vector< string > &  generatedDefinitions 
)
staticprivate

Generate evaluate member access arrays.

Parameters
minitScriptMinitScript instance
generatedDeclarationsgenerated declarations
generatedDefinitionsgenerated definitions

Definition at line 1681 of file Transpiler.cpp.

◆ generateArrayMapSetVariable()

void generateArrayMapSetVariable ( MinitScript minitScript,
int  scriptConditionIdx,
int  scriptIdx,
const MinitScript::Variable variable,
const unordered_map< string, vector< string >> &  methodCodeMap,
const unordered_set< string > &  allMethods,
const string &  methodName,
bool  condition,
const string &  minitScriptClassName,
string &  generatedDefinitions,
int  depth = 0,
int  initializerDepth = 0,
const string &  postStatement = string() 
)
staticprivate

Generate array/map/set variable.

Parameters
minitScriptMinitScript instance
scriptConditionIdxscript condition index
scriptIdxscript index
variablevariable
methodCodeMapmethod code map
allMethodsall methods
methodNamemethod name
conditioncondition
minitScriptClassNameMinitScript class name
generatedDefinitionsgenerated definitions
depthdepth
initializerDepthinitializer depth
postStatementpost statement

Definition at line 1724 of file Transpiler.cpp.

◆ generateArrayMapSetInitializer()

void generateArrayMapSetInitializer ( MinitScript minitScript,
string &  generatedDefinitions,
int  scriptConditionIdx,
int  scriptIdx,
const string &  minitScriptClassName,
const string &  methodName,
const MinitScript::SyntaxTreeNode syntaxTree,
const MinitScript::Statement statement,
const unordered_map< string, vector< string >> &  methodCodeMap,
const unordered_set< string > &  allMethods,
bool  condition,
const vector< int > &  argumentIndices = {},
int  depth = 0 
)
staticprivate

Generate array/map/set variable.

Parameters
minitScriptMinitScript instance
generatedDefinitionsgenerated definitions
scriptConditionIdxscript condition index
scriptIdxscript index
minitScriptClassNameMinitScript class name
methodNamemethod name
syntaxTreesyntax tree
statementstatement
methodCodeMapmethod code map
allMethodsall methods
conditioncondition
argumentIndicesargument indices
depthdepth

Definition at line 1947 of file Transpiler.cpp.

◆ transpileStatement()

bool transpileStatement ( MinitScript minitScript,
string &  generatedCode,
const MinitScript::SyntaxTreeNode syntaxTree,
const MinitScript::Statement statement,
int  scriptConditionIdx,
int  scriptIdx,
int &  statementIdx,
const unordered_map< string, vector< string >> &  methodCodeMap,
const unordered_set< string > &  allMethods,
bool &  scriptStateChanged,
bool &  scriptStopped,
vector< string > &  enabledNamedConditions,
int  depth = 0,
const vector< int > &  argumentIndices = {},
const string &  returnValue = string(),
const string &  injectCode = string(),
int  additionalIndent = 0 
)
staticprivate

Transpile statement.

Parameters
minitScriptMinitScript instance
generatedCodegenerated code
syntaxTreesyntax tree
statementscript statement
scriptConditionIdxscript condition index
scriptIdxscript index
statementIdxstatement index
methodCodeMapmethod code map
allMethodsall methods
scriptStateChangedscript could have state changed
scriptStoppedscript could have been stopped
enabledNamedConditionsenabled named conditions
depthdepth
argumentIndicesargument indices
returnValuereturn value
injectCodecode to additionally inject
additionalIndentadditional indent

Definition at line 2065 of file Transpiler.cpp.

◆ transpile() [2/2]

bool transpile ( MinitScript minitScript,
const string &  className,
string &  generatedCode,
int  scriptIdx,
const unordered_map< string, vector< string >> &  methodCodeMap,
const unordered_set< string > &  allMethods 
)
staticprivate

Transpile a script statement.

Parameters
minitScriptMinitScript instance
classNameMinitScript class name
generatedCodegenerated code
scriptIdxscript index
methodCodeMapmethod code map
allMethodsall methods
Returns
success

Definition at line 2705 of file Transpiler.cpp.

◆ transpileCondition()

bool transpileCondition ( MinitScript minitScript,
string &  generatedCode,
int  scriptIdx,
const unordered_map< string, vector< string >> &  methodCodeMap,
const unordered_set< string > &  allMethods,
const string &  returnValue,
const string &  injectCode,
int  depth = 0 
)
staticprivate

Transpile a condition.

Parameters
minitScriptMinitScript instance
generatedCodegenerated code
scriptIdxscript index
methodCodeMapmethod code map
allMethodsall methods
returnValuereturn value
injectCodeinject code
Returns
success

Definition at line 2809 of file Transpiler.cpp.

◆ createSourceCode() [2/3]

const string createSourceCode ( const MinitScript::SyntaxTreeNode syntaxTreeNode)
staticprivate

Create source code for given syntax tree node.

Parameters
syntaxTreeNodesyntax tree node

Definition at line 2853 of file Transpiler.cpp.

◆ createSourceCode() [3/3]

const string createSourceCode ( MinitScript::Script::Type  scriptType,
const string &  condition,
const vector< MinitScript::Script::Argument > &  functionArguments,
const string &  name,
const MinitScript::SyntaxTreeNode conditionSyntaxTree,
const vector< MinitScript::SyntaxTreeNode > &  syntaxTree 
)
staticprivate

Create source code for given syntax tree.

Parameters
scriptTypescript type
conditioncondition
functionArgumentsfunction arguments
namename of named conditions
conditionSyntaxTreecondition syntax tree
syntaxTreesyntax tree

Definition at line 2907 of file Transpiler.cpp.


The documentation for this class was generated from the following files: