1ccdaccdbSYorick Peterse /*
2ccdaccdbSYorick Peterse * Generated by ./misc/optlib2c from optlib/inko.ctags, Don't edit this manually.
3ccdaccdbSYorick Peterse */
4ccdaccdbSYorick Peterse #include "general.h"
5ccdaccdbSYorick Peterse #include "parse.h"
6ccdaccdbSYorick Peterse #include "routines.h"
7ccdaccdbSYorick Peterse #include "field.h"
8ccdaccdbSYorick Peterse #include "xtag.h"
9ccdaccdbSYorick Peterse
10ccdaccdbSYorick Peterse
initializeInkoParser(const langType language)11ccdaccdbSYorick Peterse static void initializeInkoParser (const langType language)
12ccdaccdbSYorick Peterse {
13ccdaccdbSYorick Peterse
14ccdaccdbSYorick Peterse addLanguageRegexTable (language, "toplevel");
15*2c4d04afSYorick Peterse addLanguageRegexTable (language, "class");
16ccdaccdbSYorick Peterse addLanguageRegexTable (language, "trait");
17ccdaccdbSYorick Peterse addLanguageRegexTable (language, "method");
18ccdaccdbSYorick Peterse addLanguageRegexTable (language, "comment");
19ccdaccdbSYorick Peterse addLanguageRegexTable (language, "impl");
20ccdaccdbSYorick Peterse addLanguageRegexTable (language, "let");
2115f24de7SYorick Peterse addLanguageRegexTable (language, "sstring");
2215f24de7SYorick Peterse addLanguageRegexTable (language, "dstring");
2315f24de7SYorick Peterse addLanguageRegexTable (language, "tstring");
24ccdaccdbSYorick Peterse
25ccdaccdbSYorick Peterse addLanguageTagMultiTableRegex (language, "toplevel",
2615f24de7SYorick Peterse "^'",
2715f24de7SYorick Peterse "", "", "{tenter=sstring}", NULL);
2815f24de7SYorick Peterse addLanguageTagMultiTableRegex (language, "toplevel",
2915f24de7SYorick Peterse "^\"",
3015f24de7SYorick Peterse "", "", "{tenter=dstring}", NULL);
3115f24de7SYorick Peterse addLanguageTagMultiTableRegex (language, "toplevel",
3215f24de7SYorick Peterse "^`",
3315f24de7SYorick Peterse "", "", "{tenter=tstring}", NULL);
3415f24de7SYorick Peterse addLanguageTagMultiTableRegex (language, "toplevel",
35ccdaccdbSYorick Peterse "^#",
36ccdaccdbSYorick Peterse "", "", "{tenter=comment}", NULL);
37ccdaccdbSYorick Peterse addLanguageTagMultiTableRegex (language, "toplevel",
38*2c4d04afSYorick Peterse "^[[:blank:]]*class[[:blank:]]+",
39*2c4d04afSYorick Peterse "", "", "{tenter=class}", NULL);
40ccdaccdbSYorick Peterse addLanguageTagMultiTableRegex (language, "toplevel",
41ccdaccdbSYorick Peterse "^[[:blank:]]*trait[[:blank:]]+",
42ccdaccdbSYorick Peterse "", "", "{tenter=trait}", NULL);
43ccdaccdbSYorick Peterse addLanguageTagMultiTableRegex (language, "toplevel",
44ccdaccdbSYorick Peterse "^[[:blank:]]*def[[:blank:]]+",
45ccdaccdbSYorick Peterse "", "", "{tenter=method}", NULL);
46ccdaccdbSYorick Peterse addLanguageTagMultiTableRegex (language, "toplevel",
47ccdaccdbSYorick Peterse "^[[:blank:]]*impl[[:blank:]]+",
48ccdaccdbSYorick Peterse "", "", "{tenter=impl}", NULL);
49ccdaccdbSYorick Peterse addLanguageTagMultiTableRegex (language, "toplevel",
50ccdaccdbSYorick Peterse "^[[:blank:]]*let[[:blank:]]+",
51ccdaccdbSYorick Peterse "", "", "{tenter=let}", NULL);
52ccdaccdbSYorick Peterse addLanguageTagMultiTableRegex (language, "toplevel",
53ccdaccdbSYorick Peterse "^\\{",
54ccdaccdbSYorick Peterse "", "", "{placeholder}{scope=push}", NULL);
55ccdaccdbSYorick Peterse addLanguageTagMultiTableRegex (language, "toplevel",
56ccdaccdbSYorick Peterse "^\\}",
57ccdaccdbSYorick Peterse "", "", "{scope=pop}", NULL);
58ccdaccdbSYorick Peterse addLanguageTagMultiTableRegex (language, "toplevel",
59797ac4d6SYorick Peterse "^(@[a-zA-Z0-9_]+):",
60797ac4d6SYorick Peterse "\\1", "a", "{scope=ref}", NULL);
61797ac4d6SYorick Peterse addLanguageTagMultiTableRegex (language, "toplevel",
62ccdaccdbSYorick Peterse "^.",
63ccdaccdbSYorick Peterse "", "", "", NULL);
64*2c4d04afSYorick Peterse addLanguageTagMultiTableRegex (language, "class",
65ccdaccdbSYorick Peterse "^([A-Z][a-zA-Z0-9_?]*)[^{]*",
66ccdaccdbSYorick Peterse "\\1", "o", "{scope=push}", NULL);
67*2c4d04afSYorick Peterse addLanguageTagMultiTableRegex (language, "class",
68ccdaccdbSYorick Peterse "^\\{",
69ccdaccdbSYorick Peterse "", "", "{tleave}", NULL);
70*2c4d04afSYorick Peterse addLanguageTagMultiTableRegex (language, "class",
71ccdaccdbSYorick Peterse "^.",
72ccdaccdbSYorick Peterse "", "", "", NULL);
73ccdaccdbSYorick Peterse addLanguageTagMultiTableRegex (language, "trait",
74ccdaccdbSYorick Peterse "^([A-Z][a-zA-Z0-9_?]*)[^{]*",
75ccdaccdbSYorick Peterse "\\1", "t", "{scope=push}", NULL);
76ccdaccdbSYorick Peterse addLanguageTagMultiTableRegex (language, "trait",
77ccdaccdbSYorick Peterse "^\\{",
78ccdaccdbSYorick Peterse "", "", "{tleave}", NULL);
79ccdaccdbSYorick Peterse addLanguageTagMultiTableRegex (language, "trait",
80ccdaccdbSYorick Peterse "^.",
81ccdaccdbSYorick Peterse "", "", "", NULL);
82ccdaccdbSYorick Peterse addLanguageTagMultiTableRegex (language, "method",
83797ac4d6SYorick Peterse "^([a-zA-Z0-9_?]+|\\[\\]=?|\\^|&|\\||\\*|\\+|\\-|/|>>|<<|%)",
84ccdaccdbSYorick Peterse "\\1", "m", "{scope=push}", NULL);
85ccdaccdbSYorick Peterse addLanguageTagMultiTableRegex (language, "method",
86797ac4d6SYorick Peterse "^\\{|\n",
87797ac4d6SYorick Peterse "", "", "{scope=pop}{tleave}", NULL);
88ccdaccdbSYorick Peterse addLanguageTagMultiTableRegex (language, "method",
89ccdaccdbSYorick Peterse "^.",
90ccdaccdbSYorick Peterse "", "", "", NULL);
91ccdaccdbSYorick Peterse addLanguageTagMultiTableRegex (language, "comment",
92ccdaccdbSYorick Peterse "^\n",
93ccdaccdbSYorick Peterse "", "", "{tleave}", NULL);
94ccdaccdbSYorick Peterse addLanguageTagMultiTableRegex (language, "comment",
95ccdaccdbSYorick Peterse "^.",
96ccdaccdbSYorick Peterse "", "", "", NULL);
97ccdaccdbSYorick Peterse addLanguageTagMultiTableRegex (language, "impl",
98ccdaccdbSYorick Peterse "^([A-Z][a-zA-Z0-9_?]*)[[:blank:]]+for[[:blank:]]+([A-Z][a-zA-Z0-9_?]*)[^{]*",
99ccdaccdbSYorick Peterse "\\2", "r", "{scope=push}{_field=implements:\\1}", NULL);
100ccdaccdbSYorick Peterse addLanguageTagMultiTableRegex (language, "impl",
101ccdaccdbSYorick Peterse "^([A-Z][a-zA-Z0-9_?]*)[^{]*",
102ccdaccdbSYorick Peterse "\\1", "r", "{scope=push}", NULL);
103ccdaccdbSYorick Peterse addLanguageTagMultiTableRegex (language, "impl",
104ccdaccdbSYorick Peterse "^\\{",
105ccdaccdbSYorick Peterse "", "", "{tleave}", NULL);
106ccdaccdbSYorick Peterse addLanguageTagMultiTableRegex (language, "impl",
107ccdaccdbSYorick Peterse "^.",
108ccdaccdbSYorick Peterse "", "", "", NULL);
109ccdaccdbSYorick Peterse addLanguageTagMultiTableRegex (language, "let",
110ccdaccdbSYorick Peterse "^([A-Z][a-zA-Z0-9_]+)",
11115132639SYorick Peterse "\\1", "c", "{scope=ref}{tleave}", NULL);
11215f24de7SYorick Peterse addLanguageTagMultiTableRegex (language, "sstring",
11315f24de7SYorick Peterse "^'",
11415f24de7SYorick Peterse "", "", "{tleave}", NULL);
11515f24de7SYorick Peterse addLanguageTagMultiTableRegex (language, "sstring",
11615f24de7SYorick Peterse "^\\\\'",
11715f24de7SYorick Peterse "", "", "", NULL);
11815f24de7SYorick Peterse addLanguageTagMultiTableRegex (language, "sstring",
11915f24de7SYorick Peterse "^.",
12015f24de7SYorick Peterse "", "", "", NULL);
12115f24de7SYorick Peterse addLanguageTagMultiTableRegex (language, "dstring",
12215f24de7SYorick Peterse "^\"",
12315f24de7SYorick Peterse "", "", "{tleave}", NULL);
12415f24de7SYorick Peterse addLanguageTagMultiTableRegex (language, "dstring",
12515f24de7SYorick Peterse "^\\\\\"",
12615f24de7SYorick Peterse "", "", "", NULL);
12715f24de7SYorick Peterse addLanguageTagMultiTableRegex (language, "dstring",
12815f24de7SYorick Peterse "^.",
12915f24de7SYorick Peterse "", "", "", NULL);
13015f24de7SYorick Peterse addLanguageTagMultiTableRegex (language, "tstring",
13115f24de7SYorick Peterse "^`",
13215f24de7SYorick Peterse "", "", "{tleave}", NULL);
13315f24de7SYorick Peterse addLanguageTagMultiTableRegex (language, "tstring",
13415f24de7SYorick Peterse "^\\\\`",
13515f24de7SYorick Peterse "", "", "", NULL);
13615f24de7SYorick Peterse addLanguageTagMultiTableRegex (language, "tstring",
13715f24de7SYorick Peterse "^.",
13815f24de7SYorick Peterse "", "", "", NULL);
139ccdaccdbSYorick Peterse }
140ccdaccdbSYorick Peterse
InkoParser(void)141ccdaccdbSYorick Peterse extern parserDefinition* InkoParser (void)
142ccdaccdbSYorick Peterse {
143ccdaccdbSYorick Peterse static const char *const extensions [] = {
144ccdaccdbSYorick Peterse "inko",
145ccdaccdbSYorick Peterse NULL
146ccdaccdbSYorick Peterse };
147ccdaccdbSYorick Peterse
148ccdaccdbSYorick Peterse static const char *const aliases [] = {
149ccdaccdbSYorick Peterse NULL
150ccdaccdbSYorick Peterse };
151ccdaccdbSYorick Peterse
152ccdaccdbSYorick Peterse static const char *const patterns [] = {
153ccdaccdbSYorick Peterse NULL
154ccdaccdbSYorick Peterse };
155ccdaccdbSYorick Peterse
156ccdaccdbSYorick Peterse static kindDefinition InkoKindTable [] = {
157ccdaccdbSYorick Peterse {
158*2c4d04afSYorick Peterse true, 'o', "class", "Class definition",
159ccdaccdbSYorick Peterse },
160ccdaccdbSYorick Peterse {
161ccdaccdbSYorick Peterse true, 'm', "method", "Method definition",
162ccdaccdbSYorick Peterse },
163ccdaccdbSYorick Peterse {
164ccdaccdbSYorick Peterse true, 't', "trait", "Trait definition",
165ccdaccdbSYorick Peterse },
166ccdaccdbSYorick Peterse {
167ccdaccdbSYorick Peterse true, 'a', "attribute", "Attribute definition",
168ccdaccdbSYorick Peterse },
169ccdaccdbSYorick Peterse {
170ccdaccdbSYorick Peterse true, 'c', "constant", "Constant definition",
171ccdaccdbSYorick Peterse },
172ccdaccdbSYorick Peterse {
173*2c4d04afSYorick Peterse true, 'r', "reopen", "Reopen class",
174ccdaccdbSYorick Peterse },
175ccdaccdbSYorick Peterse };
176ccdaccdbSYorick Peterse static fieldDefinition InkoFieldTable [] = {
177ccdaccdbSYorick Peterse {
178ccdaccdbSYorick Peterse .enabled = true,
179ccdaccdbSYorick Peterse .name = "implements",
180ccdaccdbSYorick Peterse .description = "Trait being implemented",
181ccdaccdbSYorick Peterse },
182ccdaccdbSYorick Peterse };
183ccdaccdbSYorick Peterse
184ccdaccdbSYorick Peterse parserDefinition* const def = parserNew ("Inko");
185ccdaccdbSYorick Peterse
186ccdaccdbSYorick Peterse def->enabled = true;
187ccdaccdbSYorick Peterse def->extensions = extensions;
188ccdaccdbSYorick Peterse def->patterns = patterns;
189ccdaccdbSYorick Peterse def->aliases = aliases;
190ccdaccdbSYorick Peterse def->method = METHOD_NOT_CRAFTED|METHOD_REGEX;
1916b1a862eSMasatake YAMATO def->useCork = CORK_QUEUE;
192ccdaccdbSYorick Peterse def->kindTable = InkoKindTable;
193ccdaccdbSYorick Peterse def->kindCount = ARRAY_SIZE(InkoKindTable);
194ccdaccdbSYorick Peterse def->fieldTable = InkoFieldTable;
195ccdaccdbSYorick Peterse def->fieldCount = ARRAY_SIZE(InkoFieldTable);
196ccdaccdbSYorick Peterse def->initialize = initializeInkoParser;
197ccdaccdbSYorick Peterse
198ccdaccdbSYorick Peterse return def;
199ccdaccdbSYorick Peterse }
200