aboutsummaryrefslogtreecommitdiff
path: root/src/elixir_math_parser_lexer.xrl
diff options
context:
space:
mode:
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).