qml.xml

  1<lexer>
  2  <config>
  3    <name>QML</name>
  4    <alias>qml</alias>
  5    <alias>qbs</alias>
  6    <filename>*.qml</filename>
  7    <filename>*.qbs</filename>
  8    <mime_type>application/x-qml</mime_type>
  9    <mime_type>application/x-qt.qbs+qml</mime_type>
 10    <dot_all>true</dot_all>
 11  </config>
 12  <rules>
 13    <state name="root">
 14      <rule pattern="^(?=\s|/|&lt;!--)">
 15        <token type="Text"/>
 16        <push state="slashstartsregex"/>
 17      </rule>
 18      <rule>
 19        <include state="commentsandwhitespace"/>
 20      </rule>
 21      <rule pattern="\+\+|--|~|&amp;&amp;|\?|:|\|\||\\(?=\n)|(&lt;&lt;|&gt;&gt;&gt;?|==?|!=?|[-&lt;&gt;+*%&amp;|^/])=?">
 22        <token type="Operator"/>
 23        <push state="slashstartsregex"/>
 24      </rule>
 25      <rule pattern="[{(\[;,]">
 26        <token type="Punctuation"/>
 27        <push state="slashstartsregex"/>
 28      </rule>
 29      <rule pattern="[})\].]">
 30        <token type="Punctuation"/>
 31      </rule>
 32      <rule pattern="\bid\s*:\s*[A-Za-z][\w.]*">
 33        <token type="KeywordDeclaration"/>
 34        <push state="slashstartsregex"/>
 35      </rule>
 36      <rule pattern="\b[A-Za-z][\w.]*\s*:">
 37        <token type="Keyword"/>
 38        <push state="slashstartsregex"/>
 39      </rule>
 40      <rule pattern="(for|in|while|do|break|return|continue|switch|case|default|if|else|throw|try|catch|finally|new|delete|typeof|instanceof|void|this)\b">
 41        <token type="Keyword"/>
 42        <push state="slashstartsregex"/>
 43      </rule>
 44      <rule pattern="(var|let|with|function)\b">
 45        <token type="KeywordDeclaration"/>
 46        <push state="slashstartsregex"/>
 47      </rule>
 48      <rule pattern="(abstract|boolean|byte|char|class|const|debugger|double|enum|export|extends|final|float|goto|implements|import|int|interface|long|native|package|private|protected|public|short|static|super|synchronized|throws|transient|volatile)\b">
 49        <token type="KeywordReserved"/>
 50      </rule>
 51      <rule pattern="(true|false|null|NaN|Infinity|undefined)\b">
 52        <token type="KeywordConstant"/>
 53      </rule>
 54      <rule pattern="(Array|Boolean|Date|Error|Function|Math|netscape|Number|Object|Packages|RegExp|String|sun|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|Error|eval|isFinite|isNaN|parseFloat|parseInt|document|this|window)\b">
 55        <token type="NameBuiltin"/>
 56      </rule>
 57      <rule pattern="[$a-zA-Z_]\w*">
 58        <token type="NameOther"/>
 59      </rule>
 60      <rule pattern="[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?">
 61        <token type="LiteralNumberFloat"/>
 62      </rule>
 63      <rule pattern="0x[0-9a-fA-F]+">
 64        <token type="LiteralNumberHex"/>
 65      </rule>
 66      <rule pattern="[0-9]+">
 67        <token type="LiteralNumberInteger"/>
 68      </rule>
 69      <rule pattern="&#34;(\\\\|\\&#34;|[^&#34;])*&#34;">
 70        <token type="LiteralStringDouble"/>
 71      </rule>
 72      <rule pattern="&#39;(\\\\|\\&#39;|[^&#39;])*&#39;">
 73        <token type="LiteralStringSingle"/>
 74      </rule>
 75    </state>
 76    <state name="commentsandwhitespace">
 77      <rule pattern="\s+">
 78        <token type="Text"/>
 79      </rule>
 80      <rule pattern="&lt;!--">
 81        <token type="Comment"/>
 82      </rule>
 83      <rule pattern="//.*?\n">
 84        <token type="CommentSingle"/>
 85      </rule>
 86      <rule pattern="/\*.*?\*/">
 87        <token type="CommentMultiline"/>
 88      </rule>
 89    </state>
 90    <state name="slashstartsregex">
 91      <rule>
 92        <include state="commentsandwhitespace"/>
 93      </rule>
 94      <rule pattern="/(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/([gim]+\b|\B)">
 95        <token type="LiteralStringRegex"/>
 96        <pop depth="1"/>
 97      </rule>
 98      <rule pattern="(?=/)">
 99        <token type="Text"/>
100        <push state="#pop" state="badregex"/>
101      </rule>
102      <rule>
103        <pop depth="1"/>
104      </rule>
105    </state>
106    <state name="badregex">
107      <rule pattern="\n">
108        <token type="Text"/>
109        <pop depth="1"/>
110      </rule>
111    </state>
112  </rules>
113</lexer>