From e1aefeba402e76c6aa04f98abf3f229219849221 Mon Sep 17 00:00:00 2001 From: SirYwell Date: Wed, 7 May 2025 14:23:45 +0200 Subject: [PATCH] Fix tokens after main function --- .../java/edu/kit/kastel/vads/compiler/parser/Parser.java | 6 +++++- .../edu/kit/kastel/vads/compiler/parser/TokenSource.java | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) 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");