Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation
Issue #40 highlighted the absence of support for unary operations in our compiler. Unary operations, such as
!
(logical NOT) and-
(negation), are fundamental to many programming constructs and must be properly handled to ensure the compiler's correctness and completeness.This PR addresses the parser-side implementation of unary operations, ensuring they are correctly parsed and integrated into the AST with the appropriate precedence.
Changes
ANTLR Grammar:
!
and-
) with higher precedence than binary operations.AST:
UnaryOp
case class to represent unary operations in the AST:!flag
or-value
.ASTBuilder:
visitExpression
method to handle unary operations during the AST construction process.UnaryOp
nodes in the AST.Testing
To validate the changes, a comprehensive test file has been added (currently commented out) that includes examples of all supported unary and binary operations. The test cases cover:
!
)-
)-12 + 4
,!flag && isValid
)Once the implementation is finalized, the test file will be uncommented