aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorWilliam Hergès <william@herges.fr>2025-11-08 22:59:31 +0100
committerWilliam Hergès <william@herges.fr>2025-11-08 22:59:31 +0100
commit8a26b3d43e1adb6f9585891500a5fc856fd0ca5c (patch)
tree19b2b90ee22c9b6cc3652d128ac7bf3f1da4da3c /src
parentc7a26d3c6125caa9239cec9bf08db935d98e19c1 (diff)
perf(var): replace atoms by charlist
Diffstat (limited to 'src')
-rw-r--r--src/elixir_math_parser.yrl6
-rw-r--r--src/elixir_math_parser_lexer.xrl4
2 files changed, 5 insertions, 5 deletions
diff --git a/src/elixir_math_parser.yrl b/src/elixir_math_parser.yrl
index 17b46ad..46340ae 100644
--- a/src/elixir_math_parser.yrl
+++ b/src/elixir_math_parser.yrl
@@ -7,7 +7,7 @@ Nonterminals
Terminals
int
- atom
+ var
'+'
'-'
'*'
@@ -35,11 +35,11 @@ statements -> statement : ['$1'].
statements -> statement statements : ['$1'|'$2'].
statements -> statement ';;' statements : ['$1'|'$3'].
-statement -> atom '=' expr : {assign, '$1', '$3'}.
+statement -> var '=' expr : {assign, '$1', '$3'}.
statement -> expr : {eval, '$1'}.
expr -> int : unwrap('$1').
-expr -> atom : '$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'}.
diff --git a/src/elixir_math_parser_lexer.xrl b/src/elixir_math_parser_lexer.xrl
index 7256090..d02a62c 100644
--- a/src/elixir_math_parser_lexer.xrl
+++ b/src/elixir_math_parser_lexer.xrl
@@ -1,6 +1,6 @@
Definitions.
INT = [0-9]+
-NAME = :[a-zA-Z_][a-zA-Z0-9_]*
+NAME = [a-zA-Z_][a-zA-Z0-9_]*
WHITESPACE = [\s\t\n\r]
Rules.
@@ -12,7 +12,7 @@ Rules.
\( : {token, {'(', TokenLine}}.
\) : {token, {')', TokenLine}}.
;; : {token, {';;', TokenLine}}.
-{NAME} : {token, {atom, TokenLine, to_atom(TokenChars)}}.
+{NAME} : {token, {var, TokenLine, TokenChars}}.
{INT} : {token, {int, TokenLine, TokenChars}}.
{WHITESPACE}+ : skip_token.