Moved some code around

This commit is contained in:
TomyLobo 2011-11-22 16:28:27 +01:00
parent effbf9f79c
commit e6e31d0b93

View File

@ -101,7 +101,11 @@ public class Parser {
break; break;
case '{': case '{':
statements.add(parseBlock()); consumeCharacter('{');
statements.add(parseStatements(false));
consumeCharacter('}');
if (singleStatement) { if (singleStatement) {
break loop; break loop;
@ -178,7 +182,7 @@ public class Parser {
default: default:
statements.add(parseExpression()); statements.add(parseExpression());
if (peek().id() == ';') { if (peek().id() == ';') {
++position; ++position;
if (singleStatement) { if (singleStatement) {
@ -194,13 +198,17 @@ public class Parser {
switch (statements.size()) { switch (statements.size()) {
case 0: case 0:
throw new ParserException(-1, "No statement found."); if (singleStatement) {
throw new ParserException(peek().getPosition(), "Statement expected.");
} else {
return new Sequence(peek().getPosition());
}
case 1: case 1:
return statements.get(0); return statements.get(0);
default: default:
return new Sequence(position, statements.toArray(new RValue[statements.size()])); return new Sequence(peek().getPosition(), statements.toArray(new RValue[statements.size()]));
} }
} }
@ -327,20 +335,6 @@ public class Parser {
return ret; return ret;
} }
private final RValue parseBlock() throws ParserException {
consumeCharacter('{');
if (peek().id() == '}') {
return new Sequence(peek().getPosition());
}
final RValue ret = parseStatements(false);
consumeCharacter('}');
return ret;
}
private boolean hasKeyword(String keyword) { private boolean hasKeyword(String keyword) {
final Token next = peek(); final Token next = peek();
if (!(next instanceof KeywordToken)) { if (!(next instanceof KeywordToken)) {