|
@@ -116,39 +116,29 @@ public class SnuviParser
|
|
// bit
|
|
// bit
|
|
// -------------------------------------------------------------------------------
|
|
// -------------------------------------------------------------------------------
|
|
|
|
|
|
- registerFunction("bit.rightshiftn", (args, qd) ->
|
|
|
|
- ((Fraction) args[0]).rightShiftNumerator(getInt(args[1])));
|
|
|
|
- registerFunction("bit.rightshiftd", (args, qd) ->
|
|
|
|
- ((Fraction) args[0]).rightShiftDenominator(getInt(args[1])));
|
|
|
|
- registerFunction("bit.leftshiftn", (args, qd) ->
|
|
|
|
- ((Fraction) args[0]).leftShiftNumerator(getInt(args[1])));
|
|
|
|
- registerFunction("bit.leftshiftd", (args, qd) ->
|
|
|
|
- ((Fraction) args[0]).leftShiftDenominator(getInt(args[1])));
|
|
|
|
- registerFunction("bit.and", (args, qd) ->
|
|
|
|
|
|
+ registerFunction(">>", (args, qd) ->
|
|
|
|
+ ((Fraction) args[0]).rightShift(getInt(args[1])));
|
|
|
|
+ registerFunction("<<", (args, qd) ->
|
|
|
|
+ ((Fraction) args[0]).leftShift(getInt(args[1])));
|
|
|
|
+ registerFunction("&", (args, qd) ->
|
|
((Fraction) args[0]).and((Fraction) args[1]));
|
|
((Fraction) args[0]).and((Fraction) args[1]));
|
|
- registerFunction("bit.or", (args, qd) ->
|
|
|
|
|
|
+ registerFunction("|", (args, qd) ->
|
|
((Fraction) args[0]).or((Fraction) args[1]));
|
|
((Fraction) args[0]).or((Fraction) args[1]));
|
|
- registerFunction("bit.xor", (args, qd) ->
|
|
|
|
|
|
+ registerFunction("^", (args, qd) ->
|
|
((Fraction) args[0]).xor((Fraction) args[1]));
|
|
((Fraction) args[0]).xor((Fraction) args[1]));
|
|
- registerFunction("bit.invert", (args, qd) ->
|
|
|
|
- ((Fraction) args[0]).invert());
|
|
|
|
- registerFunction("bit.setn", (args, qd) ->
|
|
|
|
- ((Fraction) args[0]).setNumeratorBit(getInt(args[1])));
|
|
|
|
- registerFunction("bit.setd", (args, qd) ->
|
|
|
|
- ((Fraction) args[0]).setDenominatorBit(getInt(args[1])));
|
|
|
|
- registerFunction("bit.unsetn", (args, qd) ->
|
|
|
|
- ((Fraction) args[0]).unsetNumeratorBit(getInt(args[1])));
|
|
|
|
- registerFunction("bit.unsetd", (args, qd) ->
|
|
|
|
- ((Fraction) args[0]).unsetDenominatorBit(getInt(args[1])));
|
|
|
|
- registerFunction("bit.getn", (args, qd) ->
|
|
|
|
- ((Fraction) args[0]).getNumeratorBit(getInt(args[1])));
|
|
|
|
- registerFunction("bit.getd", (args, qd) ->
|
|
|
|
- ((Fraction) args[0]).getDenominatorBit(getInt(args[1])));
|
|
|
|
|
|
+ registerFunction("~", (args, qd) ->
|
|
|
|
+ ((Fraction) args[0]).invertBits());
|
|
|
|
+ registerFunction("bit.set", (args, qd) ->
|
|
|
|
+ ((Fraction) args[0]).setBit(getInt(args[1])));
|
|
|
|
+ registerFunction("bit.unset", (args, qd) ->
|
|
|
|
+ ((Fraction) args[0]).unsetBit(getInt(args[1])));
|
|
|
|
+ registerFunction("bit.get", (args, qd) ->
|
|
|
|
+ ((Fraction) args[0]).getBit(getInt(args[1])));
|
|
|
|
|
|
// -------------------------------------------------------------------------------
|
|
// -------------------------------------------------------------------------------
|
|
// math
|
|
// math
|
|
// -------------------------------------------------------------------------------
|
|
// -------------------------------------------------------------------------------
|
|
- registerFunction("math.mod", (args, sc) ->
|
|
|
|
|
|
+ registerFunction("%", (args, sc) ->
|
|
new Fraction(getInt(args[0]) % getInt(args[1])));
|
|
new Fraction(getInt(args[0]) % getInt(args[1])));
|
|
registerFunction("math.abs", (args, sc) ->
|
|
registerFunction("math.abs", (args, sc) ->
|
|
((Fraction) args[0]).abs());
|
|
((Fraction) args[0]).abs());
|
|
@@ -596,19 +586,19 @@ public class SnuviParser
|
|
sc.jump());
|
|
sc.jump());
|
|
registerFunction("==", (args, sc) ->
|
|
registerFunction("==", (args, sc) ->
|
|
isEqual(args));
|
|
isEqual(args));
|
|
- registerFunction("less", (args, sc) ->
|
|
|
|
|
|
+ registerFunction("<", (args, sc) ->
|
|
((Fraction) args[0]).compareTo((Fraction) args[1]) < 0);
|
|
((Fraction) args[0]).compareTo((Fraction) args[1]) < 0);
|
|
- registerFunction("greater", (args, sc) ->
|
|
|
|
|
|
+ registerFunction(">", (args, sc) ->
|
|
((Fraction) args[0]).compareTo((Fraction) args[1]) > 0);
|
|
((Fraction) args[0]).compareTo((Fraction) args[1]) > 0);
|
|
- registerFunction("notequal", (args, sc) ->
|
|
|
|
|
|
+ registerFunction("!=", (args, sc) ->
|
|
!isEqual(args));
|
|
!isEqual(args));
|
|
- registerFunction("lessequal", (args, sc) ->
|
|
|
|
|
|
+ registerFunction("<=", (args, sc) ->
|
|
((Fraction) args[0]).compareTo((Fraction) args[1]) <= 0);
|
|
((Fraction) args[0]).compareTo((Fraction) args[1]) <= 0);
|
|
- registerFunction("greaterequal", (args, sc) ->
|
|
|
|
|
|
+ registerFunction(">=", (args, sc) ->
|
|
((Fraction) args[0]).compareTo((Fraction) args[1]) >= 0);
|
|
((Fraction) args[0]).compareTo((Fraction) args[1]) >= 0);
|
|
- registerFunction("invert", (args, sc) ->
|
|
|
|
|
|
+ registerFunction("!", (args, sc) ->
|
|
!((boolean) args[0]));
|
|
!((boolean) args[0]));
|
|
- registerFunction("and", (args, sc) ->
|
|
|
|
|
|
+ registerFunction("&&", (args, sc) ->
|
|
Arrays.stream(args).allMatch(s -> s.equals(true)));
|
|
Arrays.stream(args).allMatch(s -> s.equals(true)));
|
|
registerFunction("||", (args, sc) ->
|
|
registerFunction("||", (args, sc) ->
|
|
Arrays.stream(args).anyMatch(s -> s.equals(true)));
|
|
Arrays.stream(args).anyMatch(s -> s.equals(true)));
|
|
@@ -762,6 +752,7 @@ public class SnuviParser
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @SuppressWarnings(value = "unchecked")
|
|
public <T extends Script> T startScript(Class<T> c, String scriptName, String code, boolean b, Object... o)
|
|
public <T extends Script> T startScript(Class<T> c, String scriptName, String code, boolean b, Object... o)
|
|
{
|
|
{
|
|
try
|
|
try
|
|
@@ -966,6 +957,7 @@ public class SnuviParser
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @SuppressWarnings(value = "unchecked")
|
|
private void writeFile(Object[] args, Script sc)
|
|
private void writeFile(Object[] args, Script sc)
|
|
{
|
|
{
|
|
try
|
|
try
|
|
@@ -986,7 +978,8 @@ public class SnuviParser
|
|
throw new FileIOException(ex.getMessage());
|
|
throw new FileIOException(ex.getMessage());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- Files.write(Paths.get(f.toURI()), (List) args[1], StandardCharsets.UTF_8);
|
|
|
|
|
|
+ Files.write(Paths.get(f.toURI()), ((List<Object>) args[1])
|
|
|
|
+ .stream().map(o -> String.valueOf(o)).collect(Collectors.toList()), StandardCharsets.UTF_8);
|
|
}
|
|
}
|
|
catch(UnsupportedOperationException | SecurityException | IOException ex)
|
|
catch(UnsupportedOperationException | SecurityException | IOException ex)
|
|
{
|
|
{
|