aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/elixir_math_parser.yrl8
-rw-r--r--src/elixir_math_parser_lexer.xrl1
2 files changed, 6 insertions, 3 deletions
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}}.