diff options
| author | William Hergès <william@herges.fr> | 2025-11-09 12:49:15 +0100 |
|---|---|---|
| committer | William Hergès <william@herges.fr> | 2025-11-09 12:49:15 +0100 |
| commit | 8f9730d89e66ab1cbf08cbc0dea2a429d135e0da (patch) | |
| tree | fee1312ae3ff572ebb2f5a9ff6b22fb66a66644a /src/elixir_math_parser.yrl | |
| parent | 5c422b7ef948a0fd579a0750ab29ab93e36b0e95 (diff) | |
feat(parser): supports implicit mult
Diffstat (limited to 'src/elixir_math_parser.yrl')
| -rw-r--r-- | src/elixir_math_parser.yrl | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/src/elixir_math_parser.yrl b/src/elixir_math_parser.yrl index 46340ae..86b36c8 100644 --- a/src/elixir_math_parser.yrl +++ b/src/elixir_math_parser.yrl @@ -3,19 +3,16 @@ Nonterminals statement statements expr + exprs . Terminals int var - '+' - '-' - '*' - '/' + break + '+' '-' '*' '/' '=' - '(' - ')' - ';;' + '(' ')' . Rootsymbol @@ -33,18 +30,22 @@ root -> statements : '$1'. statements -> statement : ['$1']. statements -> statement statements : ['$1'|'$2']. -statements -> statement ';;' statements : ['$1'|'$3']. +statements -> statement break statements : ['$1'|'$3']. +statements -> break : []. -statement -> var '=' expr : {assign, '$1', '$3'}. -statement -> expr : {eval, '$1'}. +statement -> var '=' exprs : {assign, '$1', '$3'}. +statement -> exprs : {eval, '$1'}. + +exprs -> expr : '$1'. +exprs -> expr exprs : {mul_op, '$1', '$2'}. expr -> int : unwrap('$1'). expr -> var : '$1'. -expr -> expr '+' expr : {add_op, '$1', '$3'}. -expr -> expr '-' expr : {sub_op, '$1', '$3'}. -expr -> expr '*' expr : {mul_op, '$1', '$3'}. -expr -> expr '/' expr : {div_op, '$1', '$3'}. -expr -> '(' expr ')' : '$2'. +expr -> exprs '+' exprs : {add_op, '$1', '$3'}. +expr -> exprs '-' exprs : {sub_op, '$1', '$3'}. +expr -> exprs '*' exprs : {mul_op, '$1', '$3'}. +expr -> exprs '/' exprs : {div_op, '$1', '$3'}. +expr -> '(' exprs ')' : '$2'. Erlang code. |
