ebnf.xml

 1<lexer>
 2  <config>
 3    <name>EBNF</name>
 4    <alias>ebnf</alias>
 5    <filename>*.ebnf</filename>
 6    <mime_type>text/x-ebnf</mime_type>
 7  </config>
 8  <rules>
 9    <state name="comment">
10      <rule pattern="[^*)]">
11        <token type="CommentMultiline"/>
12      </rule>
13      <rule>
14        <include state="comment_start"/>
15      </rule>
16      <rule pattern="\*\)">
17        <token type="CommentMultiline"/>
18        <pop depth="1"/>
19      </rule>
20      <rule pattern="[*)]">
21        <token type="CommentMultiline"/>
22      </rule>
23    </state>
24    <state name="identifier">
25      <rule pattern="([a-zA-Z][\w \-]*)">
26        <token type="Keyword"/>
27      </rule>
28    </state>
29    <state name="root">
30      <rule>
31        <include state="whitespace"/>
32      </rule>
33      <rule>
34        <include state="comment_start"/>
35      </rule>
36      <rule>
37        <include state="identifier"/>
38      </rule>
39      <rule pattern="=">
40        <token type="Operator"/>
41        <push state="production"/>
42      </rule>
43    </state>
44    <state name="production">
45      <rule>
46        <include state="whitespace"/>
47      </rule>
48      <rule>
49        <include state="comment_start"/>
50      </rule>
51      <rule>
52        <include state="identifier"/>
53      </rule>
54      <rule pattern="&#34;[^&#34;]*&#34;">
55        <token type="LiteralStringDouble"/>
56      </rule>
57      <rule pattern="&#39;[^&#39;]*&#39;">
58        <token type="LiteralStringSingle"/>
59      </rule>
60      <rule pattern="(\?[^?]*\?)">
61        <token type="NameEntity"/>
62      </rule>
63      <rule pattern="[\[\]{}(),|]">
64        <token type="Punctuation"/>
65      </rule>
66      <rule pattern="-">
67        <token type="Operator"/>
68      </rule>
69      <rule pattern=";">
70        <token type="Punctuation"/>
71        <pop depth="1"/>
72      </rule>
73      <rule pattern="\.">
74        <token type="Punctuation"/>
75        <pop depth="1"/>
76      </rule>
77    </state>
78    <state name="whitespace">
79      <rule pattern="\s+">
80        <token type="Text"/>
81      </rule>
82    </state>
83    <state name="comment_start">
84      <rule pattern="\(\*">
85        <token type="CommentMultiline"/>
86        <push state="comment"/>
87      </rule>
88    </state>
89  </rules>
90</lexer>