From 7ddc83f098cfd316656c28dcca5375b939fd6c00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?William=20Herg=C3=A8s?= Date: Sun, 9 Nov 2025 13:36:02 +0100 Subject: feat(calc)): partial supports of exp --- src/elixir_math_parser.yrl | 8 +++++--- src/elixir_math_parser_lexer.xrl | 1 + 2 files changed, 6 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/elixir_math_parser.yrl b/src/elixir_math_parser.yrl index 0808683..006c768 100644 --- a/src/elixir_math_parser.yrl +++ b/src/elixir_math_parser.yrl @@ -10,7 +10,7 @@ Terminals int var break - '+' '-' '*' '/' '!' + '+' '-' '*' '/' '!' '^' '=' '(' ')' . @@ -25,7 +25,8 @@ Left 300 '-'. Left 400 '*'. Left 400 '/'. Right 500 '!'. -Left 600 '('. +Left 600 '^'. +Left 700 '('. root -> statements : '$1'. @@ -46,8 +47,9 @@ 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'. expr -> expr '!' : {factor_op, '$1'}. +expr -> exprs '^' exprs : {exp_op, '$1', '$3'}. +expr -> '(' exprs ')' : '$2'. Erlang code. diff --git a/src/elixir_math_parser_lexer.xrl b/src/elixir_math_parser_lexer.xrl index 5bdcbef..c29416e 100644 --- a/src/elixir_math_parser_lexer.xrl +++ b/src/elixir_math_parser_lexer.xrl @@ -14,6 +14,7 @@ Rules. \( : {token, {'(', TokenLine}}. \) : {token, {')', TokenLine}}. ! : {token, {'!', TokenLine}}. +\^ : {token, {'^', TokenLine}}. {BREAK}+ : {token, {break, TokenLine}}. {NAME} : {token, {var, TokenLine, TokenChars}}. {INT} : {token, {int, TokenLine, TokenChars}}. -- cgit v1.2.3