Warning, /frameworks/syntax-highlighting/data/syntax/yacc.xml is written in an unsupported language. File is not indexed.
0001 <?xml version="1.0" encoding="UTF-8"?> 0002 <!DOCTYPE language> 0003 <!-- 0004 ======================================================================== 0005 YACC.XML supports syntax highlighting for Yacc/Bison source under Kate. 0006 0007 Copyright (C) 2004, Jan Villat <jan.villat@net2000.ch> 0008 This code is released under the LGPL as part of kdelibs/kate. 0009 ======================================================================== 0010 0011 0012 == UPDATE HISTORY == 0013 2018-02-20 // Nibaldo González <nibgonz@gmail.com> 0014 0015 Fix '$' symbol, highlighted as 'dsError' by C++ (isocpp.xml). 0016 Update syntax for Bison (3.0.4): 0017 - Add declarations, directives in rules and the '@' variable. 0018 - Allow a tag in '%union', declarations in multiple lines and 0019 grammar declarations in the grammar rules section. 0020 - The ';' char is not necessary to finish a rule. Allow '; |' 0021 within rules. 0022 Add mimetypes and extensions '*.ypp' & '*.y++'. 0023 0024 2007-10-01 // Sebastian Pipping <webmaster@hartwork.org> 0025 0026 Added: Extension "*.yy" for Bison 0027 0028 2004-05-26 // Jan Villat <jan.villat@net2000.ch> 0029 0030 YACC.XML 1.00 - First released. 0031 0032 0033 ======================================================================== 0034 --> 0035 <language name="Yacc/Bison" version="9" kateversion="5.79" section="Sources" extensions="*.y;*.yy;*.ypp;*.y++" mimetype="text/x-yacc;text/x-bison" priority="5" author="Jan Villat (jan.villat@net2000.ch)" license="LGPL"> 0036 0037 <highlighting> 0038 <contexts> 0039 <context name="Pre Start" attribute="Normal Text" lineEndContext="#stay"> 0040 <IncludeRules context="Comment" /> 0041 <DetectSpaces /> 0042 <Detect2Chars attribute="Content-Type Delimiter" context="C Declarations" char="%" char1="{" beginRegion="cdeclarations" column="0" /> 0043 <RegExpr attribute="Normal Text" context="Declarations" String="." beginRegion="declarations" lookAhead="true" /> 0044 </context> 0045 0046 <context name="C Declarations" attribute="Normal Text" lineEndContext="#stay"> 0047 <IncludeRules context="Comment" /> 0048 <Detect2Chars attribute="Content-Type Delimiter" context="#pop" char="%" char1="}" endRegion="cdeclarations" column="0" /> 0049 <IncludeRules context="##C++" /> 0050 </context> 0051 0052 <context name="Declarations" attribute="Normal Text" lineEndContext="#stay"> 0053 <IncludeRules context="Comment" /> 0054 <Detect2Chars attribute="Content-Type Delimiter" context="Rules" char="%" char1="%" beginRegion="rules" endRegion="declarations" /> 0055 <!-- Prologue Declarations --> 0056 <Detect2Chars attribute="Content-Type Delimiter" context="C Declarations" char="%" char1="{" beginRegion="cdeclarations" column="0" /> 0057 <IncludeRules context="Grammar Declarations" /> 0058 <WordDetect attribute="Directive" context="Code-Symbols Start" String="%initial-action" /> 0059 <WordDetect attribute="Directive" context="Code-Symbols Start" String="%param" /> 0060 <WordDetect attribute="Directive" context="Code-Symbols Start" String="%lex-param" /> 0061 <WordDetect attribute="Directive" context="Code-Symbols Start" String="%parse-param" /> 0062 <WordDetect attribute="Directive" context="Percent Command In" String="%<flag>" /> 0063 <!-- Any word followed by '%' (End with ';' or '%') --> 0064 <DetectChar attribute="Directive" context="Percent Command" char="%" /> 0065 </context> 0066 <context name="Grammar Declarations" attribute="Normal Text" lineEndContext="#stay"> 0067 <WordDetect attribute="Directive" context="Union Start" String="%union" /> 0068 <WordDetect attribute="Directive" context="Union Start" String="%code" /> 0069 <WordDetect attribute="Directive" context="Code-Symbols Start" String="%destructor" /> 0070 <WordDetect attribute="Directive" context="Code-Symbols Start" String="%printer" /> 0071 </context> 0072 0073 <context name="Union Start" attribute="Normal Text" lineEndContext="#stay"> 0074 <IncludeRules context="Comment" /> 0075 <DetectSpaces /> 0076 <DetectChar attribute="Normal Text" context="Union In" char="{" beginRegion="union" /> 0077 <RegExpr attribute="Normal Text" context="#pop!Union Tag" String="[^\s\{](?=\s|$|//)" /> 0078 </context> 0079 <context name="Union Tag" attribute="Normal Text" lineEndContext="#stay"> 0080 <IncludeRules context="Comment" /> 0081 <DetectSpaces /> 0082 <DetectChar attribute="Normal Text" context="Union In" char="{" beginRegion="union" /> 0083 <RegExpr attribute="Alert" context="#pop" String="." /> 0084 </context> 0085 <context name="Union In" attribute="Normal Text" lineEndContext="#stay"> 0086 <DetectChar attribute="Normal Text" context="Union InIn" char="{" /> 0087 <DetectChar attribute="Normal Text" context="#pop#pop" char="}" endRegion="union" /> 0088 <IncludeRules context="##C++" /> 0089 </context> 0090 <context name="Union InIn" attribute="Normal Text" lineEndContext="#stay"> 0091 <DetectChar attribute="Normal Text" context="Union InIn" char="{" /> 0092 <DetectChar attribute="Normal Text" context="#pop" char="}" /> 0093 <IncludeRules context="##C++" /> 0094 </context> 0095 0096 <!-- '%'<decl> ('{' <Code-Symbols In> '}')+ <Percent Command In> [';'] --> 0097 <context name="Code-Symbols Start" attribute="Normal Text" lineEndContext="#stay"> 0098 <IncludeRules context="Comment" /> 0099 <DetectSpaces /> 0100 <DetectChar attribute="Normal Text" context="Code-Symbols In" char="{" beginRegion="code-symbols" /> 0101 <RegExpr attribute="Alert" context="#pop" String="." /> 0102 </context> 0103 <context name="Code-Symbols In" attribute="Normal Text" lineEndContext="#stay"> 0104 <DetectChar attribute="Normal Text" context="#pop#pop!Code-Symbols End" char="}" endRegion="code-symbols" /> 0105 <DetectChar attribute="Normal Text" context="Code-Symbols InIn" char="{" /> 0106 <IncludeRules context="Symbol-Variable" /> 0107 <IncludeRules context="##C++" /> 0108 </context> 0109 <context name="Code-Symbols InIn" attribute="Normal Text" lineEndContext="#stay"> 0110 <DetectChar attribute="Normal Text" context="Code-Symbols InIn" char="{" /> 0111 <DetectChar attribute="Normal Text" context="#pop" char="}" /> 0112 <IncludeRules context="Symbol-Variable" /> 0113 <IncludeRules context="##C++" /> 0114 </context> 0115 <context name="Code-Symbols End" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!Percent Command In"> 0116 <IncludeRules context="Comment" /> 0117 <DetectSpaces /> 0118 <DetectChar attribute="Normal Text" context="#pop" char=";" lookAhead="true" /> 0119 <DetectChar attribute="Normal Text" context="Code-Symbols In" char="{" beginRegion="code-symbols" /> 0120 </context> 0121 0122 <context name="Rules" attribute="Rule" lineEndContext="#stay"> 0123 <IncludeRules context="Comment" /> 0124 <Detect2Chars attribute="Content-Type Delimiter" context="User Code" char="%" char1="%" beginRegion="code" endRegion="rules" /> 0125 <DetectChar attribute="Normal Text" context="Rule In" char=":" beginRegion="rule" /> 0126 <DetectChar attribute="Rule" context="Grammar Declaration Start" char="%" lookAhead="true" /> 0127 </context> 0128 0129 <context name="Rule In" attribute="Definition" lineEndContext="#stay"> 0130 <IncludeRules context="Comment" /> 0131 <DetectChar attribute="Normal Text" context="Rule End" char=";" endRegion="rule" /> 0132 <DetectChar attribute="Normal Text" context="Normal C Bloc" char="{" beginRegion="bloc" /> 0133 <DetectChar attribute="Normal Text" context="#stay" char="|" /> 0134 <IncludeRules context="StringOrChar" /> 0135 <RegExpr attribute="Directive" context="#stay" String="%\?(?=\{)" /> 0136 <WordDetect attribute="Directive" context="#stay" String="%empty" /> 0137 <WordDetect attribute="Directive" context="#stay" String="%prec" /> 0138 <WordDetect attribute="Directive" context="#stay" String="%dprec" /> 0139 <WordDetect attribute="Directive" context="#stay" String="%merge" /> 0140 0141 <!-- Finish rule without the ';' character (see the 'rhses.1' rule in the 'src/parse-gram.y' file, from the Bison source) --> 0142 <RegExpr attribute="Open Rule" context="#pop" String="^[\w\-\.](?=[\w\-\.]*:)" column="0" endRegion="rule" /> 0143 <Detect2Chars attribute="Content-Type Delimiter" context="#pop" char="%" char1="%" lookAhead="true" firstNonSpace="true" endRegion="rule" /> 0144 <RegExpr attribute="Directive" context="#pop" String="^%(?:union|code|destructor|printer|start|(?:no\-)?default\-prec|nterm|token|type|left|right|nonassoc|precedence)\b" lookAhead="true" column="0" endRegion="rule" /> 0145 </context> 0146 <!-- The Bison parser allows to have ';' followed by '|', without the rule ending. 0147 The problem here is that the ';' char has endRegion="rule" (although it is not very relevant). --> 0148 <context name="Rule End" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop#pop"> 0149 <DetectSpaces /> 0150 <DetectChar attribute="Normal Text" context="#stay" char=";" /> 0151 <DetectChar attribute="Normal Text" context="#pop" char="|" /> 0152 <IncludeRules context="Comment" /> 0153 </context> 0154 0155 <context name="Grammar Declaration Start" attribute="Normal Text" lineEndContext="#stay"> 0156 <!-- In the rules section, only highlighting exact declarations --> 0157 <IncludeRules context="Grammar Declarations" /> 0158 <WordDetect attribute="Directive" context="Percent Command In" String="%start" /> 0159 <WordDetect attribute="Directive" context="Percent Command In" String="%default-prec" /> 0160 <WordDetect attribute="Directive" context="Percent Command In" String="%no-default-prec" /> 0161 <WordDetect attribute="Directive" context="Percent Command In" String="%nterm" /> 0162 <WordDetect attribute="Directive" context="Percent Command In" String="%token" /> 0163 <WordDetect attribute="Directive" context="Percent Command In" String="%type" /> 0164 <WordDetect attribute="Directive" context="Percent Command In" String="%left" /> 0165 <WordDetect attribute="Directive" context="Percent Command In" String="%right" /> 0166 <WordDetect attribute="Directive" context="Percent Command In" String="%nonassoc" /> 0167 <WordDetect attribute="Directive" context="Percent Command In" String="%precedence" /> 0168 0169 <DetectChar attribute="Rule" context="#pop" char="%" /> <!-- End when there is an invalid declaration --> 0170 <DetectChar attribute="Normal Text" context="#pop" char=";" /> 0171 <IncludeRules context="Comment" /> 0172 <DetectSpaces /> 0173 <RegExpr attribute="Alert" context="#pop" String=".+" /> 0174 </context> 0175 0176 <context name="User Code" attribute="Normal Text" lineEndContext="#stay"> 0177 <IncludeRules context="##C++" /> 0178 </context> 0179 0180 <context name="Percent Command" attribute="Directive" lineEndContext="#pop!Percent Command In"> 0181 <IncludeRules context="Comment" /> 0182 <RegExpr attribute="Normal Text" context="#pop!Percent Command In" String="[^\w\-]" lookAhead="true" /> 0183 </context> 0184 <context name="Percent Command In" attribute="Normal Text" lineEndContext="#stay"> 0185 <!-- This can be applied to multiple lines --> 0186 <DetectChar attribute="Normal Text" context="#pop" char=";" lookAhead="true" /> 0187 <DetectChar attribute="Normal Text" context="#pop" char="%" lookAhead="true" firstNonSpace="true" /> 0188 <Detect2Chars attribute="Normal Text" context="#pop" char="%" char1="%" lookAhead="true" /> 0189 <IncludeRules context="StringOrChar" /> 0190 <DetectChar attribute="Data Type" context="PC type" char="<" /> 0191 <IncludeRules context="Comment" /> 0192 </context> 0193 <context name="PC type" attribute="Data Type" lineEndContext="#pop#pop"> 0194 <DetectChar attribute="Data Type" context="#pop" char=">" /> 0195 </context> 0196 0197 <context name="Comment" attribute="Comment" lineEndContext="#stay"> 0198 <Detect2Chars attribute="Comment" context="CommentStar" char="/" char1="*" beginRegion="comment" /> 0199 <Detect2Chars attribute="Comment" context="CommentSlash" char="/" char1="/" /> 0200 </context> 0201 <context name="CommentStar" attribute="Comment" lineEndContext="#stay"> 0202 <DetectSpaces /> 0203 <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="comment" /> 0204 <IncludeRules context="##Comments" /> 0205 </context> 0206 <context name="CommentSlash" attribute="Comment" lineEndContext="#pop"> 0207 <DetectSpaces /> 0208 <IncludeRules context="##Comments" /> 0209 </context> 0210 0211 <context name="StringOrChar" attribute="Normal Text" lineEndContext="#stay"> 0212 <DetectChar attribute="String Char" context="Char" char="'" /> 0213 <DetectChar attribute="String" context="String" char=""" /> 0214 </context> 0215 <context name="String" attribute="String" lineEndContext="#pop"> 0216 <RegExpr attribute="Backslash Code" context="#stay" String="\\." /> 0217 <DetectChar attribute="String" context="#pop" char=""" /> 0218 </context> 0219 <context name="Char" attribute="String Char" lineEndContext="#pop"> 0220 <RegExpr attribute="Backslash Code" context="#stay" String="\\." /> 0221 <DetectChar attribute="String Char" context="#pop" char="'" /> 0222 </context> 0223 0224 <context name="Normal C Bloc" attribute="Normal Text" lineEndContext="#stay"> 0225 <DetectChar attribute="Normal Text" context="Normal C Bloc" char="{" beginRegion="bloc" /> 0226 <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="bloc" /> 0227 <IncludeRules context="Symbol-Variable" /> 0228 <IncludeRules context="##C++" /> 0229 </context> 0230 <context name="Symbol-Variable" attribute="Normal Text" lineEndContext="#stay"> 0231 <DetectChar attribute="Directive" context="Dol" char="$" /> 0232 <RegExpr attribute="Directive" context="#stay" String="@\$?(?:\d+|[A-Za-z_]\w*)?" /> 0233 </context> 0234 <context name="Dol" attribute="Normal Text" fallthroughContext="DolEnd" lineEndContext="#stay"> 0235 <RegExpr attribute="Data Type" context="DolEnd" String="<[^>]+>" /> 0236 </context> 0237 <context name="DolEnd" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop#pop"> 0238 <RegExpr attribute="Directive" context="#pop#pop" String="@?\d+" /> 0239 <DetectChar attribute="Directive" context="#pop#pop" char="$" /> 0240 <DetectIdentifier attribute="Directive" context="#pop#pop" /> 0241 </context> 0242 </contexts> 0243 0244 <itemDatas> 0245 <itemData name="Normal Text" defStyleNum="dsNormal" /> 0246 <itemData name="Definition" defStyleNum="dsNormal" /> 0247 <itemData name="Comment" defStyleNum="dsComment" /> 0248 <itemData name="Content-Type Delimiter" defStyleNum="dsBaseN" bold="1" /> 0249 <itemData name="Directive" defStyleNum="dsKeyword"/> 0250 <itemData name="Rule" defStyleNum="dsString" /> 0251 <itemData name="Open Rule" defStyleNum="dsString" bold="1" /> 0252 <itemData name="Backslash Code" defStyleNum="dsString" bold="1" /> 0253 <itemData name="Alert" defStyleNum="dsAlert" /> 0254 <itemData name="String" defStyleNum="dsString"/> 0255 <itemData name="String Char" defStyleNum="dsChar"/> 0256 <itemData name="Data Type" defStyleNum="dsDataType"/> 0257 </itemDatas> 0258 0259 </highlighting> 0260 <general> 0261 <comments> 0262 <comment name="multiLine" start="/*" end="*/" region="comment" /> 0263 <comment name="singleLine" start="//" /> 0264 </comments> 0265 </general> 0266 </language> 0267 <!-- kate: space-indent on; indent-width 2; replace-tabs on; -->