permissions and access of expression functions, fixes #157
This commit is contained in:
1 parent
ba96b1b034
commit
bb0d856706
2 files changed
+36
-36
No files matched your search
@@ -389,7 +389,7 @@ public class CarpetExpression
|
||||
}
|
||||
}
|
||||
|
||||
public void API_BlockManipulation()
|
||||
private void API_BlockManipulation()
|
||||
{
|
||||
this.expr.addLazyFunction("block", -1, (c, t, lv) ->
|
||||
{
|
||||
@@ -1261,7 +1261,7 @@ public class CarpetExpression
|
||||
|
||||
}
|
||||
|
||||
public void API_Scoreboard()
|
||||
private void API_Scoreboard()
|
||||
{
|
||||
// scoreboard(player,'objective')
|
||||
// scoreboard(player, objective, newValue)
|
||||
@@ -1374,7 +1374,7 @@ public class CarpetExpression
|
||||
});
|
||||
}
|
||||
|
||||
public void API_InventoryManipulation()
|
||||
private void API_InventoryManipulation()
|
||||
{
|
||||
this.expr.addLazyFunction("stack_limit", 1, (c, t, lv) ->
|
||||
{
|
||||
@@ -1646,7 +1646,7 @@ public class CarpetExpression
|
||||
}
|
||||
}
|
||||
|
||||
public void API_EntityManipulation()
|
||||
private void API_EntityManipulation()
|
||||
{
|
||||
this.expr.addLazyFunction("player", -1, (c, t, lv) -> {
|
||||
if (lv.size() ==0)
|
||||
@@ -1908,7 +1908,7 @@ public class CarpetExpression
|
||||
});
|
||||
}
|
||||
|
||||
public void API_IteratingOverAreasOfBlocks()
|
||||
private void API_IteratingOverAreasOfBlocks()
|
||||
{
|
||||
this.expr.addLazyFunction("scan", -1, (c, t, lv) ->
|
||||
{
|
||||
@@ -2347,7 +2347,7 @@ public class CarpetExpression
|
||||
});
|
||||
}
|
||||
|
||||
public void API_AuxiliaryAspects()
|
||||
private void API_AuxiliaryAspects()
|
||||
{
|
||||
this.expr.addLazyFunction("sound", -1, (c, t, lv) -> {
|
||||
CarpetContext cc = (CarpetContext)c;
|
||||
|
||||
@@ -79,12 +79,12 @@ public class Expression
|
||||
put("def->", 2);
|
||||
put("nextop;", 1);
|
||||
}};
|
||||
protected static final Random randomizer = new Random();
|
||||
public static final Random randomizer = new Random();
|
||||
|
||||
static final Value PI = new NumericValue(
|
||||
public static final Value PI = new NumericValue(
|
||||
"3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679");
|
||||
|
||||
static final Value euler = new NumericValue(
|
||||
public static final Value euler = new NumericValue(
|
||||
"2.71828182845904523536028747135266249775724709369995957496696762772407663");
|
||||
|
||||
// %[argument_index$][flags][width][.precision][t]conversion
|
||||
@@ -105,13 +105,13 @@ public class Expression
|
||||
}
|
||||
|
||||
|
||||
void asATextSource()
|
||||
public void asATextSource()
|
||||
{
|
||||
allowNewlineSubstitutions = false;
|
||||
allowComments = true;
|
||||
}
|
||||
|
||||
void asAModule(Module mi)
|
||||
public void asAModule(Module mi)
|
||||
{
|
||||
|
||||
module = mi;
|
||||
@@ -122,7 +122,7 @@ public class Expression
|
||||
|
||||
/** script specific operatos and built-in functions */
|
||||
private final Map<String, ILazyOperator> operators = new Object2ObjectOpenHashMap<>();
|
||||
boolean isAnOperator(String opname) { return operators.containsKey(opname) || operators.containsKey(opname+"u");}
|
||||
public boolean isAnOperator(String opname) { return operators.containsKey(opname) || operators.containsKey(opname+"u");}
|
||||
|
||||
private final Map<String, ILazyFunction> functions = new Object2ObjectOpenHashMap<>();
|
||||
public Set<String> getFunctionNames() {return functions.keySet();}
|
||||
@@ -187,7 +187,7 @@ public class Expression
|
||||
}
|
||||
|
||||
|
||||
private void addLazyUnaryOperator(String surface, int precedence, boolean leftAssoc,
|
||||
public void addLazyUnaryOperator(String surface, int precedence, boolean leftAssoc,
|
||||
TriFunction<Context, Integer, LazyValue, LazyValue> lazyfun)
|
||||
{
|
||||
operators.put(surface+"u", new AbstractLazyOperator(precedence, leftAssoc)
|
||||
@@ -213,7 +213,7 @@ public class Expression
|
||||
}
|
||||
|
||||
|
||||
private void addLazyBinaryOperatorWithDelegation(String surface, int precedence, boolean leftAssoc,
|
||||
public void addLazyBinaryOperatorWithDelegation(String surface, int precedence, boolean leftAssoc,
|
||||
SexFunction<Context, Integer, Expression, Tokenizer.Token, LazyValue, LazyValue, LazyValue> lazyfun)
|
||||
{
|
||||
operators.put(surface, new AbstractLazyOperator(precedence, leftAssoc)
|
||||
@@ -234,7 +234,7 @@ public class Expression
|
||||
});
|
||||
}
|
||||
|
||||
private void addLazyFunctionWithDelegation(String name, int numpar,
|
||||
public void addLazyFunctionWithDelegation(String name, int numpar,
|
||||
QuinnFunction<Context, Integer, Expression, Tokenizer.Token, List<LazyValue>, LazyValue> lazyfun)
|
||||
{
|
||||
functions.put(name, new AbstractLazyFunction(numpar)
|
||||
@@ -254,7 +254,7 @@ public class Expression
|
||||
});
|
||||
}
|
||||
|
||||
private void addLazyBinaryOperator(String surface, int precedence, boolean leftAssoc,
|
||||
public void addLazyBinaryOperator(String surface, int precedence, boolean leftAssoc,
|
||||
QuadFunction<Context, Integer, LazyValue, LazyValue, LazyValue> lazyfun)
|
||||
{
|
||||
operators.put(surface, new AbstractLazyOperator(precedence, leftAssoc)
|
||||
@@ -275,7 +275,7 @@ public class Expression
|
||||
});
|
||||
}
|
||||
|
||||
static RuntimeException handleCodeException(Context c, RuntimeException exc, Expression e, Tokenizer.Token token)
|
||||
public static RuntimeException handleCodeException(Context c, RuntimeException exc, Expression e, Tokenizer.Token token)
|
||||
{
|
||||
if (exc instanceof ExitStatement)
|
||||
return exc;
|
||||
@@ -290,7 +290,7 @@ public class Expression
|
||||
return new ExpressionException(c, e, token, "Error while evaluating expression: "+exc);
|
||||
}
|
||||
|
||||
private void addUnaryOperator(String surface, boolean leftAssoc, Function<Value, Value> fun)
|
||||
public void addUnaryOperator(String surface, boolean leftAssoc, Function<Value, Value> fun)
|
||||
{
|
||||
operators.put(surface+"u", new AbstractUnaryOperator(precedence.get("unary+-!"), leftAssoc)
|
||||
{
|
||||
@@ -302,7 +302,7 @@ public class Expression
|
||||
});
|
||||
}
|
||||
|
||||
private void addBinaryOperator(String surface, int precedence, boolean leftAssoc, BiFunction<Value, Value, Value> fun)
|
||||
public void addBinaryOperator(String surface, int precedence, boolean leftAssoc, BiFunction<Value, Value, Value> fun)
|
||||
{
|
||||
operators.put(surface, new AbstractOperator(precedence, leftAssoc)
|
||||
{
|
||||
@@ -316,7 +316,7 @@ public class Expression
|
||||
}
|
||||
|
||||
|
||||
private void addUnaryFunction(String name, Function<Value, Value> fun)
|
||||
public void addUnaryFunction(String name, Function<Value, Value> fun)
|
||||
{
|
||||
name = name.toLowerCase(Locale.ROOT);
|
||||
functions.put(name, new AbstractFunction(1)
|
||||
@@ -329,7 +329,7 @@ public class Expression
|
||||
});
|
||||
}
|
||||
|
||||
void addBinaryFunction(String name, BiFunction<Value, Value, Value> fun)
|
||||
public void addBinaryFunction(String name, BiFunction<Value, Value, Value> fun)
|
||||
{
|
||||
name = name.toLowerCase(Locale.ROOT);
|
||||
functions.put(name, new AbstractFunction(2)
|
||||
@@ -345,7 +345,7 @@ public class Expression
|
||||
});
|
||||
}
|
||||
|
||||
private void addFunction(String name, Function<List<Value>, Value> fun)
|
||||
public void addFunction(String name, Function<List<Value>, Value> fun)
|
||||
{
|
||||
name = name.toLowerCase(Locale.ROOT);
|
||||
functions.put(name, new AbstractFunction(-1)
|
||||
@@ -360,19 +360,19 @@ public class Expression
|
||||
});
|
||||
}
|
||||
|
||||
private void addMathematicalUnaryFunction(String name, Function<Double, Double> fun)
|
||||
public void addMathematicalUnaryFunction(String name, Function<Double, Double> fun)
|
||||
{
|
||||
addUnaryFunction(name, (v) -> new NumericValue(fun.apply(NumericValue.asNumber(v).getDouble())));
|
||||
}
|
||||
|
||||
private void addMathematicalBinaryFunction(String name, BiFunction<Double, Double, Double> fun)
|
||||
public void addMathematicalBinaryFunction(String name, BiFunction<Double, Double, Double> fun)
|
||||
{
|
||||
addBinaryFunction(name, (w, v) ->
|
||||
new NumericValue(fun.apply(NumericValue.asNumber(w).getDouble(), NumericValue.asNumber(v).getDouble())));
|
||||
}
|
||||
|
||||
|
||||
void addLazyFunction(String name, int num_params, TriFunction<Context, Integer, List<LazyValue>, LazyValue> fun)
|
||||
public void addLazyFunction(String name, int num_params, TriFunction<Context, Integer, List<LazyValue>, LazyValue> fun)
|
||||
{
|
||||
name = name.toLowerCase(Locale.ROOT);
|
||||
functions.put(name, new AbstractLazyFunction(num_params)
|
||||
@@ -391,7 +391,7 @@ public class Expression
|
||||
}
|
||||
});
|
||||
}
|
||||
private FunctionValue addContextFunction(Context context, String name, Expression expr, Tokenizer.Token token, List<String> arguments, List<String> outers, LazyValue code)
|
||||
public FunctionValue addContextFunction(Context context, String name, Expression expr, Tokenizer.Token token, List<String> arguments, List<String> outers, LazyValue code)
|
||||
{
|
||||
name = name.toLowerCase(Locale.ROOT);
|
||||
if (functions.containsKey(name))
|
||||
@@ -417,7 +417,7 @@ public class Expression
|
||||
return result;
|
||||
}
|
||||
|
||||
public void UserDefinedFunctionsAndControlFlow() // public just to get the javadoc right
|
||||
private void UserDefinedFunctionsAndControlFlow() // public just to get the javadoc right
|
||||
{
|
||||
// artificial construct to handle user defined functions and function definitions
|
||||
addLazyFunction("import", -1, (c, t, lv) ->
|
||||
@@ -549,7 +549,7 @@ public class Expression
|
||||
});
|
||||
}
|
||||
|
||||
public void Operators()
|
||||
private void Operators()
|
||||
{
|
||||
addBinaryOperator("+", precedence.get("addition+-"), true, Value::add);
|
||||
addBinaryOperator("-", precedence.get("addition+-"), true, Value::subtract);
|
||||
@@ -724,7 +724,7 @@ public class Expression
|
||||
|
||||
}
|
||||
|
||||
public void ArithmeticOperations()
|
||||
private void ArithmeticOperations()
|
||||
{
|
||||
addLazyFunction("not", 1, (c, t, lv) -> lv.get(0).evalValue(c, Context.BOOLEAN).getBoolean() ? ((cc, tt) -> Value.FALSE) : ((cc, tt) -> Value.TRUE));
|
||||
|
||||
@@ -825,7 +825,7 @@ public class Expression
|
||||
addUnaryFunction("relu", (v) -> v.compareTo(Value.ZERO) < 0 ? Value.ZERO : v);
|
||||
}
|
||||
|
||||
public void LoopsAndHigherOrderFunctions()
|
||||
private void LoopsAndHigherOrderFunctions()
|
||||
{
|
||||
// condition and expression will get a bound '_i'
|
||||
// returns last successful expression or false
|
||||
@@ -1217,7 +1217,7 @@ public class Expression
|
||||
});
|
||||
}
|
||||
|
||||
public void BasicDataStructures()
|
||||
private void BasicDataStructures()
|
||||
{
|
||||
addFunction("l", lv ->
|
||||
{
|
||||
@@ -1523,7 +1523,7 @@ public class Expression
|
||||
});
|
||||
}
|
||||
|
||||
public void SystemFunctions()
|
||||
private void SystemFunctions()
|
||||
{
|
||||
addUnaryFunction("hash_code", v -> new NumericValue(v.hashCode()));
|
||||
|
||||
@@ -1966,7 +1966,7 @@ public class Expression
|
||||
}
|
||||
}
|
||||
|
||||
private LazyValue getOrSetAnyVariable(Context c, String name)
|
||||
public LazyValue getOrSetAnyVariable(Context c, String name)
|
||||
{
|
||||
LazyValue var = null;
|
||||
if (!name.startsWith("global_"))
|
||||
@@ -2166,11 +2166,11 @@ public class Expression
|
||||
}
|
||||
}
|
||||
|
||||
Value eval(Context c)
|
||||
public Value eval(Context c)
|
||||
{
|
||||
return eval(c, Context.NONE);
|
||||
}
|
||||
private Value eval(Context c, Integer expectedType)
|
||||
public Value eval(Context c, Integer expectedType)
|
||||
{
|
||||
if (ast == null)
|
||||
{
|
||||
@@ -2179,7 +2179,7 @@ public class Expression
|
||||
return evalValue(() -> ast, c, expectedType);
|
||||
}
|
||||
|
||||
Value evalValue(Supplier<LazyValue> exprProvider, Context c, Integer expectedType)
|
||||
public Value evalValue(Supplier<LazyValue> exprProvider, Context c, Integer expectedType)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user