mirror of
https://github.com/LucasVbr/croissant.git
synced 2026-05-13 17:12:10 +00:00
feat: Add boolean literal and comparable binary operators
This commit is contained in:
+21
-1
@@ -5,6 +5,7 @@ open Syntax
|
||||
%token <int> INT
|
||||
%token <float> FLOAT
|
||||
%token <char> CHARACTER
|
||||
%token <bool> BOOLEAN
|
||||
%token <string> STRING
|
||||
%token <string> IDENTIFIER
|
||||
%token NULL
|
||||
@@ -13,6 +14,15 @@ open Syntax
|
||||
%token MINUS "-"
|
||||
%token TIMES "*"
|
||||
%token DIV "/"
|
||||
%token EQUAL_EQUAL "=="
|
||||
%token NOT_EQUAL "!="
|
||||
%token LESS_THAN "<"
|
||||
%token LESS_THAN_EQUAL "<="
|
||||
%token GREATER_THAN ">"
|
||||
%token GREATER_THAN_EQUAL ">="
|
||||
%token AMPERSAND_AMPERSAND "&&"
|
||||
%token BAR_BAR "||"
|
||||
%token EXCLAMATION "!"
|
||||
|
||||
%token SEMICOLON ";"
|
||||
|
||||
@@ -50,15 +60,25 @@ expression:
|
||||
literal:
|
||||
| INT { Literals.Integer($1) }
|
||||
| FLOAT { Literals.Float($1) }
|
||||
| BOOLEAN { Literals.Boolean($1) }
|
||||
| CHARACTER { Literals.Character($1) }
|
||||
| STRING { Literals.String($1) }
|
||||
| NULL { Literals.Null }
|
||||
|
||||
unary_expression:
|
||||
| "-" expression %prec UMINUS { Expressions.UnaryExpression(UnaryOperators.ArithmeticNegation, $2) }
|
||||
| "!" expression { Expressions.UnaryExpression(UnaryOperators.LogicalNegation, $2) }
|
||||
|
||||
binary_expression:
|
||||
| expression "+" expression { Expressions.BinaryExpression (BinaryOperators.Add, $1, $3) }
|
||||
| expression "-" expression { Expressions.BinaryExpression (BinaryOperators.Subtract, $1, $3) }
|
||||
| expression "*" expression { Expressions.BinaryExpression (BinaryOperators.Multiply, $1, $3) }
|
||||
| expression "/" expression { Expressions.BinaryExpression (BinaryOperators.Divide, $1, $3) }
|
||||
| expression "/" expression { Expressions.BinaryExpression (BinaryOperators.Divide, $1, $3) }
|
||||
| expression "==" expression { Expressions.BinaryExpression (BinaryOperators.Equals, $1, $3) }
|
||||
| expression "!=" expression { Expressions.BinaryExpression (BinaryOperators.NotEquals, $1, $3) }
|
||||
| expression "<" expression { Expressions.BinaryExpression (BinaryOperators.LessThan, $1, $3) }
|
||||
| expression "<=" expression { Expressions.BinaryExpression (BinaryOperators.LessThanEquals, $1, $3) }
|
||||
| expression ">" expression { Expressions.BinaryExpression (BinaryOperators.GreaterThan, $1, $3) }
|
||||
| expression ">=" expression { Expressions.BinaryExpression (BinaryOperators.GreaterThanEquals, $1, $3) }
|
||||
| expression "&&" expression { Expressions.BinaryExpression (BinaryOperators.And, $1, $3) }
|
||||
| expression "||" expression { Expressions.BinaryExpression (BinaryOperators.Or, $1, $3) }
|
||||
Reference in New Issue
Block a user