From ffcb50c7070b29e4e650b8bcbdc0775229aea09f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C5=A1per=20Dobrovoljc?= Date: Sun, 23 Mar 2025 14:00:35 +0100 Subject: [PATCH] Fixes --- prg/pass.pins | 42 ++++++++++++++++++------------------ prg/test.pins | 3 ++- src/pins25/common/Token.java | 6 ++---- src/pins25/phase/LexAn.java | 2 +- src/pins25/phase/SynAn.java | 2 +- 5 files changed, 27 insertions(+), 28 deletions(-) diff --git a/prg/pass.pins b/prg/pass.pins index 716c8c9..64f5144 100644 --- a/prg/pass.pins +++ b/prg/pass.pins @@ -2,7 +2,7 @@ fun noarg() fun onearg(a) fun multargs(a, b) fun funcassign(a) = - a = 1 + a = 1 var a = 1 var b = 'a' @@ -14,23 +14,23 @@ var h = 4 * "aaa" var i = fun a() = - 1, 'a', "a", - a, neki(a, 1, 'a', "a"), - a^, a^^, - +a, -a, !a, ^a, +-!^a, - a * b, a / b, a % b, a * b / c % d, - a + b, a - b, - a == b, a != b, a < b, a > b, a <= b, a >= b, - a && b, a && b && c, - a || b, a || b || c, - (1), (a + b), (a - (!(1) * 2)), - a + 1 = b - 1, - if a then b end, - if a == 3 then b = 1, !c end, - if !a then b else a = 3 * a end, - if a then b else a, b end, - while a <= 10 do a + 1 end, - while a <= 10 do a + 1, ^c end, - let fun a(b, c) in !b end, - let fun a(b, c) var e = 'o' in !b end, - let fun a(b, c) in !b, 4 end + 1, 'a', "a", + a, neki(a, 1, 'a', "a"), + a^, a^^, + +a, -a, !a, ^a, +-!^a, + a * b, a / b, a % b, a * b / c % d, + a + b, a - b, + a == b, a != b, a < b, a > b, a <= b, a >= b, + a && b, a && b && c, + a || b, a || b || c, + (1), (a + b), (a - (!(1) * 2)), + a + 1 = b - 1, + if a then b end, + if a == 3 then b = 1, !c end, + if !a then b else a = 3 * a end, + if a then b else a, b end, + while a <= 10 do a + 1 end, + while a <= 10 do a + 1, ^c end, + let fun a(b, c) in !b end, + let fun a(b, c) var e = 'o' in !b end, + let fun a(b, c) in !b, 4 end \ No newline at end of file diff --git a/prg/test.pins b/prg/test.pins index 0362a8a..ba27d79 100644 --- a/prg/test.pins +++ b/prg/test.pins @@ -1 +1,2 @@ -var \ No newline at end of file +fun a() = + 1 + \ No newline at end of file diff --git a/src/pins25/common/Token.java b/src/pins25/common/Token.java index d30b890..86d06cb 100644 --- a/src/pins25/common/Token.java +++ b/src/pins25/common/Token.java @@ -1,7 +1,5 @@ package pins25.common; -import java.util.HashMap; - /** * Leksikalni simbol. * @@ -152,7 +150,8 @@ public record Token(Report.Location location, Symbol symbol, String lexeme) impl */ RPAREN; - public String prettyPrint() { + @Override + public String toString() { return switch (this) { case INTCONST -> "integer constant"; case CHARCONST -> "character constant"; @@ -192,7 +191,6 @@ public record Token(Report.Location location, Symbol symbol, String lexeme) impl } } - @Override public String toString() { String lexeme = switch (symbol) { diff --git a/src/pins25/phase/LexAn.java b/src/pins25/phase/LexAn.java index c8a4287..adcc575 100644 --- a/src/pins25/phase/LexAn.java +++ b/src/pins25/phase/LexAn.java @@ -130,7 +130,7 @@ public class LexAn implements AutoCloseable { Report.Location start = currentLocation(); switch (buffChar) { case -1: // EOF - buffToken = new Token(start, Token.Symbol.EOF, null); + buffToken = new Token(start, Token.Symbol.EOF, "EOF"); return; case '\'': diff --git a/src/pins25/phase/SynAn.java b/src/pins25/phase/SynAn.java index a010e5f..44dba9b 100644 --- a/src/pins25/phase/SynAn.java +++ b/src/pins25/phase/SynAn.java @@ -38,7 +38,7 @@ public class SynAn implements AutoCloseable { private Token check(Token.Symbol symbol) { final Token token = lexAn.takeToken(); if (token.symbol() != symbol) - throw new Report.Error(token, "Unexpected symbol '" + token.lexeme() + "', expected " + symbol.prettyPrint() + "."); + throw new Report.Error(token, "Unexpected symbol '" + token.lexeme() + "', expected " + symbol + "."); return token; }