From 7d7058743aa5d91af80dc603381a7ec6c080ec12 Mon Sep 17 00:00:00 2001 From: In'Maldrerah Eyllisitryanmitore Date: Tue, 11 Nov 2025 09:42:05 +0000 Subject: [PATCH 1/2] Supported reconstructing negative literal in parser --- src/parser/DeclParser.cj | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/parser/DeclParser.cj b/src/parser/DeclParser.cj index 782dc86..08b88a9 100644 --- a/src/parser/DeclParser.cj +++ b/src/parser/DeclParser.cj @@ -854,6 +854,11 @@ internal open class DeclParser { // the problem will be solved. if (helper.matches(TKH.PREFIX_UNARY_OPERATOR)) { let oper: Token = helper.previous() + if (oper.kind == TK.SUB && helper.matches(TK.INTEGER_LITERAL, TK.FLOAT_LITERAL)) { + let literal: Token = helper.previous() + return LitConstExpr(NodeIdManager.nextId(), + Token(literal.kind, "-" + literal.value, oper.pos)) + } let right: Expr = expectExpression(prefixUnaryExpression, "Expected a postfixExpression after ${oper.value}, found '\u{001b}[31m${helper.peek().value}\u{001b}[0m'") return UnaryExpr(NodeIdManager.nextId(), oper, right) From 2ee8ba37282cfcff4ed0873a83effb83e7938560 Mon Sep 17 00:00:00 2001 From: In'Maldrerah Eyllisitryanmitore Date: Thu, 13 Nov 2025 08:28:52 +0000 Subject: [PATCH 2/2] Fixed unary expr test and add negative literal test --- src/test/Parser_test.cj | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/test/Parser_test.cj b/src/test/Parser_test.cj index 74b463e..cc214ea 100644 --- a/src/test/Parser_test.cj +++ b/src/test/Parser_test.cj @@ -253,7 +253,7 @@ class ParserTests { func unaryExpr_test() { let test: String = """ main(){ - -134 + -(134) !134 }""" @@ -278,9 +278,11 @@ class ParserTests { let test: String = """ main(){ 1231 + -1231 "string" () 1.2 + -1.2 true false r'a'