aboutsummaryrefslogtreecommitdiff
path: root/src/elixir_math_parser_lexer.xrl
blob: 8d7920ac9e9b0cd5532f82d5808bd93f30d6deca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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}}.
\(            : {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).