From 2acba0f28330613ecc831128c8790a4d3869ff0f Mon Sep 17 00:00:00 2001 From: Marvin Schlegel Date: Fri, 31 May 2024 11:23:25 +0200 Subject: [PATCH] parser add preincrement and decrement conversion --- Test/TestParser.hs | 4 ++-- src/Parser/JavaParser.y | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Test/TestParser.hs b/Test/TestParser.hs index 521a615..7c38433 100644 --- a/Test/TestParser.hs +++ b/Test/TestParser.hs @@ -145,10 +145,10 @@ testExpressionPostDecrement = TestCase $ assertEqual "expect PostDecrement" (StatementExpressionExpression $ PostDecrement (Reference "a")) $ parseExpression [IDENTIFIER "a",DECREMENT] testExpressionPreIncrement = TestCase $ - assertEqual "expect PreIncrement" (StatementExpressionExpression $ PreIncrement (Reference "a")) $ + assertEqual "expect PreIncrement" (StatementExpressionExpression $ Assignment (Reference "a") (BinaryOperation Addition (IntegerLiteral 1) (Reference "a"))) $ parseExpression [INCREMENT,IDENTIFIER "a"] testExpressionPreDecrement = TestCase $ - assertEqual "expect PreIncrement" (StatementExpressionExpression $ PreDecrement (Reference "a")) $ + assertEqual "expect PreIncrement" (StatementExpressionExpression $ Assignment (Reference "a") (BinaryOperation Subtraction (IntegerLiteral 1) (Reference "a"))) $ parseExpression [DECREMENT,IDENTIFIER "a"] testExpressionAssign = TestCase $ assertEqual "expect assign 5 to a" (StatementExpressionExpression (Assignment (Reference "a") (IntegerLiteral 5))) $ diff --git a/src/Parser/JavaParser.y b/src/Parser/JavaParser.y index fd694b6..5f19c34 100644 --- a/src/Parser/JavaParser.y +++ b/src/Parser/JavaParser.y @@ -279,9 +279,9 @@ assignmentoperator : ASSIGN { Nothing } | XOREQUAL { Just BitwiseXor } | OREQUAL{ Just BitwiseOr } -preincrementexpression : INCREMENT unaryexpression { PreIncrement $2 } +preincrementexpression : INCREMENT unaryexpression { Assignment $2 (BinaryOperation Addition (IntegerLiteral 1) $2) } -predecrementexpression : DECREMENT unaryexpression { PreDecrement $2 } +predecrementexpression : DECREMENT unaryexpression { Assignment $2 (BinaryOperation Subtraction (IntegerLiteral 1) $2) } postincrementexpression : postfixexpression INCREMENT { PostIncrement $1 }