66#include "routines.h"
77#include "field.h"
88#include "xtag.h"
9+ #include "selectors.h"
910
1011
11- static void initializeQemuHXParser (const langType language CTAGS_ATTR_UNUSED )
12+ static void initializeQemuHXParser (const langType language )
1213{
14+
15+ addLanguageRegexTable (language , "toplevel" );
16+ addLanguageRegexTable (language , "skiplines" );
17+ addLanguageRegexTable (language , "qmp" );
18+ addLanguageRegexTable (language , "texi" );
19+ addLanguageRegexTable (language , "rst" );
20+ addLanguageRegexTable (language , "cmd" );
21+ addLanguageRegexTable (language , "cmd0" );
22+
23+ addLanguageTagMultiTableRegex (language , "toplevel" ,
24+ "^HXCOMM[^\n]*[\n]*" ,
25+ "" , "" , "" , NULL );
26+ addLanguageTagMultiTableRegex (language , "toplevel" ,
27+ "^SQMP[[:space:]]+" ,
28+ "" , "" , "{tenter=qmp}" , NULL );
29+ addLanguageTagMultiTableRegex (language , "toplevel" ,
30+ "^STEXI[\n]*" ,
31+ "" , "" , "{tenter=texi}" , NULL );
32+ addLanguageTagMultiTableRegex (language , "toplevel" ,
33+ "^SRST[^\n]*[\n]*" ,
34+ "" , "" , "{tenter=rst}" , NULL );
35+ addLanguageTagMultiTableRegex (language , "toplevel" ,
36+ "^[ \t]*DEF\\(\"([^\"\n]+)\"[^\n]*[\n]" ,
37+ "\\1" , "c" , "" , NULL );
38+ addLanguageTagMultiTableRegex (language , "toplevel" ,
39+ "^[ \t]*\\{[ \t]*[\n]+" ,
40+ "" , "" , "{tenter=cmd}" , NULL );
41+ addLanguageTagMultiTableRegex (language , "toplevel" ,
42+ "^[^\n]+[\n]*" ,
43+ "" , "" , "" , NULL );
44+ addLanguageTagMultiTableRegex (language , "toplevel" ,
45+ "^[\n]+" ,
46+ "" , "" , "" , NULL );
47+ addLanguageTagMultiTableRegex (language , "toplevel" ,
48+ "^." ,
49+ "" , "" , "" , NULL );
50+ addLanguageTagMultiTableRegex (language , "skiplines" ,
51+ "^[^\n]+[\n]*" ,
52+ "" , "" , "" , NULL );
53+ addLanguageTagMultiTableRegex (language , "skiplines" ,
54+ "^[\n]+" ,
55+ "" , "" , "" , NULL );
56+ addLanguageTagMultiTableRegex (language , "skiplines" ,
57+ "^." ,
58+ "" , "" , "" , NULL );
59+ addLanguageTagMultiTableRegex (language , "qmp" ,
60+ "^EQMP[^\n]*[\n]*" ,
61+ "" , "" , "{tleave}" , NULL );
62+ addLanguageTagMultiTableRegex (language , "qmp" ,
63+ "^([-a-z_0-9A-Z]+)[[:space:]]---[^\n]*[\n]" ,
64+ "\\1" , "q" , ""
65+ "{{\n"
66+ " /QemuHX.funcmap _extraenabled {\n"
67+ " % make an extra tag for \"n-a-m-e\":\n"
68+ " % make string: qmp_n-a-m-e\n"
69+ " mark (qmp_) . :name _buildstring\n"
70+ " % replace - with _: qmp_n_a_m_e\n"
71+ " dup (-_) _tr!\n"
72+ " . :kind . _tagloc _tag\n"
73+ " _commit\n"
74+ " /QemuHX.funcmap _markextra\n"
75+ " } if\n"
76+ "}}" , NULL );
77+ addLanguageTagMultiTableRegex (language , "qmp" ,
78+ "^[^\n]+[\n]*" ,
79+ "" , "" , "" , NULL );
80+ addLanguageTagMultiTableRegex (language , "qmp" ,
81+ "^[\n]+" ,
82+ "" , "" , "" , NULL );
83+ addLanguageTagMultiTableRegex (language , "qmp" ,
84+ "^." ,
85+ "" , "" , "" , NULL );
86+ addLanguageTagMultiTableRegex (language , "texi" ,
87+ "^ETEXI[\n]*" ,
88+ "" , "" , "{tleave}" , NULL );
89+ addLanguageTagMultiTableRegex (language , "texi" ,
90+ "^@item[[:space:]]{1,}([-.a-z_0-9A-Z]{1,})[^\n]*[\n]*" ,
91+ "\\1" , "i" , "" , NULL );
92+ addLanguageTagMultiTableRegex (language , "texi" ,
93+ "^[^\n]+[\n]*" ,
94+ "" , "" , "" , NULL );
95+ addLanguageTagMultiTableRegex (language , "texi" ,
96+ "^[\n]+" ,
97+ "" , "" , "" , NULL );
98+ addLanguageTagMultiTableRegex (language , "texi" ,
99+ "^." ,
100+ "" , "" , "" , NULL );
101+ addLanguageTagMultiTableRegex (language , "rst" ,
102+ "^ERST[^\n]*[\n]*" ,
103+ "" , "" , "{tleave}" , NULL );
104+ addLanguageTagMultiTableRegex (language , "rst" ,
105+ "^[^\n]+[\n]*" ,
106+ "" , "" , "" , NULL );
107+ addLanguageTagMultiTableRegex (language , "rst" ,
108+ "^[\n]+" ,
109+ "" , "" , "" , NULL );
110+ addLanguageTagMultiTableRegex (language , "rst" ,
111+ "^." ,
112+ "" , "" , "" , NULL );
113+ addLanguageTagMultiTableRegex (language , "cmd" ,
114+ "^[ \t]*(SQMP)[\n]*" ,
115+ "" , "" , "{tleave}{_advanceTo=1start}" , NULL );
116+ addLanguageTagMultiTableRegex (language , "cmd" ,
117+ "^[ \t]*(STEXI)[\n]*" ,
118+ "" , "" , "{tleave}{_advanceTo=1start}" , NULL );
119+ addLanguageTagMultiTableRegex (language , "cmd" ,
120+ "^[ \t]*(SRST)[^\n]*[\n]*" ,
121+ "" , "" , "{tleave}{_advanceTo=1start}" , NULL );
122+ addLanguageTagMultiTableRegex (language , "cmd" ,
123+ "^[ \t]*\\}[ \t]*,[ \t]*[\n]*" ,
124+ "" , "" , "{tleave}" , NULL );
125+ addLanguageTagMultiTableRegex (language , "cmd" ,
126+ "^[ \t]*DEF\\(\"([^\"\n]+)\"[^\n]*[\n]" ,
127+ "\\1" , "c" , "" , NULL );
128+ addLanguageTagMultiTableRegex (language , "cmd" ,
129+ "^[ \t]*\\.name[ \t]*=[ \t]*\"" ,
130+ "" , "" , "{tenter=cmd0}" , NULL );
131+ addLanguageTagMultiTableRegex (language , "cmd" ,
132+ "^[^\n]+[\n]*" ,
133+ "" , "" , "" , NULL );
134+ addLanguageTagMultiTableRegex (language , "cmd" ,
135+ "^[\n]+" ,
136+ "" , "" , "" , NULL );
137+ addLanguageTagMultiTableRegex (language , "cmd" ,
138+ "^." ,
139+ "" , "" , "" , NULL );
140+ addLanguageTagMultiTableRegex (language , "cmd0" ,
141+ "^([^|\n]+)\\|" ,
142+ "\\1" , "c" , "" , NULL );
143+ addLanguageTagMultiTableRegex (language , "cmd0" ,
144+ "^([^\"\n]+)\"[^\n]*[\n]" ,
145+ "\\1" , "c" , "{tleave}" , NULL );
146+ addLanguageTagMultiTableRegex (language , "cmd0" ,
147+ "^[^\n]+[\n]*" ,
148+ "" , "" , "" , NULL );
149+ addLanguageTagMultiTableRegex (language , "cmd0" ,
150+ "^[\n]+" ,
151+ "" , "" , "" , NULL );
152+ addLanguageTagMultiTableRegex (language , "cmd0" ,
153+ "^." ,
154+ "" , "" , "" , NULL );
13155}
14156
15157extern parserDefinition * QemuHXParser (void )
@@ -34,6 +176,10 @@ extern parserDefinition* QemuHXParser (void)
34176 {
35177 true, 'i' , "infoitem" , "item in texinfo doc" ,
36178 },
179+ {
180+ true, 'c' , "commands" , "name member in HMPCommand struct" ,
181+ .version = 1 ,
182+ },
37183 };
38184 static xtagDefinition QemuHXXtagTable [] = {
39185 {
@@ -42,19 +188,7 @@ extern parserDefinition* QemuHXParser (void)
42188 .description = "Include mapping SQMP to C function name" ,
43189 },
44190 };
45- static tagRegexTable QemuHXTagRegexTable [] = {
46- {"^SQMP[[:space:]]([-a-z_0-9A-Z]+)[[:space:]]---" , "\\1" ,
47- "q" , "{mgroup=1}" , NULL , true},
48- {"^SQMP[[:space:]]([-a-z_0-9A-Z]+)[[:space:]]---" , "qmp_\\1" ,
49- "q" , "{mgroup=1}{_extra=funcmap}"
50- "{{\n"
51- " . :name dup (-_) _tr!\n"
52- " . exch name:\n"
53- "}}" , NULL , true},
54- {"^@item[[:space:]]{1,}([-.a-z_0-9A-Z]{1,})" , "\\1" ,
55- "i" , NULL , NULL , false},
56- };
57-
191+ static selectLanguage selectors [] = { selectHaxeOrQemuHXByCommentMarker , NULL };
58192
59193 parserDefinition * const def = parserNew ("QemuHX" );
60194
@@ -64,14 +198,13 @@ extern parserDefinition* QemuHXParser (void)
64198 def -> extensions = extensions ;
65199 def -> patterns = patterns ;
66200 def -> aliases = aliases ;
201+ def -> selectLanguage = selectors ;
67202 def -> method = METHOD_NOT_CRAFTED |METHOD_REGEX ;
68203 def -> useCork = CORK_QUEUE ;
69204 def -> kindTable = QemuHXKindTable ;
70205 def -> kindCount = ARRAY_SIZE (QemuHXKindTable );
71206 def -> xtagTable = QemuHXXtagTable ;
72207 def -> xtagCount = ARRAY_SIZE (QemuHXXtagTable );
73- def -> tagRegexTable = QemuHXTagRegexTable ;
74- def -> tagRegexCount = ARRAY_SIZE (QemuHXTagRegexTable );
75208 def -> initialize = initializeQemuHXParser ;
76209
77210 return def ;
0 commit comments