use of org.develnext.jphp.core.tokenizer.token.Token in project jphp by jphp-compiler.
the class NamespaceSyntaxTest method testLongName.
@Test
public void testLongName() {
List<Token> tree = getSyntaxTree("namespace A\\B\\C;");
Assert.assertTrue(tree.size() == 1);
Assert.assertTrue(tree.get(0) instanceof NamespaceStmtToken);
NamespaceStmtToken token = (NamespaceStmtToken) tree.get(0);
Assert.assertNull(token.getTree());
Assert.assertEquals("A\\B\\C", token.getName().toName());
}
use of org.develnext.jphp.core.tokenizer.token.Token in project jphp by jphp-compiler.
the class SimpleExprTest method testSimpleCall.
@Test
public void testSimpleCall() throws IOException {
Tokenizer tokenizer = new Tokenizer(new Context("myCall(1 * 2, func(3, 2), 4);"));
SyntaxAnalyzer analyzer = new SyntaxAnalyzer(environment, tokenizer);
List<Token> tokens = analyzer.getTree();
Assert.assertTrue(tokens.size() == 1);
Assert.assertTrue(tokens.get(0) instanceof ExprStmtToken);
ExprStmtToken expr = (ExprStmtToken) tokens.get(0);
tokens = expr.getTokens();
Assert.assertTrue(tokens.size() == 1);
Assert.assertTrue(tokens.get(0) instanceof CallExprToken);
CallExprToken call = (CallExprToken) expr.getTokens().get(0);
Assert.assertTrue(call.getName() instanceof NameToken);
Assert.assertEquals("myCall", ((NameToken) call.getName()).getName());
Assert.assertTrue(call.getParameters().size() == 3);
Assert.assertTrue(call.getParameters().get(0).getTokens().size() == 3);
Assert.assertTrue(call.getParameters().get(2).getTokens().size() == 1);
ExprStmtToken param = call.getParameters().get(1);
Assert.assertTrue(param.getTokens().size() == 1);
Assert.assertTrue(param.getTokens().get(0) instanceof CallExprToken);
CallExprToken subCall = (CallExprToken) param.getTokens().get(0);
Assert.assertTrue(subCall.getParameters().size() == 2);
}
use of org.develnext.jphp.core.tokenizer.token.Token in project jphp by jphp-compiler.
the class SimpleExprTest method testIfElse.
@Test
public void testIfElse() {
List<Token> tokens = getSyntaxTree("call(1, true ? 1 : 2, 'foobar');");
Assert.assertEquals(1, tokens.size());
Assert.assertTrue(tokens.get(0) instanceof ExprStmtToken);
Assert.assertTrue(((ExprStmtToken) tokens.get(0)).getLast() instanceof CallExprToken);
CallExprToken call = (CallExprToken) ((ExprStmtToken) tokens.get(0)).getLast();
Assert.assertEquals(3, call.getParameters().size());
Assert.assertTrue(call.getParameters().get(0).getSingle() instanceof IntegerExprToken);
Assert.assertTrue(call.getParameters().get(1).getTokens().get(1) instanceof ValueIfElseToken);
ValueIfElseToken ifElse = (ValueIfElseToken) call.getParameters().get(1).getTokens().get(1);
Assert.assertTrue(ifElse.getValue().getSingle() instanceof IntegerExprToken);
Assert.assertTrue(ifElse.getAlternative().getSingle() instanceof IntegerExprToken);
Assert.assertTrue(call.getParameters().get(2).getSingle() instanceof StringExprToken);
}
use of org.develnext.jphp.core.tokenizer.token.Token in project jphp by jphp-compiler.
the class Generator method checkUnexpectedEnd.
protected void checkUnexpectedEnd(ListIterator<Token> iterator) {
if (!iterator.hasNext()) {
iterator.previous();
Token current = iterator.next();
analyzer.getEnvironment().error(current.toTraceInfo(analyzer.getContext()), ErrorType.E_PARSE, Messages.ERR_PARSE_UNEXPECTED_END_OF_FILE);
}
}
use of org.develnext.jphp.core.tokenizer.token.Token in project jphp by jphp-compiler.
the class Generator method nextToken.
protected Token nextToken(ListIterator<Token> iterator) {
checkUnexpectedEnd(iterator);
Token tk = iterator.next();
if (tk instanceof CommentToken) {
return nextToken(iterator);
}
return tk;
}
Aggregations