Skip to content

Commit 7dfc34a

Browse files
committed
Detect negative Integers
1 parent f6d6398 commit 7dfc34a

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

src/pgdp/minijava/Parser.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -309,8 +309,13 @@ public static int parseExpression(List<Token> tokens, int pos, SyntaxTreeNode ro
309309
throw new IllegalStateException("Couldn't close expression brackets (" +current.getLine() +")");
310310
}
311311
} else if(current.getTokenType() == TokenType.OPERATOR && current.getContentAsString().equals("-")) {
312-
node.addChild(new SyntaxTreeNode(SyntaxTreeNode.Type.SYMBOL, current.getContentAsString()));
313-
pos = parseExpression(tokens, pos, node);
312+
if(tokens.get(pos).getTokenType() == TokenType.LITERAL) {
313+
node.addChild(new SyntaxTreeNode(SyntaxTreeNode.Type.NUMBER, current.getContentAsString() + tokens.get(pos).getContentAsString()));
314+
pos++;
315+
} else {
316+
node.addChild(new SyntaxTreeNode(SyntaxTreeNode.Type.SYMBOL, current.getContentAsString()));
317+
pos = parseExpression(tokens, pos, node);
318+
}
314319
} else {
315320
pos = parseExpression(tokens, pos, node);
316321
current = tokens.get(pos++);

0 commit comments

Comments
 (0)