mirror of
https://github.com/aNNiMON/Own-Programming-Language-Tutorial.git
synced 2024-09-20 08:44:20 +03:00
74 lines
2.3 KiB
Java
74 lines
2.3 KiB
Java
package com.annimon.ownlang.parser.ast;
|
|
|
|
import com.annimon.ownlang.lib.NumberValue;
|
|
import com.annimon.ownlang.lib.StringValue;
|
|
import com.annimon.ownlang.lib.Types;
|
|
import com.annimon.ownlang.lib.Value;
|
|
import static org.junit.Assert.*;
|
|
|
|
/**
|
|
* Helper for build and test AST nodes.
|
|
* @author aNNiMON
|
|
*/
|
|
public final class ASTHelper {
|
|
|
|
public static void assertValue(NumberValue expected, Value actual) {
|
|
assertEquals(Types.NUMBER, actual.type());
|
|
if (expected.raw() instanceof Double) {
|
|
assertEquals(expected.asNumber(), actual.asNumber(), 0.001);
|
|
}
|
|
assertEquals(expected.asInt(), actual.asInt());
|
|
}
|
|
|
|
public static void assertValue(StringValue expected, Value actual) {
|
|
assertEquals(Types.STRING, actual.type());
|
|
assertEquals(expected.asString(), actual.asString());
|
|
}
|
|
|
|
|
|
public static BlockStatement block(Statement... statements) {
|
|
final BlockStatement result = new BlockStatement();
|
|
for (Statement statement : statements) {
|
|
result.add(statement);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
public static AssignmentExpression assign(String variable, Expression expr) {
|
|
return assign(var(variable), expr);
|
|
}
|
|
|
|
public static AssignmentExpression assign(Accessible accessible, Expression expr) {
|
|
return assign(null, accessible, expr);
|
|
}
|
|
|
|
public static AssignmentExpression assign(BinaryExpression.Operator op, Accessible accessible, Expression expr) {
|
|
return new AssignmentExpression(op, accessible, expr);
|
|
}
|
|
|
|
public static BinaryExpression operator(BinaryExpression.Operator op, Expression left, Expression right) {
|
|
return new BinaryExpression(op, left, right);
|
|
}
|
|
|
|
public static ValueExpression value(Number value) {
|
|
return new ValueExpression(value);
|
|
}
|
|
|
|
public static ValueExpression value(String value) {
|
|
return new ValueExpression(value);
|
|
}
|
|
|
|
public static VariableExpression var(String value) {
|
|
return new VariableExpression(value);
|
|
}
|
|
|
|
|
|
public static NumberValue number(Number value) {
|
|
return new NumberValue(value);
|
|
}
|
|
|
|
public static StringValue string(String value) {
|
|
return new StringValue(value);
|
|
}
|
|
}
|