Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Interpret PrefixExpr of literal ints and floats into ASG #92

Merged
merged 1 commit into from
Feb 1, 2024

Conversation

jlapeyre
Copy link
Collaborator

@jlapeyre jlapeyre commented Feb 1, 2024

This correctly parses and analyzes to ASG some expressions representing negative numeric literals. At the same time it does not incorrectly parse binary expressions such as a-1.23 The following (should!) enter the ASG correctly:
1.23;
-1.23;
- 1.23;
1;
-1;
- 1;

Some tests for all of the items above (and the binary expression) are included in this commit.

There are a few ugly things. But maybe they can be fixed later.

This PR also should make it easier to do another PR to handle variables with unary minus.

The access (API) to the ASG, tries to be backward compatible. Probably could used a simple redesign.

  • A new accessor sign() is added to IntLiteral. For positive values sign() returns true, for negative false.

  • FloatLiteral is still a String and the possible - sign is formatted into the string. We talked about storing an f64 here instead. Probably would be a good option. But the present API is backward compatible.

This correctly parses and analyzes to ASG some expressions representing negative numeric literals.
At the same time it does not incorrectly parse binary expressions such as `a-1.23`
The following (should!) enter the ASG correctly:
`1.23;`
`-1.23;`
`- 1.23;`
`1;`
`-1;`
`- 1`;

Some tests for all of the items above (and the binary expression) are included in this commit.

There are a few ugly things. But maybe they can be fixed later.

This PR also should make it easier to do anoether PR to handle variables with unary minus.

The access (API) to the ASG, tries to be backward compatible. Probably could used a
simple redesign.

* A new accessor `sign()` is added to `IntLiteral`. For positive values `sign()` returns `true`,
  for negative `false`.

* `FloatLiteral` is still a `String` and the possible `-` sign is formatted into the string.
   We talked about storing an f64 here instead. Probably would be a good option. But the present
   API is backward compatible.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant