- java.lang.Object
-
- com.github.The127.MScript.rt.MScriptRuntime
-
public final class MScriptRuntime extends java.lang.Object
This class provides a modular and dynamically generated runtime environment for MScript.
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
COMPILER_VERSION
The current compiler version.private static boolean
isAbsUsed
private static boolean
isAddUsed
private static boolean
isAndUsed
private static boolean
isBoolUsed
private static boolean
isCeilUsed
private static boolean
isConditionEvaluated
static boolean
isDebugEnabled
private static boolean
isDivUsed
private static boolean
isEqualUsed
private static boolean
isExpUsed
private static boolean
isFloorUsed
private static boolean
isFunctionCalled
private static boolean
isGreaterOrEqualUsed
private static boolean
isGreaterUsed
private static boolean
isLessOrEqualUsed
private static boolean
isLessUsed
private static boolean
isLogUsed
private static boolean
isMaxUsed
private static boolean
isMinUsed
private static boolean
isModUsed
private static boolean
isMulUsed
private static boolean
isNegateUsed
private static boolean
isNotEqualUsed
private static boolean
isNotUsed
private static boolean
isOrUsed
private static boolean
isRandUsed
private static boolean
isRetTrueFalseUsed
private static boolean
isRetUsed
private static boolean
isRoundUsed
private static boolean
isSqrtUsed
private static boolean
isSubUsed
private static boolean
isTruncUsed
private static boolean
isXorUsed
private static java.util.Set<java.lang.String>
labels
private static java.lang.String
LETTERS
private static int
Major
private static int
Minor
private static java.util.List<java.lang.String>
rtFunctionNames
private 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.String
abs()
private static java.lang.String
add()
private static java.lang.String
and()
private static java.lang.String
bool()
private static java.lang.String
ceil()
private static java.lang.String
compareOp(boolean isUsed, java.lang.String operation, java.lang.String opName)
private static java.lang.String
condition()
private static java.lang.String
createPushPopRegisters(int registersUsed, int maxParams)
static java.lang.String
createRuntime(int registersUsed, int maxParams)
Dynamically generates a string representation of the modular MScript runtime.static void
debugOutput()
static java.lang.String
destFunctionLabel(java.lang.String name)
Creates a destination label for a function.static java.lang.String
destGotoLabel(java.lang.String name)
Creates a destination label for a goto label.private static java.lang.String
destLabel(java.lang.String type, java.lang.String name)
private static java.lang.String
div()
private static java.lang.String
equal()
private static java.lang.String
exp()
private static java.lang.String
floor()
static java.lang.String
generateLabelName()
Generates a unique label name.static int
getParametersForRtFunction(java.lang.String name, FileContext ctx)
private static java.lang.String
greater()
private static java.lang.String
greaterOrEqual()
static boolean
isRtFunctionName(java.lang.String name)
private static java.lang.String
jFalse()
private static java.lang.String
jRet()
private static java.lang.String
jTrue()
private static java.lang.String
label(java.lang.String target, java.lang.String type, java.lang.String name)
private static java.lang.String
less()
private static java.lang.String
lessOrEqual()
private static java.lang.String
log()
private static java.lang.String
max()
private static java.lang.String
min()
private static java.lang.String
mod()
private static java.lang.String
mul()
private static java.lang.String
negate()
private static java.lang.String
noOperator(boolean isUsed, java.lang.String operation)
private static java.lang.String
not()
private static java.lang.String
notEqual()
private static java.lang.String
oneOperator(boolean isUsed, java.lang.String operation)
private static java.lang.String
or()
private static java.lang.String
rand()
private static java.lang.String
ret()
private static java.lang.String
retTrueFalse()
private static java.lang.String
round()
static java.lang.String
sourceFunctionLabel(java.lang.String name)
Creates a source label for a function.static java.lang.String
sourceGotoLabel(java.lang.String name)
Creates a source label for a goto label.private static java.lang.String
sourceLabel(java.lang.String type, java.lang.String name)
private static java.lang.String
sqrt()
private static java.lang.String
sub()
private static java.lang.String
trunc()
private static java.lang.String
twoOperator(boolean isUsed, java.lang.String operation)
private static java.lang.String
twoOpLogic(boolean isUsed, java.lang.String operation)
private static java.lang.String
xor()
-
-
-
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.
-
-