- java.lang.Object
-
- com.github.The127.MScript.rt.MScriptRuntime
-
public final class MScriptRuntime extends java.lang.ObjectThis class provides a modular and dynamically generated runtime environment for MScript.
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringCOMPILER_VERSIONThe current compiler version.private static booleanisAbsUsedprivate static booleanisAddUsedprivate static booleanisAndUsedprivate static booleanisBoolUsedprivate static booleanisCeilUsedprivate static booleanisConditionEvaluatedstatic booleanisDebugEnabledprivate static booleanisDivUsedprivate static booleanisEqualUsedprivate static booleanisExpUsedprivate static booleanisFloorUsedprivate static booleanisFunctionCalledprivate static booleanisGreaterOrEqualUsedprivate static booleanisGreaterUsedprivate static booleanisLessOrEqualUsedprivate static booleanisLessUsedprivate static booleanisLogUsedprivate static booleanisMaxUsedprivate static booleanisMinUsedprivate static booleanisModUsedprivate static booleanisMulUsedprivate static booleanisNegateUsedprivate static booleanisNotEqualUsedprivate static booleanisNotUsedprivate static booleanisOrUsedprivate static booleanisRandUsedprivate static booleanisRetTrueFalseUsedprivate static booleanisRetUsedprivate static booleanisRoundUsedprivate static booleanisSqrtUsedprivate static booleanisSubUsedprivate static booleanisTruncUsedprivate static booleanisXorUsedprivate static java.util.Set<java.lang.String>labelsprivate static java.lang.StringLETTERSprivate static intMajorprivate static intMinorprivate static java.util.List<java.lang.String>rtFunctionNamesprivate static int[]rtFunctionParameterCount
-
Constructor Summary
Constructors Constructor Description MScriptRuntime()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description private static java.lang.Stringabs()private static java.lang.Stringadd()private static java.lang.Stringand()private static java.lang.Stringbool()private static java.lang.Stringceil()private static java.lang.StringcompareOp(boolean isUsed, java.lang.String operation, java.lang.String opName)private static java.lang.Stringcondition()private static java.lang.StringcreatePushPopRegisters(int registersUsed, int maxParams)static java.lang.StringcreateRuntime(int registersUsed, int maxParams)Dynamically generates a string representation of the modular MScript runtime.static voiddebugOutput()static java.lang.StringdestFunctionLabel(java.lang.String name)Creates a destination label for a function.static java.lang.StringdestGotoLabel(java.lang.String name)Creates a destination label for a goto label.private static java.lang.StringdestLabel(java.lang.String type, java.lang.String name)private static java.lang.Stringdiv()private static java.lang.Stringequal()private static java.lang.Stringexp()private static java.lang.Stringfloor()static java.lang.StringgenerateLabelName()Generates a unique label name.static intgetParametersForRtFunction(java.lang.String name, FileContext ctx)private static java.lang.Stringgreater()private static java.lang.StringgreaterOrEqual()static booleanisRtFunctionName(java.lang.String name)private static java.lang.StringjFalse()private static java.lang.StringjRet()private static java.lang.StringjTrue()private static java.lang.Stringlabel(java.lang.String target, java.lang.String type, java.lang.String name)private static java.lang.Stringless()private static java.lang.StringlessOrEqual()private static java.lang.Stringlog()private static java.lang.Stringmax()private static java.lang.Stringmin()private static java.lang.Stringmod()private static java.lang.Stringmul()private static java.lang.Stringnegate()private static java.lang.StringnoOperator(boolean isUsed, java.lang.String operation)private static java.lang.Stringnot()private static java.lang.StringnotEqual()private static java.lang.StringoneOperator(boolean isUsed, java.lang.String operation)private static java.lang.Stringor()private static java.lang.Stringrand()private static java.lang.Stringret()private static java.lang.StringretTrueFalse()private static java.lang.Stringround()static java.lang.StringsourceFunctionLabel(java.lang.String name)Creates a source label for a function.static java.lang.StringsourceGotoLabel(java.lang.String name)Creates a source label for a goto label.private static java.lang.StringsourceLabel(java.lang.String type, java.lang.String name)private static java.lang.Stringsqrt()private static java.lang.Stringsub()private static java.lang.Stringtrunc()private static java.lang.StringtwoOperator(boolean isUsed, java.lang.String operation)private static java.lang.StringtwoOpLogic(boolean isUsed, java.lang.String operation)private static java.lang.Stringxor()
-
-
-
Field Detail
-
Major
private static final int Major
- See Also:
- Constant Field Values
-
Minor
private static final int Minor
- See Also:
- Constant Field Values
-
COMPILER_VERSION
public static final java.lang.String COMPILER_VERSION
The current compiler version.- See Also:
- Constant Field Values
-
LETTERS
private static final java.lang.String LETTERS
- See Also:
- Constant Field Values
-
labels
private static java.util.Set<java.lang.String> labels
-
isDebugEnabled
public static boolean isDebugEnabled
-
isAddUsed
private static boolean isAddUsed
-
isSubUsed
private static boolean isSubUsed
-
isDivUsed
private static boolean isDivUsed
-
isMulUsed
private static boolean isMulUsed
-
isModUsed
private static boolean isModUsed
-
isNegateUsed
private static boolean isNegateUsed
-
isNotUsed
private static boolean isNotUsed
-
isAndUsed
private static boolean isAndUsed
-
isOrUsed
private static boolean isOrUsed
-
isXorUsed
private static boolean isXorUsed
-
isLessUsed
private static boolean isLessUsed
-
isLessOrEqualUsed
private static boolean isLessOrEqualUsed
-
isGreaterUsed
private static boolean isGreaterUsed
-
isGreaterOrEqualUsed
private static boolean isGreaterOrEqualUsed
-
isEqualUsed
private static boolean isEqualUsed
-
isNotEqualUsed
private static boolean isNotEqualUsed
-
isFloorUsed
private static boolean isFloorUsed
-
isCeilUsed
private static boolean isCeilUsed
-
isRoundUsed
private static boolean isRoundUsed
-
isBoolUsed
private static boolean isBoolUsed
-
isAbsUsed
private static boolean isAbsUsed
-
isLogUsed
private static boolean isLogUsed
-
isMaxUsed
private static boolean isMaxUsed
-
isMinUsed
private static boolean isMinUsed
-
isRandUsed
private static boolean isRandUsed
-
isTruncUsed
private static boolean isTruncUsed
-
isSqrtUsed
private static boolean isSqrtUsed
-
isExpUsed
private static boolean isExpUsed
-
isFunctionCalled
private static boolean isFunctionCalled
-
isConditionEvaluated
private static boolean isConditionEvaluated
-
isRetUsed
private static boolean isRetUsed
-
isRetTrueFalseUsed
private static boolean isRetTrueFalseUsed
-
rtFunctionNames
private static final java.util.List<java.lang.String> rtFunctionNames
-
rtFunctionParameterCount
private static final int[] rtFunctionParameterCount
-
-
Method Detail
-
debugOutput
public static void debugOutput()
-
getParametersForRtFunction
public static int getParametersForRtFunction(java.lang.String name, FileContext ctx)- Parameters:
name- The name of the internal runtime function.ctx- The file context for better error handling.- Returns:
- The amount of parameters for the specified runtime internal function.
-
isRtFunctionName
public static boolean isRtFunctionName(java.lang.String name)
- Parameters:
name- The name of the internal runtime function.- Returns:
- True if the provided name is the name of an internal runtime function.
-
createRuntime
public static java.lang.String createRuntime(int registersUsed, int maxParams)Dynamically generates a string representation of the modular MScript runtime.- Parameters:
registersUsed- The amount of maximum registers used by function parameters and variables.- Returns:
- The runtime for the script.
-
createPushPopRegisters
private static java.lang.String createPushPopRegisters(int registersUsed, int maxParams)
-
twoOperator
private static java.lang.String twoOperator(boolean isUsed, java.lang.String operation)
-
oneOperator
private static java.lang.String oneOperator(boolean isUsed, java.lang.String operation)
-
noOperator
private static java.lang.String noOperator(boolean isUsed, java.lang.String operation)
-
compareOp
private static java.lang.String compareOp(boolean isUsed, java.lang.String operation, java.lang.String opName)
-
less
private static java.lang.String less()
-
lessOrEqual
private static java.lang.String lessOrEqual()
-
greater
private static java.lang.String greater()
-
greaterOrEqual
private static java.lang.String greaterOrEqual()
-
equal
private static java.lang.String equal()
-
notEqual
private static java.lang.String notEqual()
-
jTrue
private static java.lang.String jTrue()
-
jFalse
private static java.lang.String jFalse()
-
retTrueFalse
private static java.lang.String retTrueFalse()
-
twoOpLogic
private static java.lang.String twoOpLogic(boolean isUsed, java.lang.String operation)
-
and
private static java.lang.String and()
-
or
private static java.lang.String or()
-
xor
private static java.lang.String xor()
-
add
private static java.lang.String add()
-
sub
private static java.lang.String sub()
-
mul
private static java.lang.String mul()
-
div
private static java.lang.String div()
-
mod
private static java.lang.String mod()
-
max
private static java.lang.String max()
-
min
private static java.lang.String min()
-
negate
private static java.lang.String negate()
-
not
private static java.lang.String not()
-
floor
private static java.lang.String floor()
-
ceil
private static java.lang.String ceil()
-
round
private static java.lang.String round()
-
abs
private static java.lang.String abs()
-
log
private static java.lang.String log()
-
bool
private static java.lang.String bool()
-
rand
private static java.lang.String rand()
-
trunc
private static java.lang.String trunc()
-
sqrt
private static java.lang.String sqrt()
-
exp
private static java.lang.String exp()
-
jRet
private static java.lang.String jRet()
-
ret
private static java.lang.String ret()
-
condition
private static java.lang.String condition()
-
sourceFunctionLabel
public static java.lang.String sourceFunctionLabel(java.lang.String name)
Creates a source label for a function.- Parameters:
name- The function name.- Returns:
- a source label for the function.
-
sourceGotoLabel
public static java.lang.String sourceGotoLabel(java.lang.String name)
Creates a source label for a goto label.- Parameters:
name- The goto label name.- Returns:
- a source label for the goto label.
-
sourceLabel
private static java.lang.String sourceLabel(java.lang.String type, java.lang.String name)
-
destFunctionLabel
public static java.lang.String destFunctionLabel(java.lang.String name)
Creates a destination label for a function.- Parameters:
name- The function name.- Returns:
- a destination for the function.
-
destGotoLabel
public static java.lang.String destGotoLabel(java.lang.String name)
Creates a destination label for a goto label.- Parameters:
name- The goto label name.- Returns:
- a destinatino label for the goto label.
-
destLabel
private static java.lang.String destLabel(java.lang.String type, java.lang.String name)
-
label
private static java.lang.String label(java.lang.String target, java.lang.String type, java.lang.String name)
-
generateLabelName
public static java.lang.String generateLabelName()
Generates a unique label name.- Returns:
- a unique label name.
-
-