aboutsummaryrefslogtreecommitdiff
path: root/src/elixir_math_parser_lexer.xrl
diff options
context:
space:
mode:
authorAnhgelus Morhtuuzh <william@herges.fr>2025-11-04 12:19:54 +0100
committerAnhgelus Morhtuuzh <william@herges.fr>2025-11-04 12:19:54 +0100
commitcc2b7a9a7b4c6269a6b93f99581b91b29fccc66d (patch)
treecb97f6c5a65434bfd2c72bb7bab27940763adfde /src/elixir_math_parser_lexer.xrl
parent24570e7bf215c79a55927f23a6735acd8cd0ff59 (diff)
feat(lexer): default grammar
Diffstat (limited to 'src/elixir_math_parser_lexer.xrl')
-rw-r--r--src/elixir_math_parser_lexer.xrl19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/elixir_math_parser_lexer.xrl b/src/elixir_math_parser_lexer.xrl
new file mode 100644
index 0000000..a2980c8
--- /dev/null
+++ b/src/elixir_math_parser_lexer.xrl
@@ -0,0 +1,19 @@
+Definitions.
+INT = [0-9]+
+NAME = :[a-zA-Z_][a-zA-Z0-9_]*
+WHITESPACE = [\s\t\n\r]|;{2}
+
+Rules.
+\+ : {token, {'+', TokenLine}}.
+\- : {token, {'-', TokenLine}}.
+\* : {token, {'*', TokenLine}}.
+\/ : {token, {'/', TokenLine}}.
+\= : {token, {'=', TokenLine}}.
+{NAME} : {token, {atom, TokenLine, to_atom(TokenChars)}}.
+{INT} : {token, {int, TokenLine, TokenChars}}.
+{WHITESPACE}+ : skip_token.
+
+Erlang code.
+% Given a ":name", chop off : and return name as an atom.
+to_atom([$:|Chars]) ->
+ list_to_atom(Chars).