use of io.github.wysohn.triggerreactor.core.script.Token in project TriggerReactor by wysohn.
the class ParserTest method testFor.
@Test
public void testFor() throws Exception {
Charset charset = Charset.forName("UTF-8");
String text = "" + "FOR i = 0:10;" + " #MESSAGE \"test i=\"+i;" + "ENDFOR;";
Lexer lexer = new Lexer(text, charset);
Parser parser = new Parser(lexer);
Node root = parser.parse();
Queue<Node> queue = new LinkedList<Node>();
serializeNode(queue, root);
assertEquals(new Node(new Token(Type.THIS, "<This>")), queue.poll());
assertEquals(new Node(new Token(Type.ID, "i")), queue.poll());
assertEquals(new Node(new Token(Type.OPERATOR, ".")), queue.poll());
assertEquals(new Node(new Token(Type.INTEGER, "0")), queue.poll());
assertEquals(new Node(new Token(Type.INTEGER, "10")), queue.poll());
assertEquals(new Node(new Token(Type.ITERATOR, "<ITERATOR>")), queue.poll());
assertEquals(new Node(new Token(Type.STRING, "test i=")), queue.poll());
assertEquals(new Node(new Token(Type.THIS, "<This>")), queue.poll());
assertEquals(new Node(new Token(Type.ID, "i")), queue.poll());
assertEquals(new Node(new Token(Type.OPERATOR, ".")), queue.poll());
assertEquals(new Node(new Token(Type.OPERATOR_A, "+")), queue.poll());
assertEquals(new Node(new Token(Type.EXECUTOR, "MESSAGE")), queue.poll());
assertEquals(new Node(new Token(Type.BODY, "<BODY>")), queue.poll());
assertEquals(new Node(new Token(Type.ID, "FOR")), queue.poll());
assertEquals(new Node(new Token(Type.ROOT, "<ROOT>")), queue.poll());
assertEquals(0, queue.size());
}
use of io.github.wysohn.triggerreactor.core.script.Token in project TriggerReactor by wysohn.
the class ParserTest method testPlaceholder.
@Test
public void testPlaceholder() throws Exception {
Charset charset = Charset.forName("UTF-8");
String text = "" + "x = 10;" + "#MESSAGE $placeholdertest:0:x:5:true;";
Lexer lexer = new Lexer(text, charset);
Parser parser = new Parser(lexer);
Node root = parser.parse();
Queue<Node> queue = new LinkedList<Node>();
serializeNode(queue, root);
assertEquals(new Node(new Token(Type.THIS, "<This>")), queue.poll());
assertEquals(new Node(new Token(Type.ID, "x")), queue.poll());
assertEquals(new Node(new Token(Type.OPERATOR, ".")), queue.poll());
assertEquals(new Node(new Token(Type.INTEGER, "10")), queue.poll());
assertEquals(new Node(new Token(Type.OPERATOR, "=")), queue.poll());
assertEquals(new Node(new Token(Type.INTEGER, "0")), queue.poll());
assertEquals(new Node(new Token(Type.THIS, "<This>")), queue.poll());
assertEquals(new Node(new Token(Type.ID, "x")), queue.poll());
assertEquals(new Node(new Token(Type.OPERATOR, ".")), queue.poll());
assertEquals(new Node(new Token(Type.INTEGER, "5")), queue.poll());
assertEquals(new Node(new Token(Type.BOOLEAN, "true")), queue.poll());
assertEquals(new Node(new Token(Type.PLACEHOLDER, "placeholdertest")), queue.poll());
assertEquals(new Node(new Token(Type.EXECUTOR, "MESSAGE")), queue.poll());
assertEquals(new Node(new Token(Type.ROOT, "<ROOT>")), queue.poll());
assertEquals(0, queue.size());
}
use of io.github.wysohn.triggerreactor.core.script.Token in project TriggerReactor by wysohn.
the class ParserTest method testParam.
@Test
public void testParam() throws IOException, LexerException, ParserException {
Charset charset = Charset.forName("UTF-8");
String text = "#SOUND player.getLocation() \"LEVEL_UP\" 1.0 1.0";
Lexer lexer = new Lexer(text, charset);
Parser parser = new Parser(lexer);
Node root = parser.parse();
Queue<Node> queue = new LinkedList<Node>();
serializeNode(queue, root);
assertEquals(new Node(new Token(Type.THIS, "<This>")), queue.poll());
assertEquals(new Node(new Token(Type.ID, "player")), queue.poll());
assertEquals(new Node(new Token(Type.OPERATOR, ".")), queue.poll());
assertEquals(new Node(new Token(Type.CALL, "getLocation")), queue.poll());
assertEquals(new Node(new Token(Type.OPERATOR, ".")), queue.poll());
assertEquals(new Node(new Token(Type.STRING, "LEVEL_UP")), queue.poll());
assertEquals(new Node(new Token(Type.DECIMAL, "1.0")), queue.poll());
assertEquals(new Node(new Token(Type.DECIMAL, "1.0")), queue.poll());
assertEquals(new Node(new Token(Type.EXECUTOR, "SOUND")), queue.poll());
assertEquals(new Node(new Token(Type.ROOT, "<ROOT>")), queue.poll());
assertEquals(0, queue.size());
}
use of io.github.wysohn.triggerreactor.core.script.Token in project TriggerReactor by wysohn.
the class LexerTest method testNegation.
@Test
public void testNegation() throws Exception {
Charset charset = Charset.forName("UTF-8");
String text = "#MESSAGE !true\n";
Lexer lexer = new Lexer(text, charset);
assertEquals(new Token(Type.ID, "#MESSAGE"), lexer.getToken());
assertEquals(new Token(Type.OPERATOR_L, "!"), lexer.getToken());
assertEquals(new Token(Type.ID, "true"), lexer.getToken());
assertEquals(new Token(Type.ENDL, null), lexer.getToken());
assertNull(lexer.getToken());
}
use of io.github.wysohn.triggerreactor.core.script.Token in project TriggerReactor by wysohn.
the class LexerTest method testEscapeCharacter.
@Test
public void testEscapeCharacter() throws Exception {
Charset charset = Charset.forName("UTF-8");
String text = "#MESSAGE \"HI \\\"X\\\"! \\\\\"";
Lexer lexer = new Lexer(text, charset);
assertEquals(new Token(Type.ID, "#MESSAGE"), lexer.getToken());
assertEquals(new Token(Type.STRING, "HI \"X\"! \\"), lexer.getToken());
assertNull(lexer.getToken());
}
Aggregations