diff --git a/src/main/java/edu/kit/kastel/vads/compiler/parser/Parser.java b/src/main/java/edu/kit/kastel/vads/compiler/parser/Parser.java index f152cc8..57c9de8 100644 --- a/src/main/java/edu/kit/kastel/vads/compiler/parser/Parser.java +++ b/src/main/java/edu/kit/kastel/vads/compiler/parser/Parser.java @@ -40,7 +40,11 @@ public class Parser { } public ProgramTree parseProgram() { - return new ProgramTree(List.of(parseFunction())); + ProgramTree programTree = new ProgramTree(List.of(parseFunction())); + if (this.tokenSource.hasMore()) { + throw new ParseException("expected end of input but got " + this.tokenSource.peek()); + } + return programTree; } private FunctionTree parseFunction() { diff --git a/src/main/java/edu/kit/kastel/vads/compiler/parser/TokenSource.java b/src/main/java/edu/kit/kastel/vads/compiler/parser/TokenSource.java index 7790c0a..984cdee 100644 --- a/src/main/java/edu/kit/kastel/vads/compiler/parser/TokenSource.java +++ b/src/main/java/edu/kit/kastel/vads/compiler/parser/TokenSource.java @@ -75,6 +75,10 @@ public class TokenSource { return token; } + public boolean hasMore() { + return this.idx < this.tokens.size(); + } + private void expectHasMore() { if (this.idx >= this.tokens.size()) { throw new ParseException("reached end of file");