Packages
absinthe
0.2.3
1.11.0
1.10.2
1.10.1
1.10.0
1.9.1
1.9.0
1.8.0
1.7.11
1.7.10
1.7.9
1.7.8
1.7.7
1.7.6
1.7.5
1.7.4
1.7.3
1.7.2
1.7.1
1.7.0
1.6.8
1.6.7
retired
1.6.6
1.6.5
1.6.4
1.6.3
1.6.2
1.6.1
1.6.0
1.6.0-rc.1
1.6.0-rc.0
1.5.5
1.5.4
1.5.3
1.5.2
1.5.1
1.5.0
1.5.0-rc.5
1.5.0-rc.4
1.5.0-rc.3
1.5.0-rc.2
1.5.0-rc.1
1.5.0-rc.0
1.5.0-beta.2
1.5.0-beta.1
1.5.0-beta.0
1.5.0-alpha.4
1.5.0-alpha.3
1.5.0-alpha.2
1.5.0-alpha.1
1.5.0-alpha.0
1.4.16
1.4.15
1.4.14
1.4.13
1.4.12
1.4.11
1.4.10
1.4.9
1.4.8
retired
1.4.7
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.4.0-rc.3
1.4.0-rc.2
1.4.0-rc.1
1.4.0-rc.0
1.4.0-beta.5
1.4.0-beta.4
1.4.0-beta.3
1.4.0-beta.2
1.4.0-beta.1
1.3.2
1.3.1
1.3.0
1.3.0-rc.0
1.3.0-beta.2
1.3.0-beta.1
1.3.0-beta.0
1.2.6
1.2.5
1.2.4
1.2.3
1.2.2
1.2.1
1.2.0
1.2.0-rc.0
1.2.0-beta.0
1.2.0-alpha0
1.2.0-alpha.2
1.2.0-alpha.1
1.1.11
1.1.10
1.1.9
1.1.8
1.1.7
1.1.6
1.1.5
1.1.4
1.1.3
1.1.2
1.1.1
1.1.0
1.0.0
0.5.2
0.5.1
0.5.0
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.2.3
0.2.2
0.2.1
0.1.0
GraphQL for Elixir
Current section
Files
Jump to
Current section
Files
src/absinthe_lexer.xrl
% Absinthe Lexer
%
% See the spec reference http://facebook.github.io/graphql/#sec-Appendix-Grammar-Summary
% The relevant version is also copied into this repo
Definitions.
% Ignored tokens
WhiteSpace = [\x{0009}\x{000B}\x{000C}\x{0020}\x{00A0}]
_LineTerminator = \x{000A}\x{000D}\x{2028}\x{2029}
LineTerminator = [{_LineTerminator}]
Comment = #[^{_LineTerminator}]*
Comma = ,
Ignored = {WhiteSpace}|{LineTerminator}|{Comment}|{Comma}
% Lexical tokens
Punctuator = [!$():=@\[\]{|}]|\.\.\.
Name = [_A-Za-z][_0-9A-Za-z]*
% Int Value
Digit = [0-9]
NonZeroDigit = [1-9]
NegativeSign = -
IntegerPart = {NegativeSign}?(0|{NonZeroDigit}{Digit}*)
IntValue = {IntegerPart}
% Float Value
FractionalPart = \.{Digit}+
Sign = [+\-]
ExponentIndicator = [eE]
ExponentPart = {ExponentIndicator}{Sign}?{Digit}+
FloatValue = {IntegerPart}{FractionalPart}|{IntegerPart}{ExponentPart}|{IntegerPart}{FractionalPart}{ExponentPart}
% String Value
HexDigit = [0-9A-Fa-f]
EscapedUnicode = u{HexDigit}{HexDigit}{HexDigit}{HexDigit}
EscapedCharacter = ["\\\/bfnrt]
StringCharacter = ([^\"{_LineTerminator}]|\\{EscapedUnicode}|\\{EscapedCharacter})
StringValue = "{StringCharacter}*"
% Boolean Value
BooleanValue = true|false
% Reserved words
ReservedWord = query|mutation|fragment|on|type|implements|interface|union|scalar|enum|input|extend|null
Rules.
{Ignored} : skip_token.
{Punctuator} : {token, {list_to_atom(TokenChars), TokenLine}}.
{ReservedWord} : {token, {list_to_atom(TokenChars), TokenLine}}.
{IntValue} : {token, {int_value, TokenLine, TokenChars}}.
{FloatValue} : {token, {float_value, TokenLine, TokenChars}}.
{StringValue} : {token, {string_value, TokenLine, TokenChars}}.
{BooleanValue} : {token, {boolean_value, TokenLine, TokenChars}}.
{Name} : {token, {name, TokenLine, TokenChars}}.
Erlang code.