Current section
Files
Jump to
Current section
Files
src/of_lexer.xrl
%% -*- erlang -*-
Definitions.
ERL = -erl\s.*
NUM = [0-9]+
WS = ([\000-\s]|%.*)
Str1 = '([^']|\.)+'
%'% damn you syntax highlighter
Str2 = "([^"]|\.)+"
%"% damn you syntax highlighter
Instance = instance
KW = [A-Za-z][A-Za-z0-9_@-]*
Comp = (>|>=|<|=<|==|/=)
Arrow = [-][>]
Skip = skip
Drop = drop
Send = send
Cont = continue
Count = count
At = [@]
Rules.
%%{ERL} : {token, {erlang, TokenLine, unerl(TokenChars, TokenLine)}}.
{Comment} : {token, {comment, TokenLine}}.
{Arrow} : {token, {kw_arrow, TokenLine}}.
{Send} : {token, {kw_send, TokenLine}}.
{Drop} : {token, {kw_drop, TokenLine}}.
{Skip} : {token, {kw_skip, TokenLine}}.
{Cont} : {token, {kw_cont, TokenLine}}.
{Count} : {token, {kw_count, TokenLine}}.
{At} : {token, {kw_at, TokenLine}}.
{KW} : {token, {kw, TokenLine, TokenChars}}.
{Comp} : {token, {cmp, TokenLine, a(TokenChars)}}.
{NUM} : {token, {num, TokenLine, i(TokenChars)}}.
{Str1} : S = strip(TokenChars, TokenLen),
{token, {str, TokenLine, S}}.
{Str2} : S = strip(TokenChars, TokenLen),
{token, {str, TokenLine, S}}.
[(),.[\]] : {token, {a(TokenChars), TokenLine}}.
{WS}+ : skip_token.
Erlang code.
-ignore_xref([format_error/1, string/2, token/2, token/3, tokens/2, tokens/3]).
strip(TokenChars, TokenLen) -> lists:sublist(TokenChars, 2, TokenLen - 2).
%%unerl(TokenChars, TokenLen) -> lists:sublist(TokenChars, 6, TokenLen).
a(L) -> list_to_atom(L).
i(L) -> list_to_integer(L).
-dialyzer({nowarn_function, yyrev/2}).