dtd.xml

  1<lexer>
  2  <config>
  3    <name>DTD</name>
  4    <alias>dtd</alias>
  5    <filename>*.dtd</filename>
  6    <mime_type>application/xml-dtd</mime_type>
  7    <dot_all>true</dot_all>
  8  </config>
  9  <rules>
 10    <state name="common">
 11      <rule pattern="\s+">
 12        <token type="Text"/>
 13      </rule>
 14      <rule pattern="(%|&amp;)[^;]*;">
 15        <token type="NameEntity"/>
 16      </rule>
 17      <rule pattern="&lt;!--">
 18        <token type="Comment"/>
 19        <push state="comment"/>
 20      </rule>
 21      <rule pattern="[(|)*,?+]">
 22        <token type="Operator"/>
 23      </rule>
 24      <rule pattern="&#34;[^&#34;]*&#34;">
 25        <token type="LiteralStringDouble"/>
 26      </rule>
 27      <rule pattern="\&#39;[^\&#39;]*\&#39;">
 28        <token type="LiteralStringSingle"/>
 29      </rule>
 30    </state>
 31    <state name="comment">
 32      <rule pattern="[^-]+">
 33        <token type="Comment"/>
 34      </rule>
 35      <rule pattern="--&gt;">
 36        <token type="Comment"/>
 37        <pop depth="1"/>
 38      </rule>
 39      <rule pattern="-">
 40        <token type="Comment"/>
 41      </rule>
 42    </state>
 43    <state name="element">
 44      <rule>
 45        <include state="common"/>
 46      </rule>
 47      <rule pattern="EMPTY|ANY|#PCDATA">
 48        <token type="KeywordConstant"/>
 49      </rule>
 50      <rule pattern="[^&gt;\s|()?+*,]+">
 51        <token type="NameTag"/>
 52      </rule>
 53      <rule pattern="&gt;">
 54        <token type="Keyword"/>
 55        <pop depth="1"/>
 56      </rule>
 57    </state>
 58    <state name="attlist">
 59      <rule>
 60        <include state="common"/>
 61      </rule>
 62      <rule pattern="CDATA|IDREFS|IDREF|ID|NMTOKENS|NMTOKEN|ENTITIES|ENTITY|NOTATION">
 63        <token type="KeywordConstant"/>
 64      </rule>
 65      <rule pattern="#REQUIRED|#IMPLIED|#FIXED">
 66        <token type="KeywordConstant"/>
 67      </rule>
 68      <rule pattern="xml:space|xml:lang">
 69        <token type="KeywordReserved"/>
 70      </rule>
 71      <rule pattern="[^&gt;\s|()?+*,]+">
 72        <token type="NameAttribute"/>
 73      </rule>
 74      <rule pattern="&gt;">
 75        <token type="Keyword"/>
 76        <pop depth="1"/>
 77      </rule>
 78    </state>
 79    <state name="entity">
 80      <rule>
 81        <include state="common"/>
 82      </rule>
 83      <rule pattern="SYSTEM|PUBLIC|NDATA">
 84        <token type="KeywordConstant"/>
 85      </rule>
 86      <rule pattern="[^&gt;\s|()?+*,]+">
 87        <token type="NameEntity"/>
 88      </rule>
 89      <rule pattern="&gt;">
 90        <token type="Keyword"/>
 91        <pop depth="1"/>
 92      </rule>
 93    </state>
 94    <state name="notation">
 95      <rule>
 96        <include state="common"/>
 97      </rule>
 98      <rule pattern="SYSTEM|PUBLIC">
 99        <token type="KeywordConstant"/>
100      </rule>
101      <rule pattern="[^&gt;\s|()?+*,]+">
102        <token type="NameAttribute"/>
103      </rule>
104      <rule pattern="&gt;">
105        <token type="Keyword"/>
106        <pop depth="1"/>
107      </rule>
108    </state>
109    <state name="root">
110      <rule>
111        <include state="common"/>
112      </rule>
113      <rule pattern="(&lt;!ELEMENT)(\s+)(\S+)">
114        <bygroups>
115          <token type="Keyword"/>
116          <token type="Text"/>
117          <token type="NameTag"/>
118        </bygroups>
119        <push state="element"/>
120      </rule>
121      <rule pattern="(&lt;!ATTLIST)(\s+)(\S+)">
122        <bygroups>
123          <token type="Keyword"/>
124          <token type="Text"/>
125          <token type="NameTag"/>
126        </bygroups>
127        <push state="attlist"/>
128      </rule>
129      <rule pattern="(&lt;!ENTITY)(\s+)(\S+)">
130        <bygroups>
131          <token type="Keyword"/>
132          <token type="Text"/>
133          <token type="NameEntity"/>
134        </bygroups>
135        <push state="entity"/>
136      </rule>
137      <rule pattern="(&lt;!NOTATION)(\s+)(\S+)">
138        <bygroups>
139          <token type="Keyword"/>
140          <token type="Text"/>
141          <token type="NameTag"/>
142        </bygroups>
143        <push state="notation"/>
144      </rule>
145      <rule pattern="(&lt;!\[)([^\[\s]+)(\s*)(\[)">
146        <bygroups>
147          <token type="Keyword"/>
148          <token type="NameEntity"/>
149          <token type="Text"/>
150          <token type="Keyword"/>
151        </bygroups>
152      </rule>
153      <rule pattern="(&lt;!DOCTYPE)(\s+)([^&gt;\s]+)">
154        <bygroups>
155          <token type="Keyword"/>
156          <token type="Text"/>
157          <token type="NameTag"/>
158        </bygroups>
159      </rule>
160      <rule pattern="PUBLIC|SYSTEM">
161        <token type="KeywordConstant"/>
162      </rule>
163      <rule pattern="[\[\]&gt;]">
164        <token type="Keyword"/>
165      </rule>
166    </state>
167  </rules>
168</lexer>