xref: /Universal-ctags/optlib/puppetManifest.c (revision b6124a60ca4730ea006b0411f9909cd38f8bd257)
13409f3d5SMasatake YAMATO /*
23409f3d5SMasatake YAMATO  * Generated by ./misc/optlib2c from optlib/puppetManifest.ctags, Don't edit this manually.
33409f3d5SMasatake YAMATO  */
43409f3d5SMasatake YAMATO #include "general.h"
53409f3d5SMasatake YAMATO #include "parse.h"
63409f3d5SMasatake YAMATO #include "routines.h"
70d502ef0SMasatake YAMATO #include "field.h"
80d502ef0SMasatake YAMATO #include "xtag.h"
93409f3d5SMasatake YAMATO 
103409f3d5SMasatake YAMATO 
11f570d51fSMasatake YAMATO typedef enum {
12f570d51fSMasatake YAMATO 	K_CLASS,
13f570d51fSMasatake YAMATO 	K_DEFINITION,
14f570d51fSMasatake YAMATO 	K_NODE,
15f570d51fSMasatake YAMATO 	K_RESOURCE,
16f570d51fSMasatake YAMATO 	K_VARIABLE,
170ee6ddc8SMasatake YAMATO 	K_PARAM,
18bd464c18SMasatake YAMATO 	K_VRESOURCE,
19b6f7c9a4SMasatake YAMATO 	K_TYPE,
20f570d51fSMasatake YAMATO } PuppetManifestKind;
21f570d51fSMasatake YAMATO 
22f570d51fSMasatake YAMATO 
initializePuppetManifestParser(const langType language)23fd51425fSMasatake YAMATO static void initializePuppetManifestParser (const langType language)
243409f3d5SMasatake YAMATO {
25*b6124a60SMasatake YAMATO 	addLanguageOptscriptToHook (language, SCRIPT_HOOK_PRELUDE,
26bd464c18SMasatake YAMATO 		"{{    % spec:dict<num,kind> TRYMAKETAG tag:int true\n"
27bd464c18SMasatake YAMATO 		"    % spec:dict<num,kind> TRYMAKETAG false\n"
28bd464c18SMasatake YAMATO 		"    /trymaketag {\n"
29bd464c18SMasatake YAMATO 		"        {\n"
30bd464c18SMasatake YAMATO 		"            {\n"
31bd464c18SMasatake YAMATO 		"                1 index _matchstr {\n"
32bd464c18SMasatake YAMATO 		"                    % key value str\n"
33bd464c18SMasatake YAMATO 		"                    3 -1 roll\n"
34bd464c18SMasatake YAMATO 		"                    % value str key\n"
35bd464c18SMasatake YAMATO 		"                    _matchloc\n"
36bd464c18SMasatake YAMATO 		"                    % value str loc\n"
37bd464c18SMasatake YAMATO 		"                    3 -1 roll exch\n"
38bd464c18SMasatake YAMATO 		"                    % str value loc\n"
39bd464c18SMasatake YAMATO 		"                    _tag _commit\n"
40bd464c18SMasatake YAMATO 		"                    stop\n"
41bd464c18SMasatake YAMATO 		"                } {\n"
42bd464c18SMasatake YAMATO 		"                    pop pop\n"
43bd464c18SMasatake YAMATO 		"                } ifelse\n"
44bd464c18SMasatake YAMATO 		"            } forall\n"
45bd464c18SMasatake YAMATO 		"         } stopped\n"
46bd464c18SMasatake YAMATO 		"    } def\n"
47bd464c18SMasatake YAMATO 		"}}");
483409f3d5SMasatake YAMATO 
493409f3d5SMasatake YAMATO 	addLanguageRegexTable (language, "main");
503409f3d5SMasatake YAMATO 	addLanguageRegexTable (language, "separator");
513409f3d5SMasatake YAMATO 	addLanguageRegexTable (language, "any");
523409f3d5SMasatake YAMATO 	addLanguageRegexTable (language, "ignoreWhiteSpace");
533409f3d5SMasatake YAMATO 	addLanguageRegexTable (language, "end");
543409f3d5SMasatake YAMATO 	addLanguageRegexTable (language, "endWithPop");
553409f3d5SMasatake YAMATO 	addLanguageRegexTable (language, "ssliteral");
563409f3d5SMasatake YAMATO 	addLanguageRegexTable (language, "dsliteral");
573409f3d5SMasatake YAMATO 	addLanguageRegexTable (language, "comment");
583409f3d5SMasatake YAMATO 	addLanguageRegexTable (language, "blockStart");
593409f3d5SMasatake YAMATO 	addLanguageRegexTable (language, "blockHead");
603409f3d5SMasatake YAMATO 	addLanguageRegexTable (language, "blockHeadPopAtLast");
613409f3d5SMasatake YAMATO 	addLanguageRegexTable (language, "block");
623409f3d5SMasatake YAMATO 	addLanguageRegexTable (language, "classStart");
633409f3d5SMasatake YAMATO 	addLanguageRegexTable (language, "resourceBlock");
643409f3d5SMasatake YAMATO 	addLanguageRegexTable (language, "skipLiteral");
653409f3d5SMasatake YAMATO 	addLanguageRegexTable (language, "skipBlock");
663409f3d5SMasatake YAMATO 	addLanguageRegexTable (language, "skipArray");
673409f3d5SMasatake YAMATO 	addLanguageRegexTable (language, "skipArgs");
683409f3d5SMasatake YAMATO 	addLanguageRegexTable (language, "skipCollector");
690ee6ddc8SMasatake YAMATO 	addLanguageRegexTable (language, "signature");
700ee6ddc8SMasatake YAMATO 	addLanguageRegexTable (language, "skipDefaultValue");
713409f3d5SMasatake YAMATO 	addLanguageRegexTable (language, "var");
723409f3d5SMasatake YAMATO 	addLanguageRegexTable (language, "defineStart");
733409f3d5SMasatake YAMATO 	addLanguageRegexTable (language, "caseStart");
743409f3d5SMasatake YAMATO 	addLanguageRegexTable (language, "ifStart");
753409f3d5SMasatake YAMATO 	addLanguageRegexTable (language, "nodeStart");
76b6f7c9a4SMasatake YAMATO 	addLanguageRegexTable (language, "typeStart");
773409f3d5SMasatake YAMATO 	addLanguageRegexTable (language, "comment_multiline");
783409f3d5SMasatake YAMATO 	addLanguageRegexTable (language, "comment_oneline");
793409f3d5SMasatake YAMATO 	addLanguageRegexTable (language, "resourceName");
803409f3d5SMasatake YAMATO 	addLanguageRegexTable (language, "resourceNameInArray");
813409f3d5SMasatake YAMATO 	addLanguageRegexTable (language, "resourceBody");
823409f3d5SMasatake YAMATO 	addLanguageRegexTable (language, "resourceArray");
833409f3d5SMasatake YAMATO 	addLanguageRegexTable (language, "resourceCollector");
843409f3d5SMasatake YAMATO 	addLanguageRegexTable (language, "varexpr");
853409f3d5SMasatake YAMATO 	addLanguageRegexTable (language, "caseBlock");
863409f3d5SMasatake YAMATO 
873409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "main",
883409f3d5SMasatake YAMATO 	                               "^/\\*",
893409f3d5SMasatake YAMATO 	                               "", "", "{tenter=comment_multiline}", NULL);
903409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "main",
913409f3d5SMasatake YAMATO 	                               "^\\#",
923409f3d5SMasatake YAMATO 	                               "", "", "{tenter=comment_oneline}", NULL);
933409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "main",
9478fe1fd3SMasatake YAMATO 	                               "^[ \t\n]+",
953409f3d5SMasatake YAMATO 	                               "", "", "", NULL);
963409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "main",
973409f3d5SMasatake YAMATO 	                               "^'",
983409f3d5SMasatake YAMATO 	                               "", "", "{tenter=ssliteral}", NULL);
993409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "main",
1003409f3d5SMasatake YAMATO 	                               "^\"",
1013409f3d5SMasatake YAMATO 	                               "", "", "{tenter=dsliteral}", NULL);
1023409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "main",
1033409f3d5SMasatake YAMATO 	                               "^<<?\\|",
1043409f3d5SMasatake YAMATO 	                               "", "", "{tenter=skipCollector}", NULL);
1053409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "main",
1063409f3d5SMasatake YAMATO 	                               "^\\$",
1073409f3d5SMasatake YAMATO 	                               "", "", "{tenter=var}", NULL);
1083409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "main",
10973467b38SMasatake YAMATO 	                               "^(@)?(::[a-zA-Z0-9:_]+|[a-zA-Z][a-zA-Z0-9:_]*)[ \t\n]*\\{",
11073467b38SMasatake YAMATO 	                               "", "", "{tenter=resourceBlock}"
11173467b38SMasatake YAMATO 		"{{\n"
1125c1bbad2SMasatake YAMATO 		"    \\1 _isstring {\n"
113bd464c18SMasatake YAMATO 		"       /vresource\n"
1145c1bbad2SMasatake YAMATO 		"    } {\n"
1155c1bbad2SMasatake YAMATO 		"       /resource\n"
11673467b38SMasatake YAMATO 		"    } ifelse \\2 true\n"
117bd464c18SMasatake YAMATO 		"    % kind:name type:string true\n"
11873467b38SMasatake YAMATO 		"}}", NULL);
1193409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "main",
1203409f3d5SMasatake YAMATO 	                               "^class[ \t\n]+",
1213409f3d5SMasatake YAMATO 	                               "", "", "{tenter=classStart}", NULL);
1223409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "main",
1233409f3d5SMasatake YAMATO 	                               "^define[ \t\n]+",
1243409f3d5SMasatake YAMATO 	                               "", "", "{tenter=defineStart}", NULL);
1253409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "main",
1263409f3d5SMasatake YAMATO 	                               "^case[ \t\n]+",
1273409f3d5SMasatake YAMATO 	                               "", "", "{tenter=caseStart}", NULL);
1283409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "main",
1293409f3d5SMasatake YAMATO 	                               "^(if|elsif|else|unless)[ \t\n]+",
1303409f3d5SMasatake YAMATO 	                               "", "", "{tenter=ifStart}", NULL);
1313409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "main",
1323409f3d5SMasatake YAMATO 	                               "^node[ \t\n]+",
1333409f3d5SMasatake YAMATO 	                               "", "", "{tenter=nodeStart}", NULL);
1343409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "main",
135b6f7c9a4SMasatake YAMATO 	                               "^type[ \t\n]+",
136b6f7c9a4SMasatake YAMATO 	                               "", "", "{tenter=typeStart}", NULL);
137b6f7c9a4SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "main",
138eca6f84cSMasatake YAMATO 	                               "^\\$",
139eca6f84cSMasatake YAMATO 	                               "", "", "{tenter=var}", NULL);
140eca6f84cSMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "main",
1413409f3d5SMasatake YAMATO 	                               "^\\(",
1423409f3d5SMasatake YAMATO 	                               "", "", "{tenter=skipArgs}", NULL);
1433409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "main",
1443409f3d5SMasatake YAMATO 	                               "^\\{",
1453409f3d5SMasatake YAMATO 	                               "", "", "{tenter=skipBlock}", NULL);
1463409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "main",
1473409f3d5SMasatake YAMATO 	                               "^.",
1483409f3d5SMasatake YAMATO 	                               "", "", "{tenter=separator}", NULL);
1493409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "separator",
1503409f3d5SMasatake YAMATO 	                               "^[a-zA-Z0-9]",
1513409f3d5SMasatake YAMATO 	                               "", "", "", NULL);
1523409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "separator",
1533409f3d5SMasatake YAMATO 	                               "^",
1543409f3d5SMasatake YAMATO 	                               "", "", "{tleave}", NULL);
1553409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "any",
1563409f3d5SMasatake YAMATO 	                               "^.",
1573409f3d5SMasatake YAMATO 	                               "", "", "", NULL);
1583409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "ignoreWhiteSpace",
15978fe1fd3SMasatake YAMATO 	                               "^[ \t\n]+",
1603409f3d5SMasatake YAMATO 	                               "", "", "", NULL);
1613409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "end",
1623409f3d5SMasatake YAMATO 	                               "^",
1633409f3d5SMasatake YAMATO 	                               "", "", "{tleave}", NULL);
1643409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "endWithPop",
1653409f3d5SMasatake YAMATO 	                               "^",
1663409f3d5SMasatake YAMATO 	                               "", "", "{tleave}{scope=pop}", NULL);
1673409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "ssliteral",
168e7210e24SMasatake YAMATO 	                               "^[^']*'",
169e7210e24SMasatake YAMATO 	                               "", "", "{tleave}", NULL);
170e7210e24SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "ssliteral",
17178fe1fd3SMasatake YAMATO 	                               "^[^']+",
172ae1a08feSMasatake YAMATO 	                               "", "", "", NULL);
173e7210e24SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "dsliteral",
174e7210e24SMasatake YAMATO 	                               "^[^\"]*\"",
1753409f3d5SMasatake YAMATO 	                               "", "", "{tleave}", NULL);
176ae1a08feSMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "dsliteral",
17778fe1fd3SMasatake YAMATO 	                               "^[^\"]+",
1783409f3d5SMasatake YAMATO 	                               "", "", "", NULL);
1793409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "comment",
1803409f3d5SMasatake YAMATO 	                               "^/\\*",
1813409f3d5SMasatake YAMATO 	                               "", "", "{tenter=comment_multiline}", NULL);
1823409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "comment",
1833409f3d5SMasatake YAMATO 	                               "^\\#",
1843409f3d5SMasatake YAMATO 	                               "", "", "{tenter=comment_oneline}", NULL);
1853409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "blockStart",
18673467b38SMasatake YAMATO 	                               "^(@)?(::[a-zA-Z0-9:_]+|[a-zA-Z][a-zA-Z0-9:_]*)[ \t\n]*\\{",
18773467b38SMasatake YAMATO 	                               "", "", "{tenter=resourceBlock}"
18873467b38SMasatake YAMATO 		"{{\n"
1895c1bbad2SMasatake YAMATO 		"    \\1 _isstring {\n"
190bd464c18SMasatake YAMATO 		"       /vresource\n"
1915c1bbad2SMasatake YAMATO 		"    } {\n"
1925c1bbad2SMasatake YAMATO 		"       /resource\n"
19373467b38SMasatake YAMATO 		"    } ifelse \\2 true\n"
194bd464c18SMasatake YAMATO 		"    % kind:name type:string true\n"
19573467b38SMasatake YAMATO 		"}}", NULL);
1963409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "blockStart",
1973409f3d5SMasatake YAMATO 	                               "^class[ \t\n]+",
1983409f3d5SMasatake YAMATO 	                               "", "", "{tenter=classStart}", NULL);
1993409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "blockStart",
2003409f3d5SMasatake YAMATO 	                               "^define[ \t\n]+",
2013409f3d5SMasatake YAMATO 	                               "", "", "{tenter=defineStart}", NULL);
2023409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "blockStart",
2033409f3d5SMasatake YAMATO 	                               "^case[ \t\n]+",
2043409f3d5SMasatake YAMATO 	                               "", "", "{tenter=caseStart}", NULL);
2053409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "blockStart",
2063409f3d5SMasatake YAMATO 	                               "^(if|elsif|else|unless)[ \t\n]+",
2073409f3d5SMasatake YAMATO 	                               "", "", "{tenter=ifStart}", NULL);
2083409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "blockStart",
2093409f3d5SMasatake YAMATO 	                               "^node[ \t\n]+",
2103409f3d5SMasatake YAMATO 	                               "", "", "{tenter=nodeStart}", NULL);
211eca6f84cSMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "blockStart",
212b6f7c9a4SMasatake YAMATO 	                               "^type[ \t\n]+",
213b6f7c9a4SMasatake YAMATO 	                               "", "", "{tenter=typeStart}", NULL);
214b6f7c9a4SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "blockStart",
215eca6f84cSMasatake YAMATO 	                               "^\\$",
216eca6f84cSMasatake YAMATO 	                               "", "", "{tenter=var}", NULL);
2173409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "blockHead",
2183409f3d5SMasatake YAMATO 	                               "^/\\*",
2193409f3d5SMasatake YAMATO 	                               "", "", "{tenter=comment_multiline}", NULL);
2203409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "blockHead",
2213409f3d5SMasatake YAMATO 	                               "^\\#",
2223409f3d5SMasatake YAMATO 	                               "", "", "{tenter=comment_oneline}", NULL);
2233409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "blockHead",
2240e5a358cSMasatake YAMATO 	                               "^[ \t\n]+",
2250e5a358cSMasatake YAMATO 	                               "", "", "", NULL);
2260e5a358cSMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "blockHead",
2273409f3d5SMasatake YAMATO 	                               "^\\{",
2283409f3d5SMasatake YAMATO 	                               "", "", "{tenter=block,end}", NULL);
2293409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "blockHead",
2303409f3d5SMasatake YAMATO 	                               "^.",
2313409f3d5SMasatake YAMATO 	                               "", "", "", NULL);
2323409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "blockHeadPopAtLast",
2333409f3d5SMasatake YAMATO 	                               "^/\\*",
2343409f3d5SMasatake YAMATO 	                               "", "", "{tenter=comment_multiline}", NULL);
2353409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "blockHeadPopAtLast",
2363409f3d5SMasatake YAMATO 	                               "^\\#",
2373409f3d5SMasatake YAMATO 	                               "", "", "{tenter=comment_oneline}", NULL);
2383409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "blockHeadPopAtLast",
2393409f3d5SMasatake YAMATO 	                               "^\\{",
2403409f3d5SMasatake YAMATO 	                               "", "", "{tenter=block,endWithPop}", NULL);
2413409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "blockHeadPopAtLast",
2426c3c5407SMasatake YAMATO 	                               "^[ \t\n]+",
2436c3c5407SMasatake YAMATO 	                               "", "", "", NULL);
2446c3c5407SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "blockHeadPopAtLast",
2456c3c5407SMasatake YAMATO 	                               "^inherits[ \t\n]+(::[a-z][_a-zA-Z0-9:]*|[a-z][_a-zA-Z0-9:]*)[ \t\n]*",
2466c3c5407SMasatake YAMATO 	                               "", "", ""
2476c3c5407SMasatake YAMATO 		"{{\n"
2486c3c5407SMasatake YAMATO 		"    _scopetop {\n"
2496c3c5407SMasatake YAMATO 		"        dup :kind /class eq {\n"
2506c3c5407SMasatake YAMATO 		"           \\1 inherits:\n"
2516c3c5407SMasatake YAMATO 		"        } {\n"
2526c3c5407SMasatake YAMATO 		"           pop\n"
2536c3c5407SMasatake YAMATO 		"        } ifelse\n"
2546c3c5407SMasatake YAMATO 		"    } if\n"
2556c3c5407SMasatake YAMATO 		"}}", NULL);
2566c3c5407SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "blockHeadPopAtLast",
2573409f3d5SMasatake YAMATO 	                               "^.",
2583409f3d5SMasatake YAMATO 	                               "", "", "", NULL);
2593409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "block",
26078fe1fd3SMasatake YAMATO 	                               "^[ \t\n]+",
2613409f3d5SMasatake YAMATO 	                               "", "", "", NULL);
2623409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "block",
26373467b38SMasatake YAMATO 	                               "^(@)?(::[a-zA-Z0-9:_]+|[a-zA-Z][a-zA-Z0-9:_]*)[ \t\n]*\\{",
26473467b38SMasatake YAMATO 	                               "", "", "{tenter=resourceBlock}"
26573467b38SMasatake YAMATO 		"{{\n"
2665c1bbad2SMasatake YAMATO 		"    \\1 _isstring {\n"
267bd464c18SMasatake YAMATO 		"       /vresource\n"
2685c1bbad2SMasatake YAMATO 		"    } {\n"
2695c1bbad2SMasatake YAMATO 		"       /resource\n"
27073467b38SMasatake YAMATO 		"    } ifelse \\2 true\n"
271bd464c18SMasatake YAMATO 		"    % kind:name type:string true\n"
27273467b38SMasatake YAMATO 		"}}", NULL);
2733409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "block",
2743409f3d5SMasatake YAMATO 	                               "^class[ \t\n]+",
2753409f3d5SMasatake YAMATO 	                               "", "", "{tenter=classStart}", NULL);
2763409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "block",
2773409f3d5SMasatake YAMATO 	                               "^define[ \t\n]+",
2783409f3d5SMasatake YAMATO 	                               "", "", "{tenter=defineStart}", NULL);
2793409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "block",
2803409f3d5SMasatake YAMATO 	                               "^case[ \t\n]+",
2813409f3d5SMasatake YAMATO 	                               "", "", "{tenter=caseStart}", NULL);
2823409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "block",
2833409f3d5SMasatake YAMATO 	                               "^(if|elsif|else|unless)[ \t\n]+",
2843409f3d5SMasatake YAMATO 	                               "", "", "{tenter=ifStart}", NULL);
2853409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "block",
2863409f3d5SMasatake YAMATO 	                               "^node[ \t\n]+",
2873409f3d5SMasatake YAMATO 	                               "", "", "{tenter=nodeStart}", NULL);
2883409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "block",
289b6f7c9a4SMasatake YAMATO 	                               "^type[ \t\n]+",
290b6f7c9a4SMasatake YAMATO 	                               "", "", "{tenter=typeStart}", NULL);
291b6f7c9a4SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "block",
292eca6f84cSMasatake YAMATO 	                               "^\\$",
293eca6f84cSMasatake YAMATO 	                               "", "", "{tenter=var}", NULL);
294eca6f84cSMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "block",
295ae1a08feSMasatake YAMATO 	                               "^<<?\\|",
296ae1a08feSMasatake YAMATO 	                               "", "", "{tenter=skipCollector}", NULL);
297ae1a08feSMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "block",
2983409f3d5SMasatake YAMATO 	                               "^;?[ \t\n]*\\}",
2993409f3d5SMasatake YAMATO 	                               "", "", "{tleave}", NULL);
3003409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "block",
3013409f3d5SMasatake YAMATO 	                               "^;",
30273467b38SMasatake YAMATO 	                               "", "", "{tjump=resourceBlock}{scope=pop}"
30373467b38SMasatake YAMATO 		"{{\n"
30473467b38SMasatake YAMATO 		"    false\n"
30573467b38SMasatake YAMATO 		"}}", NULL);
3063409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "block",
3073409f3d5SMasatake YAMATO 	                               "^:",
3083409f3d5SMasatake YAMATO 	                               "", "", "", NULL);
3093409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "block",
310ae1a08feSMasatake YAMATO 	                               "^/\\*",
311ae1a08feSMasatake YAMATO 	                               "", "", "{tenter=comment_multiline}", NULL);
312ae1a08feSMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "block",
313ae1a08feSMasatake YAMATO 	                               "^\\#",
314ae1a08feSMasatake YAMATO 	                               "", "", "{tenter=comment_oneline}", NULL);
315ae1a08feSMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "block",
316ae1a08feSMasatake YAMATO 	                               "^'",
317ae1a08feSMasatake YAMATO 	                               "", "", "{tenter=ssliteral}", NULL);
318ae1a08feSMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "block",
319ae1a08feSMasatake YAMATO 	                               "^\"",
320ae1a08feSMasatake YAMATO 	                               "", "", "{tenter=dsliteral}", NULL);
321ae1a08feSMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "block",
3220e5a358cSMasatake YAMATO 	                               "^\\{",
3230e5a358cSMasatake YAMATO 	                               "", "", "{tenter=block}", NULL);
3240e5a358cSMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "block",
3253409f3d5SMasatake YAMATO 	                               "^.",
3263409f3d5SMasatake YAMATO 	                               "", "", "{tenter=separator}", NULL);
3273409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "classStart",
3283409f3d5SMasatake YAMATO 	                               "^/\\*",
3293409f3d5SMasatake YAMATO 	                               "", "", "{tenter=comment_multiline}", NULL);
3303409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "classStart",
3313409f3d5SMasatake YAMATO 	                               "^\\#",
3323409f3d5SMasatake YAMATO 	                               "", "", "{tenter=comment_oneline}", NULL);
3333409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "classStart",
3346c3c5407SMasatake YAMATO 	                               "^(::[a-z][_a-zA-Z0-9:]*|[a-z][_a-zA-Z0-9:]*)[ \t\n]*(\\(|\\{|inherits[ \t\n]+(::[a-z][_a-zA-Z0-9:]*|[a-z][_a-zA-Z0-9:]*))[ \t\n]*",
3356c3c5407SMasatake YAMATO 	                               "\\1", "c", "{scope=push}"
3365c1bbad2SMasatake YAMATO 		"{{\n"
3375c1bbad2SMasatake YAMATO 		"    \\3 _isstring {\n"
3385c1bbad2SMasatake YAMATO 		"        . exch inherits:\n"
3396c3c5407SMasatake YAMATO 		"        /blockHead /endWithPop _tentercont\n"
3406c3c5407SMasatake YAMATO 		"    } {\n"
3416c3c5407SMasatake YAMATO 		"        \\2 0 get ?( eq {\n"
3426c3c5407SMasatake YAMATO 		"            % for gathering signature\n"
3436c3c5407SMasatake YAMATO 		"            mark ?(\n"
3446c3c5407SMasatake YAMATO 		"            % {tenter=signature,blockHeadPopAtLast}\n"
3456c3c5407SMasatake YAMATO 		"            /signature /blockHeadPopAtLast _tentercont\n"
3466c3c5407SMasatake YAMATO 		"        } {\n"
3476c3c5407SMasatake YAMATO 		"            2 /start _matchloc _advanceto\n"
3486c3c5407SMasatake YAMATO 		"            /blockHead /endWithPop _tentercont\n"
3496c3c5407SMasatake YAMATO 		"        } ifelse\n"
3506c3c5407SMasatake YAMATO 		"    } ifelse\n"
3515c1bbad2SMasatake YAMATO 		"}}", NULL);
3523409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "resourceBlock",
35378fe1fd3SMasatake YAMATO 	                               "^[ \t\n]+",
3543409f3d5SMasatake YAMATO 	                               "", "", "", NULL);
3553409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "resourceBlock",
3561e22d3bcSMasatake YAMATO 	                               "^\\}",
35773467b38SMasatake YAMATO 	                               "", "", "{tleave}"
35873467b38SMasatake YAMATO 		"{{\n"
35973467b38SMasatake YAMATO 		"    { pop pop } if\n"
36073467b38SMasatake YAMATO 		"}}", NULL);
3611e22d3bcSMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "resourceBlock",
3623409f3d5SMasatake YAMATO 	                               "^'",
3633409f3d5SMasatake YAMATO 	                               "", "", "{tenter=resourceName}{_advanceTo=0start}", NULL);
3643409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "resourceBlock",
3653409f3d5SMasatake YAMATO 	                               "^\"",
3663409f3d5SMasatake YAMATO 	                               "", "", "{tenter=resourceName}{_advanceTo=0start}", NULL);
3673409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "resourceBlock",
3683409f3d5SMasatake YAMATO 	                               "^\\[",
3693409f3d5SMasatake YAMATO 	                               "", "", "{tenter=resourceArray}", NULL);
3703409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "resourceBlock",
3710e5a358cSMasatake YAMATO 	                               "^\\{",
3720e5a358cSMasatake YAMATO 	                               "", "", "{tenter=block}", NULL);
3730e5a358cSMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "resourceBlock",
3741e22d3bcSMasatake YAMATO 	                               "^/\\*",
3751e22d3bcSMasatake YAMATO 	                               "", "", "{tenter=comment_multiline}", NULL);
3761e22d3bcSMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "resourceBlock",
3771e22d3bcSMasatake YAMATO 	                               "^\\#",
3781e22d3bcSMasatake YAMATO 	                               "", "", "{tenter=comment_oneline}", NULL);
3793409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "resourceBlock",
3803409f3d5SMasatake YAMATO 	                               "^.",
3813409f3d5SMasatake YAMATO 	                               "", "", "{tenter=resourceBody}{scope=push}{placeholder}", NULL);
3823409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipLiteral",
3833409f3d5SMasatake YAMATO 	                               "^'",
3843409f3d5SMasatake YAMATO 	                               "", "", "{tenter=ssliteral}", NULL);
3853409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipLiteral",
3863409f3d5SMasatake YAMATO 	                               "^\"",
3873409f3d5SMasatake YAMATO 	                               "", "", "{tenter=dsliteral}", NULL);
3883409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipBlock",
3893409f3d5SMasatake YAMATO 	                               "^/\\*",
3903409f3d5SMasatake YAMATO 	                               "", "", "{tenter=comment_multiline}", NULL);
3913409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipBlock",
3923409f3d5SMasatake YAMATO 	                               "^\\#",
3933409f3d5SMasatake YAMATO 	                               "", "", "{tenter=comment_oneline}", NULL);
3943409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipBlock",
3953409f3d5SMasatake YAMATO 	                               "^'",
3963409f3d5SMasatake YAMATO 	                               "", "", "{tenter=ssliteral}", NULL);
3973409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipBlock",
3983409f3d5SMasatake YAMATO 	                               "^\"",
3993409f3d5SMasatake YAMATO 	                               "", "", "{tenter=dsliteral}", NULL);
4003409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipBlock",
4013409f3d5SMasatake YAMATO 	                               "^\\{",
4023409f3d5SMasatake YAMATO 	                               "", "", "{tenter=skipBlock}", NULL);
4033409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipBlock",
4043409f3d5SMasatake YAMATO 	                               "^\\}",
4053409f3d5SMasatake YAMATO 	                               "", "", "{tleave}", NULL);
4063409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipBlock",
4073409f3d5SMasatake YAMATO 	                               "^.",
4083409f3d5SMasatake YAMATO 	                               "", "", "", NULL);
4093409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipArray",
4103409f3d5SMasatake YAMATO 	                               "^/\\*",
4113409f3d5SMasatake YAMATO 	                               "", "", "{tenter=comment_multiline}", NULL);
4123409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipArray",
4133409f3d5SMasatake YAMATO 	                               "^\\#",
4143409f3d5SMasatake YAMATO 	                               "", "", "{tenter=comment_oneline}", NULL);
4153409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipArray",
4163409f3d5SMasatake YAMATO 	                               "^'",
4173409f3d5SMasatake YAMATO 	                               "", "", "{tenter=ssliteral}", NULL);
4183409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipArray",
4193409f3d5SMasatake YAMATO 	                               "^\"",
4203409f3d5SMasatake YAMATO 	                               "", "", "{tenter=dsliteral}", NULL);
4213409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipArray",
4223409f3d5SMasatake YAMATO 	                               "^\\[",
4233409f3d5SMasatake YAMATO 	                               "", "", "{tenter=skipArray}", NULL);
4243409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipArray",
4253409f3d5SMasatake YAMATO 	                               "^\\]",
4263409f3d5SMasatake YAMATO 	                               "", "", "{tleave}", NULL);
4273409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipArray",
4283409f3d5SMasatake YAMATO 	                               "^.",
4293409f3d5SMasatake YAMATO 	                               "", "", "", NULL);
4303409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipArgs",
4313409f3d5SMasatake YAMATO 	                               "^/\\*",
4323409f3d5SMasatake YAMATO 	                               "", "", "{tenter=comment_multiline}", NULL);
4333409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipArgs",
4343409f3d5SMasatake YAMATO 	                               "^\\#",
4353409f3d5SMasatake YAMATO 	                               "", "", "{tenter=comment_oneline}", NULL);
4363409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipArgs",
4373409f3d5SMasatake YAMATO 	                               "^'",
4383409f3d5SMasatake YAMATO 	                               "", "", "{tenter=ssliteral}", NULL);
4393409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipArgs",
4403409f3d5SMasatake YAMATO 	                               "^\"",
4413409f3d5SMasatake YAMATO 	                               "", "", "{tenter=dsliteral}", NULL);
4423409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipArgs",
4433409f3d5SMasatake YAMATO 	                               "^\\(",
4443409f3d5SMasatake YAMATO 	                               "", "", "{tenter=skipArgs}", NULL);
4453409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipArgs",
4463409f3d5SMasatake YAMATO 	                               "^\\)",
4473409f3d5SMasatake YAMATO 	                               "", "", "{tleave}", NULL);
4483409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipArgs",
4493409f3d5SMasatake YAMATO 	                               "^.",
4503409f3d5SMasatake YAMATO 	                               "", "", "", NULL);
4513409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipCollector",
4523409f3d5SMasatake YAMATO 	                               "^/\\*",
4533409f3d5SMasatake YAMATO 	                               "", "", "{tenter=comment_multiline}", NULL);
4543409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipCollector",
4553409f3d5SMasatake YAMATO 	                               "^\\#",
4563409f3d5SMasatake YAMATO 	                               "", "", "{tenter=comment_oneline}", NULL);
4573409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipCollector",
4583409f3d5SMasatake YAMATO 	                               "^'",
4593409f3d5SMasatake YAMATO 	                               "", "", "{tenter=ssliteral}", NULL);
4603409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipCollector",
4613409f3d5SMasatake YAMATO 	                               "^\"",
4623409f3d5SMasatake YAMATO 	                               "", "", "{tenter=dsliteral}", NULL);
4633409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipCollector",
4643409f3d5SMasatake YAMATO 	                               "^<<?\\|",
4653409f3d5SMasatake YAMATO 	                               "", "", "{tenter=skipCollector}", NULL);
4663409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipCollector",
4673409f3d5SMasatake YAMATO 	                               "^\\|>>?",
4683409f3d5SMasatake YAMATO 	                               "", "", "{tleave}", NULL);
4693409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipCollector",
4703409f3d5SMasatake YAMATO 	                               "^.",
4713409f3d5SMasatake YAMATO 	                               "", "", "", NULL);
4720ee6ddc8SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "signature",
4730ee6ddc8SMasatake YAMATO 	                               "^/\\*",
4740ee6ddc8SMasatake YAMATO 	                               "", "", "{tenter=comment_multiline}", NULL);
4750ee6ddc8SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "signature",
4760ee6ddc8SMasatake YAMATO 	                               "^\\#",
4770ee6ddc8SMasatake YAMATO 	                               "", "", "{tenter=comment_oneline}", NULL);
4780ee6ddc8SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "signature",
4790ee6ddc8SMasatake YAMATO 	                               "^'",
4800ee6ddc8SMasatake YAMATO 	                               "", "", "{tenter=ssliteral}", NULL);
4810ee6ddc8SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "signature",
4820ee6ddc8SMasatake YAMATO 	                               "^\"",
4830ee6ddc8SMasatake YAMATO 	                               "", "", "{tenter=dsliteral}", NULL);
4840ee6ddc8SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "signature",
4850ee6ddc8SMasatake YAMATO 	                               "^[ \t\n]+",
4860ee6ddc8SMasatake YAMATO 	                               "", "", "", NULL);
4870ee6ddc8SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "signature",
4880ee6ddc8SMasatake YAMATO 	                               "^\\)",
4890ee6ddc8SMasatake YAMATO 	                               "", "", "{tleave}"
4900ee6ddc8SMasatake YAMATO 		"{{\n"
4910ee6ddc8SMasatake YAMATO 		"    %\n"
4920ee6ddc8SMasatake YAMATO 		"    % fill signature\n"
4930ee6ddc8SMasatake YAMATO 		"    %\n"
4940ee6ddc8SMasatake YAMATO 		"    dup ?, eq { pop } if\n"
4950ee6ddc8SMasatake YAMATO 		"    ?) _buildstring _scopetop {\n"
4960ee6ddc8SMasatake YAMATO 		"        exch signature:\n"
4970ee6ddc8SMasatake YAMATO 		"    } {\n"
4980ee6ddc8SMasatake YAMATO 		"        % something wrong\n"
4990ee6ddc8SMasatake YAMATO 		"        pop\n"
5000ee6ddc8SMasatake YAMATO 		"    } ifelse\n"
5010ee6ddc8SMasatake YAMATO 		"}}", NULL);
5020ee6ddc8SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "signature",
5030ee6ddc8SMasatake YAMATO 	                               "^\\$([a-zA-Z][_a-zA-Z0-9:]*)[ \t]*([=,])[ \t]*",
5040ee6ddc8SMasatake YAMATO 	                               "\\1", "p", "{scope=ref}"
5050ee6ddc8SMasatake YAMATO 		"{{\n"
5060ee6ddc8SMasatake YAMATO 		"    % push the name of parameter for filling the signature field of definition\n"
5070ee6ddc8SMasatake YAMATO 		"    \\2 0 get ?= eq {\n"
5080ee6ddc8SMasatake YAMATO 		"       /skipDefaultValue _tenter\n"
5090ee6ddc8SMasatake YAMATO 		"    } if\n"
5100ee6ddc8SMasatake YAMATO 		"    ?$ \\1 ?,\n"
5110ee6ddc8SMasatake YAMATO 		"}}", NULL);
5120ee6ddc8SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "signature",
5130ee6ddc8SMasatake YAMATO 	                               "^.",
5140ee6ddc8SMasatake YAMATO 	                               "", "", "", NULL);
5150ee6ddc8SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipDefaultValue",
5160ee6ddc8SMasatake YAMATO 	                               "^/\\*",
5170ee6ddc8SMasatake YAMATO 	                               "", "", "{tenter=comment_multiline}", NULL);
5180ee6ddc8SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipDefaultValue",
5190ee6ddc8SMasatake YAMATO 	                               "^\\#",
5200ee6ddc8SMasatake YAMATO 	                               "", "", "{tenter=comment_oneline}", NULL);
5210ee6ddc8SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipDefaultValue",
5220ee6ddc8SMasatake YAMATO 	                               "^'",
5230ee6ddc8SMasatake YAMATO 	                               "", "", "{tenter=ssliteral}", NULL);
5240ee6ddc8SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipDefaultValue",
5250ee6ddc8SMasatake YAMATO 	                               "^\"",
5260ee6ddc8SMasatake YAMATO 	                               "", "", "{tenter=dsliteral}", NULL);
5270ee6ddc8SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipDefaultValue",
5280ee6ddc8SMasatake YAMATO 	                               "^\\[",
5290ee6ddc8SMasatake YAMATO 	                               "", "", "{tenter=skipArray}", NULL);
5300ee6ddc8SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipDefaultValue",
5310ee6ddc8SMasatake YAMATO 	                               "^\\{",
5320ee6ddc8SMasatake YAMATO 	                               "", "", "{tenter=skipBlock}", NULL);
5330ee6ddc8SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipDefaultValue",
5340ee6ddc8SMasatake YAMATO 	                               "^\\(",
5350ee6ddc8SMasatake YAMATO 	                               "", "", "{tenter=skipArgs}", NULL);
5360ee6ddc8SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipDefaultValue",
5370ee6ddc8SMasatake YAMATO 	                               "^,",
5380ee6ddc8SMasatake YAMATO 	                               "", "", "{tleave}", NULL);
5390ee6ddc8SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipDefaultValue",
5400ee6ddc8SMasatake YAMATO 	                               "^\\)",
5410ee6ddc8SMasatake YAMATO 	                               "", "", "{tleave}{_advanceTo=0start}", NULL);
5420ee6ddc8SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "skipDefaultValue",
5430ee6ddc8SMasatake YAMATO 	                               "^.",
5440ee6ddc8SMasatake YAMATO 	                               "", "", "", NULL);
5453409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "var",
54620a1fd27SMasatake YAMATO 	                               "^(::[a-zA-Z0-9_:]+|[a-zA-Z_][a-zA-Z0-9_:]*)[ \t\n]*=",
54720a1fd27SMasatake YAMATO 	                               "\\1", "v", "{tenter=varexpr,end}"
54820a1fd27SMasatake YAMATO 		"{{\n"
54920a1fd27SMasatake YAMATO 		"    \\1 0 get ?: eq not {\n"
55020a1fd27SMasatake YAMATO 		"       . _scoperef\n"
55120a1fd27SMasatake YAMATO 		"    } if\n"
55220a1fd27SMasatake YAMATO 		"}}", NULL);
5533409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "defineStart",
5543409f3d5SMasatake YAMATO 	                               "^/\\*",
5553409f3d5SMasatake YAMATO 	                               "", "", "{tenter=comment_multiline}", NULL);
5563409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "defineStart",
5573409f3d5SMasatake YAMATO 	                               "^\\#",
5583409f3d5SMasatake YAMATO 	                               "", "", "{tenter=comment_oneline}", NULL);
5593409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "defineStart",
56020a1fd27SMasatake YAMATO 	                               "^([a-z][_a-zA-Z0-9:]*)[ \n\t]*([({])",
56120a1fd27SMasatake YAMATO 	                               "\\1", "d", "{scope=push}"
5620ee6ddc8SMasatake YAMATO 		"{{\n"
56320a1fd27SMasatake YAMATO 		"    \\2 0 get ?( eq {\n"
5640ee6ddc8SMasatake YAMATO 		"       % for gathering signature\n"
5650ee6ddc8SMasatake YAMATO 		"       mark ?(\n"
56620a1fd27SMasatake YAMATO 		"       % {tenter=signature,blockHeadPopAtLast}\n"
56720a1fd27SMasatake YAMATO 		"       /signature /blockHeadPopAtLast _tentercont\n"
56820a1fd27SMasatake YAMATO 		"    } {\n"
56920a1fd27SMasatake YAMATO 		"       /block /endWithPop _tentercont\n"
57020a1fd27SMasatake YAMATO 		"    } ifelse\n"
5710ee6ddc8SMasatake YAMATO 		"}}", NULL);
5723409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "caseStart",
5733409f3d5SMasatake YAMATO 	                               "^/\\*",
5743409f3d5SMasatake YAMATO 	                               "", "", "{tenter=comment_multiline}", NULL);
5753409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "caseStart",
5763409f3d5SMasatake YAMATO 	                               "^\\#",
5773409f3d5SMasatake YAMATO 	                               "", "", "{tenter=comment_oneline}", NULL);
5783409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "caseStart",
57978fe1fd3SMasatake YAMATO 	                               "^[ \t\n]+",
5803409f3d5SMasatake YAMATO 	                               "", "", "", NULL);
5813409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "caseStart",
5823409f3d5SMasatake YAMATO 	                               "^\\{",
5833409f3d5SMasatake YAMATO 	                               "", "", "{tenter=caseBlock}", NULL);
5843409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "caseStart",
5853409f3d5SMasatake YAMATO 	                               "^}",
5863409f3d5SMasatake YAMATO 	                               "", "", "{tleave}", NULL);
5873409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "caseStart",
5883409f3d5SMasatake YAMATO 	                               "^.",
5893409f3d5SMasatake YAMATO 	                               "", "", "", NULL);
5903409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "ifStart",
5913409f3d5SMasatake YAMATO 	                               "^/\\*",
5923409f3d5SMasatake YAMATO 	                               "", "", "{tenter=comment_multiline}", NULL);
5933409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "ifStart",
5943409f3d5SMasatake YAMATO 	                               "^\\#",
5953409f3d5SMasatake YAMATO 	                               "", "", "{tenter=comment_oneline}", NULL);
5963409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "ifStart",
59778fe1fd3SMasatake YAMATO 	                               "^[ \t\n]+",
5983409f3d5SMasatake YAMATO 	                               "", "", "", NULL);
5993409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "ifStart",
6003409f3d5SMasatake YAMATO 	                               "^'",
6013409f3d5SMasatake YAMATO 	                               "", "", "{tenter=ssliteral}", NULL);
6023409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "ifStart",
6033409f3d5SMasatake YAMATO 	                               "^\"",
6043409f3d5SMasatake YAMATO 	                               "", "", "{tenter=dsliteral}", NULL);
6053409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "ifStart",
6063409f3d5SMasatake YAMATO 	                               "^\\{",
6073409f3d5SMasatake YAMATO 	                               "", "", "{tenter=block,end}", NULL);
6083409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "ifStart",
6093409f3d5SMasatake YAMATO 	                               "^.",
6103409f3d5SMasatake YAMATO 	                               "", "", "", NULL);
6113409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "nodeStart",
6123409f3d5SMasatake YAMATO 	                               "^/\\*",
6133409f3d5SMasatake YAMATO 	                               "", "", "{tenter=comment_multiline}", NULL);
6143409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "nodeStart",
6153409f3d5SMasatake YAMATO 	                               "^\\#",
6163409f3d5SMasatake YAMATO 	                               "", "", "{tenter=comment_oneline}", NULL);
6173409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "nodeStart",
61878fe1fd3SMasatake YAMATO 	                               "^[ \t\n]+",
6193409f3d5SMasatake YAMATO 	                               "", "", "", NULL);
6203409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "nodeStart",
6213409f3d5SMasatake YAMATO 	                               "^'([^']+)'",
6223409f3d5SMasatake YAMATO 	                               "\\1", "n", "", NULL);
6233409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "nodeStart",
6243409f3d5SMasatake YAMATO 	                               "^\"([^\"]+)\"",
6253409f3d5SMasatake YAMATO 	                               "\\1", "n", "", NULL);
6263409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "nodeStart",
6273409f3d5SMasatake YAMATO 	                               "^\\{",
6283409f3d5SMasatake YAMATO 	                               "", "", "{tenter=block,end}", NULL);
6293409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "nodeStart",
6303409f3d5SMasatake YAMATO 	                               "^.",
6313409f3d5SMasatake YAMATO 	                               "", "", "", NULL);
632b6f7c9a4SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "typeStart",
633b6f7c9a4SMasatake YAMATO 	                               "^/\\*",
634b6f7c9a4SMasatake YAMATO 	                               "", "", "{tenter=comment_multiline}", NULL);
635b6f7c9a4SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "typeStart",
636b6f7c9a4SMasatake YAMATO 	                               "^\\#",
637b6f7c9a4SMasatake YAMATO 	                               "", "", "{tenter=comment_oneline}", NULL);
638b6f7c9a4SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "typeStart",
639b6f7c9a4SMasatake YAMATO 	                               "^[ \t\n]+",
640b6f7c9a4SMasatake YAMATO 	                               "", "", "", NULL);
641b6f7c9a4SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "typeStart",
642b6f7c9a4SMasatake YAMATO 	                               "^([a-zA-Z][a-zA-Z0-9]*::[a-zA-Z][a-zA-Z0-9]+)[ \t\n]*=[ \t\n]*",
643b6f7c9a4SMasatake YAMATO 	                               "\\1", "t", "{tenter=varexpr,end}", NULL);
644b6f7c9a4SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "typeStart",
645b6f7c9a4SMasatake YAMATO 	                               "^.",
646b6f7c9a4SMasatake YAMATO 	                               "", "", "", NULL);
6473409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "comment_multiline",
6483409f3d5SMasatake YAMATO 	                               "^\\*/",
6493409f3d5SMasatake YAMATO 	                               "", "", "{tleave}", NULL);
6503409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "comment_multiline",
6513409f3d5SMasatake YAMATO 	                               "^.",
6523409f3d5SMasatake YAMATO 	                               "", "", "", NULL);
6533409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "comment_oneline",
6543409f3d5SMasatake YAMATO 	                               "^\n",
6553409f3d5SMasatake YAMATO 	                               "", "", "{tleave}", NULL);
6563409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "comment_oneline",
6573409f3d5SMasatake YAMATO 	                               "^.",
6583409f3d5SMasatake YAMATO 	                               "", "", "", NULL);
6593409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "resourceName",
660bd464c18SMasatake YAMATO 	                               "^'([^']+)'|\"([^\"]+)\"",
661bd464c18SMasatake YAMATO 	                               "", "", "{tenter=resourceBody,end}"
66273467b38SMasatake YAMATO 		"{{\n"
66373467b38SMasatake YAMATO 		"    dup {\n"
664bd464c18SMasatake YAMATO 		"        1 index (typename) exch [ 3 1 roll ]\n"
665ee8dc419SMasatake YAMATO 		"        % kind:name type:string true [ (typename) type:string ]\n"
666bd464c18SMasatake YAMATO 		"        <<\n"
667bd464c18SMasatake YAMATO 		"        4 index\n"
668ee8dc419SMasatake YAMATO 		"        % kind:name type:string true [ (typename) type:string ] << kind:name\n"
669bd464c18SMasatake YAMATO 		"        1 exch dup 2 exch\n"
670bd464c18SMasatake YAMATO 		"        >>\n"
671ee8dc419SMasatake YAMATO 		"        % kind:name type:string true [ (typename) type:string ] << 1 kind:name 2 kind:name >>\n"
672bd464c18SMasatake YAMATO 		"        trymaketag\n"
673ee8dc419SMasatake YAMATO 		"        % kind:name type:string true [ (typename) type:string ] tag:int true %\n"
674ee8dc419SMasatake YAMATO 		"        % kind:name type:string true [ (typename) type:string ] false\n"
675bd464c18SMasatake YAMATO 		"        {\n"
676bd464c18SMasatake YAMATO 		"            dup _scopepush\n"
677bd464c18SMasatake YAMATO 		"            exch typeref:\n"
678bd464c18SMasatake YAMATO 		"        } {\n"
679bd464c18SMasatake YAMATO 		"            pop\n"
680bd464c18SMasatake YAMATO 		"        } ifelse\n"
681bd464c18SMasatake YAMATO 		"    } {\n"
682bd464c18SMasatake YAMATO 		"        << 1 /resource 2 /resource >> trymaketag {\n"
683bd464c18SMasatake YAMATO 		"           _scopepush\n"
68473467b38SMasatake YAMATO 		"        } if\n"
685bd464c18SMasatake YAMATO 		"    } ifelse\n"
68673467b38SMasatake YAMATO 		"}}", NULL);
6873409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "resourceName",
6883409f3d5SMasatake YAMATO 	                               "^",
6893409f3d5SMasatake YAMATO 	                               "", "", "{tquit}", NULL);
6903409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "resourceNameInArray",
691ee8dc419SMasatake YAMATO 	                               "^'([^']+)'|\"([^\"]+)\"",
692ee8dc419SMasatake YAMATO 	                               "", "", "{tleave}"
693ee8dc419SMasatake YAMATO 		"{{\n"
694ee8dc419SMasatake YAMATO 		"    dup {\n"
695ee8dc419SMasatake YAMATO 		"        % do the same as resourceName\n"
696ee8dc419SMasatake YAMATO 		"        1 index (typename) exch [ 3 1 roll ]\n"
697ee8dc419SMasatake YAMATO 		"        << 4 index 1 exch dup 2 exch >> trymaketag\n"
698ee8dc419SMasatake YAMATO 		"        {\n"
699ee8dc419SMasatake YAMATO 		"            dup _scoperef\n"
700ee8dc419SMasatake YAMATO 		"            exch typeref:\n"
701ee8dc419SMasatake YAMATO 		"        } {\n"
702ee8dc419SMasatake YAMATO 		"            pop\n"
703ee8dc419SMasatake YAMATO 		"        } ifelse\n"
704ee8dc419SMasatake YAMATO 		"\n"
705ee8dc419SMasatake YAMATO 		"    } {\n"
706ee8dc419SMasatake YAMATO 		"        << 1 /resource 2 /resource >> trymaketag {\n"
707ee8dc419SMasatake YAMATO 		"           _scoperef\n"
708ee8dc419SMasatake YAMATO 		"        } if\n"
709ee8dc419SMasatake YAMATO 		"    } ifelse\n"
710ee8dc419SMasatake YAMATO 		"}}", NULL);
7113409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "resourceNameInArray",
7123409f3d5SMasatake YAMATO 	                               "^",
7133409f3d5SMasatake YAMATO 	                               "", "", "{tquit}", NULL);
7143409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "resourceBody",
71578fe1fd3SMasatake YAMATO 	                               "^[^/#{'\";}<]+",
7163409f3d5SMasatake YAMATO 	                               "", "", "", NULL);
7173409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "resourceBody",
7183409f3d5SMasatake YAMATO 	                               "^'",
7193409f3d5SMasatake YAMATO 	                               "", "", "{tenter=ssliteral}", NULL);
7203409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "resourceBody",
7213409f3d5SMasatake YAMATO 	                               "^\"",
7223409f3d5SMasatake YAMATO 	                               "", "", "{tenter=dsliteral}", NULL);
7233409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "resourceBody",
7243409f3d5SMasatake YAMATO 	                               "^\\}",
7253409f3d5SMasatake YAMATO 	                               "", "", "{tleave}{_advanceTo=0start}{scope=pop}", NULL);
7263409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "resourceBody",
7276ba08990SMasatake YAMATO 	                               "^\\{",
7286ba08990SMasatake YAMATO 	                               "", "", "{tenter=skipBlock}", NULL);
7296ba08990SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "resourceBody",
7306ba08990SMasatake YAMATO 	                               "^;",
7316ba08990SMasatake YAMATO 	                               "", "", "{tleave}{scope=pop}", NULL);
7326ba08990SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "resourceBody",
7333409f3d5SMasatake YAMATO 	                               "^<<?\\|",
7343409f3d5SMasatake YAMATO 	                               "", "", "{tenter=skipCollector}", NULL);
7353409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "resourceBody",
7366ba08990SMasatake YAMATO 	                               "^/\\*",
7376ba08990SMasatake YAMATO 	                               "", "", "{tenter=comment_multiline}", NULL);
7386ba08990SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "resourceBody",
7396ba08990SMasatake YAMATO 	                               "^\\#",
7406ba08990SMasatake YAMATO 	                               "", "", "{tenter=comment_oneline}", NULL);
7416ba08990SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "resourceBody",
7423409f3d5SMasatake YAMATO 	                               "^.",
7433409f3d5SMasatake YAMATO 	                               "", "", "", NULL);
7443409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "resourceArray",
7453409f3d5SMasatake YAMATO 	                               "^/\\*",
7463409f3d5SMasatake YAMATO 	                               "", "", "{tenter=comment_multiline}", NULL);
7473409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "resourceArray",
7483409f3d5SMasatake YAMATO 	                               "^\\#",
7493409f3d5SMasatake YAMATO 	                               "", "", "{tenter=comment_oneline}", NULL);
7503409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "resourceArray",
75178fe1fd3SMasatake YAMATO 	                               "^[ \t\n]+",
7523409f3d5SMasatake YAMATO 	                               "", "", "", NULL);
7533409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "resourceArray",
754ee8dc419SMasatake YAMATO 	                               "^['\"]",
7553409f3d5SMasatake YAMATO 	                               "", "", "{tenter=resourceNameInArray}{_advanceTo=0start}", NULL);
7563409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "resourceArray",
7573409f3d5SMasatake YAMATO 	                               "^\\]",
7583409f3d5SMasatake YAMATO 	                               "", "", "{tleave}", NULL);
7593409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "resourceArray",
7603409f3d5SMasatake YAMATO 	                               "^.",
7613409f3d5SMasatake YAMATO 	                               "", "", "", NULL);
7623409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "varexpr",
7633409f3d5SMasatake YAMATO 	                               "^/\\*",
7643409f3d5SMasatake YAMATO 	                               "", "", "{tenter=comment_multiline}", NULL);
7653409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "varexpr",
7663409f3d5SMasatake YAMATO 	                               "^\\#",
7673409f3d5SMasatake YAMATO 	                               "", "", "{tenter=comment_oneline}", NULL);
7683409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "varexpr",
7693409f3d5SMasatake YAMATO 	                               "^'",
7703409f3d5SMasatake YAMATO 	                               "", "", "{tenter=ssliteral,end}", NULL);
7713409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "varexpr",
7723409f3d5SMasatake YAMATO 	                               "^\"",
7733409f3d5SMasatake YAMATO 	                               "", "", "{tenter=dsliteral,end}", NULL);
7743409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "varexpr",
7753409f3d5SMasatake YAMATO 	                               "^\\[",
7763409f3d5SMasatake YAMATO 	                               "", "", "{tenter=skipArray,end}", NULL);
7773409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "varexpr",
7783409f3d5SMasatake YAMATO 	                               "^\\{",
7793409f3d5SMasatake YAMATO 	                               "", "", "{tenter=skipBlock,end}", NULL);
7803409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "varexpr",
7813409f3d5SMasatake YAMATO 	                               "^\\(",
7823409f3d5SMasatake YAMATO 	                               "", "", "{tenter=skipArgs,end}", NULL);
7833409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "varexpr",
784303b676eSMasatake YAMATO 	                               "^\\$[a-zA-Z:][0-9a-zA-Z:]*",
7853409f3d5SMasatake YAMATO 	                               "", "", "", NULL);
7863409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "varexpr",
7873409f3d5SMasatake YAMATO 	                               "^[0-9]+(\\.[0-9]+(e([+-][0-9]+)))?",
7883409f3d5SMasatake YAMATO 	                               "", "", "", NULL);
7893409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "varexpr",
7903409f3d5SMasatake YAMATO 	                               "^[a-zA-Z0-9:][0-9a-zA-Z:]*",
7913409f3d5SMasatake YAMATO 	                               "", "", "", NULL);
7923409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "varexpr",
7933409f3d5SMasatake YAMATO 	                               "^[ \t]",
7943409f3d5SMasatake YAMATO 	                               "", "", "", NULL);
7953409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "varexpr",
7963409f3d5SMasatake YAMATO 	                               "^\n",
7973409f3d5SMasatake YAMATO 	                               "", "", "{tleave}", NULL);
7983409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "varexpr",
7993409f3d5SMasatake YAMATO 	                               "^.",
8003409f3d5SMasatake YAMATO 	                               "", "", "", NULL);
8013409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "caseBlock",
8023409f3d5SMasatake YAMATO 	                               "^/\\*",
8033409f3d5SMasatake YAMATO 	                               "", "", "{tenter=comment_multiline}", NULL);
8043409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "caseBlock",
8053409f3d5SMasatake YAMATO 	                               "^\\#",
8063409f3d5SMasatake YAMATO 	                               "", "", "{tenter=comment_oneline}", NULL);
8073409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "caseBlock",
80878fe1fd3SMasatake YAMATO 	                               "^[ \t\n]+",
8093409f3d5SMasatake YAMATO 	                               "", "", "", NULL);
8103409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "caseBlock",
8113409f3d5SMasatake YAMATO 	                               "^'",
8123409f3d5SMasatake YAMATO 	                               "", "", "{tenter=ssliteral}", NULL);
8133409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "caseBlock",
8143409f3d5SMasatake YAMATO 	                               "^\"",
8153409f3d5SMasatake YAMATO 	                               "", "", "{tenter=dsliteral}", NULL);
8163409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "caseBlock",
8173409f3d5SMasatake YAMATO 	                               "^:",
8180e5a358cSMasatake YAMATO 	                               "", "", "{tenter=blockHead}", NULL);
8193409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "caseBlock",
8203409f3d5SMasatake YAMATO 	                               "^}",
8213409f3d5SMasatake YAMATO 	                               "", "", "{tleave}{_advanceTo=0start}", NULL);
8223409f3d5SMasatake YAMATO 	addLanguageTagMultiTableRegex (language, "caseBlock",
8233409f3d5SMasatake YAMATO 	                               "^.",
8243409f3d5SMasatake YAMATO 	                               "", "", "", NULL);
8253409f3d5SMasatake YAMATO }
8263409f3d5SMasatake YAMATO 
PuppetManifestParser(void)8273409f3d5SMasatake YAMATO extern parserDefinition* PuppetManifestParser (void)
8283409f3d5SMasatake YAMATO {
8293409f3d5SMasatake YAMATO 	static const char *const extensions [] = {
8303409f3d5SMasatake YAMATO 		"pp",
8313409f3d5SMasatake YAMATO 		NULL
8323409f3d5SMasatake YAMATO 	};
8333409f3d5SMasatake YAMATO 
8343409f3d5SMasatake YAMATO 	static const char *const aliases [] = {
8353409f3d5SMasatake YAMATO 		NULL
8363409f3d5SMasatake YAMATO 	};
8373409f3d5SMasatake YAMATO 
8383409f3d5SMasatake YAMATO 	static const char *const patterns [] = {
8393409f3d5SMasatake YAMATO 		NULL
8403409f3d5SMasatake YAMATO 	};
8413409f3d5SMasatake YAMATO 
842f570d51fSMasatake YAMATO 	static scopeSeparator PuppetManifestClassSeparators [] = {
843f570d51fSMasatake YAMATO 		{ KIND_GHOST_INDEX, "::" },
844f570d51fSMasatake YAMATO 	};
845f570d51fSMasatake YAMATO 
8463409f3d5SMasatake YAMATO 	static kindDefinition PuppetManifestKindTable [] = {
8472625d890SMasatake YAMATO 		{
8482625d890SMasatake YAMATO 		  true, 'c', "class", "classes",
849f570d51fSMasatake YAMATO 		  ATTACH_SEPARATORS(PuppetManifestClassSeparators),
8502625d890SMasatake YAMATO 		},
8512625d890SMasatake YAMATO 		{
8522625d890SMasatake YAMATO 		  true, 'd', "definition", "definitions",
8532625d890SMasatake YAMATO 		},
8542625d890SMasatake YAMATO 		{
8552625d890SMasatake YAMATO 		  true, 'n', "node", "nodes",
8562625d890SMasatake YAMATO 		},
8572625d890SMasatake YAMATO 		{
8582625d890SMasatake YAMATO 		  true, 'r', "resource", "resources",
8592625d890SMasatake YAMATO 		},
8602625d890SMasatake YAMATO 		{
8612625d890SMasatake YAMATO 		  true, 'v', "variable", "variables",
8622625d890SMasatake YAMATO 		},
8630ee6ddc8SMasatake YAMATO 		{
8640ee6ddc8SMasatake YAMATO 		  true, 'p', "param", "parameters",
8650ee6ddc8SMasatake YAMATO 		},
866bd464c18SMasatake YAMATO 		{
867bd464c18SMasatake YAMATO 		  true, 'V', "vresource", "virtual resources",
868bd464c18SMasatake YAMATO 		},
869b6f7c9a4SMasatake YAMATO 		{
870b6f7c9a4SMasatake YAMATO 		  true, 't', "type", "type aliases",
871b6f7c9a4SMasatake YAMATO 		},
8723409f3d5SMasatake YAMATO 	};
8733409f3d5SMasatake YAMATO 
8746b1ec470SMasatake YAMATO 	parserDefinition* const def = parserNew ("PuppetManifest");
8753409f3d5SMasatake YAMATO 
8763409f3d5SMasatake YAMATO 	def->enabled       = true;
8773409f3d5SMasatake YAMATO 	def->extensions    = extensions;
8783409f3d5SMasatake YAMATO 	def->patterns      = patterns;
8793409f3d5SMasatake YAMATO 	def->aliases       = aliases;
8803409f3d5SMasatake YAMATO 	def->method        = METHOD_NOT_CRAFTED|METHOD_REGEX;
8816b1a862eSMasatake YAMATO 	def->useCork       = CORK_QUEUE;
8823409f3d5SMasatake YAMATO 	def->kindTable     = PuppetManifestKindTable;
8833409f3d5SMasatake YAMATO 	def->kindCount     = ARRAY_SIZE(PuppetManifestKindTable);
884f570d51fSMasatake YAMATO 	def->requestAutomaticFQTag = true;
885f570d51fSMasatake YAMATO 	def->defaultScopeSeparator = "::";
8863409f3d5SMasatake YAMATO 	def->initialize    = initializePuppetManifestParser;
8873409f3d5SMasatake YAMATO 
8883409f3d5SMasatake YAMATO 	return def;
8893409f3d5SMasatake YAMATO }
890