graphql.xml

 1<lexer>
 2  <config>
 3    <name>GraphQL</name>
 4    <alias>graphql</alias>
 5    <alias>graphqls</alias>
 6    <alias>gql</alias>
 7    <filename>*.graphql</filename>
 8    <filename>*.graphqls</filename>
 9  </config>
10  <rules>
11    <state name="root">
12      <rule pattern="(query|mutation|subscription|fragment|scalar|implements|interface|union|enum|input|type)">
13        <token type="KeywordDeclaration"/>
14        <push state="type"/>
15      </rule>
16      <rule pattern="(on|extend|schema|directive|\.\.\.)">
17        <token type="KeywordDeclaration"/>
18      </rule>
19      <rule pattern="(QUERY|MUTATION|SUBSCRIPTION|FIELD|FRAGMENT_DEFINITION|FRAGMENT_SPREAD|INLINE_FRAGMENT|SCHEMA|SCALAR|OBJECT|FIELD_DEFINITION|ARGUMENT_DEFINITION|INTERFACE|UNION|ENUM|ENUM_VALUE|INPUT_OBJECT|INPUT_FIELD_DEFINITION)\b">
20        <token type="KeywordConstant"/>
21      </rule>
22      <rule pattern="[^\W\d]\w*">
23        <token type="NameProperty"/>
24      </rule>
25      <rule pattern="\@\w+">
26        <token type="NameDecorator"/>
27      </rule>
28      <rule pattern=":">
29        <token type="Punctuation"/>
30        <push state="type"/>
31      </rule>
32      <rule pattern="[\(\)\{\}\[\],!\|=]">
33        <token type="Punctuation"/>
34      </rule>
35      <rule pattern="\$\w+">
36        <token type="NameVariable"/>
37      </rule>
38      <rule pattern="\d+i">
39        <token type="LiteralNumber"/>
40      </rule>
41      <rule pattern="\d+\.\d*([Ee][-+]\d+)?i">
42        <token type="LiteralNumber"/>
43      </rule>
44      <rule pattern="\.\d+([Ee][-+]\d+)?i">
45        <token type="LiteralNumber"/>
46      </rule>
47      <rule pattern="\d+[Ee][-+]\d+i">
48        <token type="LiteralNumber"/>
49      </rule>
50      <rule pattern="\d+(\.\d+[eE][+\-]?\d+|\.\d*|[eE][+\-]?\d+)">
51        <token type="LiteralNumberFloat"/>
52      </rule>
53      <rule pattern="\.\d+([eE][+\-]?\d+)?">
54        <token type="LiteralNumberFloat"/>
55      </rule>
56      <rule pattern="(0|[1-9][0-9]*)">
57        <token type="LiteralNumberInteger"/>
58      </rule>
59      <rule pattern="&#34;&#34;&#34;[\x00-\x7F]*?&#34;&#34;&#34;">
60        <token type="LiteralString"/>
61      </rule>
62      <rule pattern="&#34;(\\[&#34;\\abfnrtv]|\\x[0-9a-fA-F]{2}|\\[0-7]{1,3}|\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8}|[^\\])&#34;">
63        <token type="LiteralStringChar"/>
64      </rule>
65      <rule pattern="&#34;(\\\\|\\&#34;|[^&#34;])*&#34;">
66        <token type="LiteralString"/>
67      </rule>
68      <rule pattern="&#34;(true|false|null)*&#34;">
69        <token type="Literal"/>
70      </rule>
71      <rule pattern="[\r\n\s]+">
72        <token type="TextWhitespace"/>
73      </rule>
74      <rule pattern="#[^\r\n]*">
75        <token type="Comment"/>
76      </rule>
77    </state>
78    <state name="type">
79      <rule pattern="[^\W\d]\w*">
80        <token type="NameClass"/>
81        <pop depth="1"/>
82      </rule>
83      <rule>
84        <include state="root"/>
85      </rule>
86    </state>
87  </rules>
88</lexer>