diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/elixir_math_parser.yrl | 4 | ||||
| -rw-r--r-- | src/elixir_math_parser_lexer.xrl | 1 |
2 files changed, 4 insertions, 1 deletions
diff --git a/src/elixir_math_parser.yrl b/src/elixir_math_parser.yrl index 86b36c8..0808683 100644 --- a/src/elixir_math_parser.yrl +++ b/src/elixir_math_parser.yrl @@ -10,7 +10,7 @@ Terminals int var break - '+' '-' '*' '/' + '+' '-' '*' '/' '!' '=' '(' ')' . @@ -24,6 +24,7 @@ Left 300 '+'. Left 300 '-'. Left 400 '*'. Left 400 '/'. +Right 500 '!'. Left 600 '('. root -> statements : '$1'. @@ -46,6 +47,7 @@ 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'}. Erlang code. diff --git a/src/elixir_math_parser_lexer.xrl b/src/elixir_math_parser_lexer.xrl index facf323..5bdcbef 100644 --- a/src/elixir_math_parser_lexer.xrl +++ b/src/elixir_math_parser_lexer.xrl @@ -13,6 +13,7 @@ Rules. \= : {token, {'=', TokenLine}}. \( : {token, {'(', TokenLine}}. \) : {token, {')', TokenLine}}. +! : {token, {'!', TokenLine}}. {BREAK}+ : {token, {break, TokenLine}}. {NAME} : {token, {var, TokenLine, TokenChars}}. {INT} : {token, {int, TokenLine, TokenChars}}. |
