aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/elixir_math_parser.yrl14
-rw-r--r--src/elixir_math_parser_lexer.xrl3
2 files changed, 10 insertions, 7 deletions
diff --git a/src/elixir_math_parser.yrl b/src/elixir_math_parser.yrl
index 762cf4b..3ec4946 100644
--- a/src/elixir_math_parser.yrl
+++ b/src/elixir_math_parser.yrl
@@ -1,7 +1,7 @@
Nonterminals
root
- assignment
- assignments
+ statement
+ statements
expr
.
@@ -15,6 +15,7 @@ Terminals
'='
'('
')'
+ ';;'
.
Rootsymbol
@@ -28,12 +29,13 @@ Left 400 '*'.
Left 400 '/'.
Left 600 '('.
-root -> assignments : '$1'.
+root -> statements : '$1'.
-assignments -> assignment : '$1'.
-assignments -> assignment assignments : lists:merge('$1', '$2').
+statements -> statement : '$1'.
+statements -> statement statements : lists:merge('$1', '$2').
+statements -> statement ';;' statements : lists:merge('$1', '$3').
-assignment -> atom '=' expr : [{assign, '$1', '$3'}].
+statement -> atom '=' expr : [{assign, '$1', '$3'}].
expr -> int : unwrap('$1').
expr -> atom : '$1'.
diff --git a/src/elixir_math_parser_lexer.xrl b/src/elixir_math_parser_lexer.xrl
index 8d7920a..7256090 100644
--- a/src/elixir_math_parser_lexer.xrl
+++ b/src/elixir_math_parser_lexer.xrl
@@ -1,7 +1,7 @@
Definitions.
INT = [0-9]+
NAME = :[a-zA-Z_][a-zA-Z0-9_]*
-WHITESPACE = [\s\t\n\r]|;{2}
+WHITESPACE = [\s\t\n\r]
Rules.
\+ : {token, {'+', TokenLine}}.
@@ -11,6 +11,7 @@ Rules.
\= : {token, {'=', TokenLine}}.
\( : {token, {'(', TokenLine}}.
\) : {token, {')', TokenLine}}.
+;; : {token, {';;', TokenLine}}.
{NAME} : {token, {atom, TokenLine, to_atom(TokenChars)}}.
{INT} : {token, {int, TokenLine, TokenChars}}.
{WHITESPACE}+ : skip_token.