1
<?xml version="1.0" encoding="UTF-8"?>
2
<!DOCTYPE language SYSTEM "language.dtd">
4
Syntax definition for kdev-pg/kdev-pg-qt grammars.
6
<language name="KDev-PG[-Qt] Grammar" version="0.24" kateversion="2.5" section="Sources" extensions="*.g" casesensitive="1" author="Milian Wolff (mail@milianw.de), Jonathan Schmidt-Dominé (devel@the-user.org)" license="">
9
<item> ast_extra_members </item>
10
<item> export_macro </item>
11
<item> export_macro_header </item>
12
<item> namespace </item>
13
<item> parserclass </item>
15
<item> token_stream </item>
16
<item> parser_declaration_header </item>
17
<item> parser_bits_header </item>
18
<item> ast_header </item>
19
<item> ast_base </item>
20
<item> parser_base </item>
31
<list name="keywords">
32
<item> try/rollback </item>
33
<item> try/recover </item>
38
<item> protected </item>
39
<item> private </item>
41
<list name="locations">
42
<item> declaration </item>
43
<item> destructor </item>
44
<item> constructor </item>
48
<context name="Normal" attribute="Normal Text" lineEndContext="#stay">
50
<DetectChar attribute="Keyword" context="Macros" char="%" firstNonSpace="true" />
51
<keyword attribute="Keyword" context="#stay" String="keywords" />
52
<keyword attribute="Access" context="#stay" String="access" />
53
<keyword attribute="Location" context="#stay" String="locations" />
55
<Float attribute="Float" context="#stay" />
56
<Int attribute="Decimal" context="#stay" />
58
<DetectChar attribute="String" context="String" char=""" />
60
<Detect2Chars attribute="Comment" context="SingleLineComment" char="-" char1="-" />
61
<!-- code segments -->
62
<Detect2Chars attribute="Code Segment" context="CodeSegment" char="[" char1=":" beginRegion="code" />
63
<!-- tokens are all-uppercase -->
64
<RegExpr attribute="Token" insensitive="false" context="#stay" String="\b[A-Z_]+\b" />
65
<!-- simple use of an ASTNode without assigning it -->
66
<RegExpr attribute="AstNode" insensitive="true" context="#stay" String="\b[a-z]+\b(?!=)" />
67
<!-- member=ASTNode -->
68
<DetectChar attribute="Symbol" context="MemberAst" char="=" />
70
<Detect2Chars attribute="Symbol" context="AstDecl" char="-" char1=">" />
72
<AnyChar attribute="Symbol" context="#stay" String=";[()]->|=*#@:?" />
75
<context name="Macros" attribute="Keyword" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
76
<keyword attribute="Keyword" context="#stay" String="macros" />
77
<Detect2Chars lookAhead="true" context="#pop" attribute="Normal Text" char="[" char1=":" />
78
<Detect2Chars context="#pop" attribute="Keyword" char=";" char1=";" />
81
<context name="String" attribute="String" lineEndContext="#stay">
82
<HlCStringChar attribute="String Char" context="#stay" />
83
<DetectChar attribute="String" context="#pop" char=""" />
86
<context name="SingleLineComment" attribute="Comment" lineEndContext="#pop"/>
87
<!-- code segments -->
88
<context name="CodeSegment" attribute="Code Segmentt" lineEndContext="#stay">
89
<Detect2Chars attribute="Code Segment" context="#pop" char=":" char1="]" endRegion="code" />
90
<IncludeRules context="##C++" />
92
<!-- memberVar=AstNode -->
93
<context name="MemberAst" attribute="AstNode" lineEndContext="#pop">
95
<!-- tokens are all-uppercase -->
96
<RegExpr attribute="Token" insensitive="false" context="#pop" String="\b[A-Z_]+\b" />
97
<DetectIdentifier attribute="AstNode" context="#pop" />
100
<context name="AstDecl" attribute="Error" lineEndContext="#stay">
101
<DetectSpaces attribute="Normal Text" />
102
<DetectIdentifier attribute="AstNode" />
103
<DetectChar char="[" attribute="Symbol" context="AstMemberDecl" />
104
<Detect2Chars char=";" char1=";" attribute="Symbol" context="#pop" />
106
<!-- member or temporary variables -->
107
<context name="AstMemberDecl" attribute="Normal Text" lineEndContext="#stay">
109
<RegExpr attribute="Keyword" String="\b(member|temporary)\s+variable\b" />
110
<DetectIdentifier attribute="AstMember" />
111
<DetectChar attribute="Symbol" char=":" context="AstMemberType" />
112
<DetectChar attribute="Symbol" char="]" context="#pop" />
114
<context name="AstMemberType" attribute="Normal Text" lineEndContext="#stay">
115
<DetectIdentifier attribute="AstMemberType" />
116
<DetectChar attribute="Symbol" char=";" context="#pop" />
120
<itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false" />
121
<itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false" />
122
<itemData name="Access" defStyleNum="dsDataType" spellChecking="false" />
123
<itemData name="Location" defStyleNum="dsOthers" spellChecking="false" />
124
<itemData name="Decimal" defStyleNum="dsDecVal" spellChecking="false" />
125
<itemData name="Float" defStyleNum="dsFloat" spellChecking="false" />
126
<itemData name="String" defStyleNum="dsString" />
127
<itemData name="String Char" defStyleNum="dsChar" spellChecking="false" />
128
<itemData name="Comment" defStyleNum="dsComment" />
129
<itemData name="Symbol" defStyleNum="dsOthers" />
130
<itemData name="Code Segment" defStyleNum="dsFunction" />
131
<itemData name="Token" defStyleNum="dsKeyword" spellChecking="false" />
132
<itemData name="AstNode" defStyleNum="dsFunction" spellChecking="false" />
133
<itemData name="Error" defStyleNum="dsError" spellChecking="false" />
134
<itemData name="AstMember" defStyleNum="dsNormal" spellChecking="false" />
135
<itemData name="AstMemberType" defStyleNum="dsDataType" spellChecking="false" />
140
<comment name="singleLine" start="--" />
142
<keywords casesensitive="true" weakDeliminator="/" />