xref: /Universal-ctags/optlib/elixir.c (revision bd186360d320c31e9777827dbdda155fdc5641bf)
11c38aecfSMasatake YAMATO /*
21c38aecfSMasatake YAMATO  * Generated by ./misc/optlib2c from optlib/elixir.ctags, Don't edit this manually.
31c38aecfSMasatake YAMATO  */
41c38aecfSMasatake YAMATO #include "general.h"
51c38aecfSMasatake YAMATO #include "parse.h"
61c38aecfSMasatake YAMATO #include "routines.h"
71c38aecfSMasatake YAMATO #include "field.h"
81c38aecfSMasatake YAMATO #include "xtag.h"
91c38aecfSMasatake YAMATO 
101c38aecfSMasatake YAMATO 
initializeElixirParser(const langType language CTAGS_ATTR_UNUSED)111c38aecfSMasatake YAMATO static void initializeElixirParser (const langType language CTAGS_ATTR_UNUSED)
121c38aecfSMasatake YAMATO {
131c38aecfSMasatake YAMATO }
141c38aecfSMasatake YAMATO 
ElixirParser(void)151c38aecfSMasatake YAMATO extern parserDefinition* ElixirParser (void)
161c38aecfSMasatake YAMATO {
171c38aecfSMasatake YAMATO 	static const char *const extensions [] = {
181c38aecfSMasatake YAMATO 		"ex",
191c38aecfSMasatake YAMATO 		"exs",
201c38aecfSMasatake YAMATO 		NULL
211c38aecfSMasatake YAMATO 	};
221c38aecfSMasatake YAMATO 
231c38aecfSMasatake YAMATO 	static const char *const aliases [] = {
241c38aecfSMasatake YAMATO 		NULL
251c38aecfSMasatake YAMATO 	};
261c38aecfSMasatake YAMATO 
271c38aecfSMasatake YAMATO 	static const char *const patterns [] = {
281c38aecfSMasatake YAMATO 		NULL
291c38aecfSMasatake YAMATO 	};
301c38aecfSMasatake YAMATO 
311c38aecfSMasatake YAMATO 	static kindDefinition ElixirKindTable [] = {
321c38aecfSMasatake YAMATO 		{
332c46f6d4SBryan Enders 		  true, 'p', "protocol", "protocols (defprotocol...)",
342c46f6d4SBryan Enders 		},
352c46f6d4SBryan Enders 		{
36443b88f2SBryan Enders 		  true, 'm', "module", "modules (defmodule ...)",
37443b88f2SBryan Enders 		},
38443b88f2SBryan Enders 		{
391c38aecfSMasatake YAMATO 		  true, 'f', "function", "functions (def ...)",
401c38aecfSMasatake YAMATO 		},
411c38aecfSMasatake YAMATO 		{
421c38aecfSMasatake YAMATO 		  true, 'c', "callback", "callbacks (defcallback ...)",
431c38aecfSMasatake YAMATO 		},
441c38aecfSMasatake YAMATO 		{
451c38aecfSMasatake YAMATO 		  true, 'd', "delegate", "delegates (defdelegate ...)",
461c38aecfSMasatake YAMATO 		},
471c38aecfSMasatake YAMATO 		{
481c38aecfSMasatake YAMATO 		  true, 'e', "exception", "exceptions (defexception ...)",
491c38aecfSMasatake YAMATO 		},
501c38aecfSMasatake YAMATO 		{
51943eb288SIvan Gonzalez Polanco 		  true, 'g', "guard", "guards (defguard ...)",
52943eb288SIvan Gonzalez Polanco 		},
53943eb288SIvan Gonzalez Polanco 		{
541c38aecfSMasatake YAMATO 		  true, 'i', "implementation", "implementations (defimpl ...)",
551c38aecfSMasatake YAMATO 		},
561c38aecfSMasatake YAMATO 		{
571c38aecfSMasatake YAMATO 		  true, 'a', "macro", "macros (defmacro ...)",
581c38aecfSMasatake YAMATO 		},
591c38aecfSMasatake YAMATO 		{
601c38aecfSMasatake YAMATO 		  true, 'o', "operator", "operators (e.g. \"defmacro a <<< b\")",
611c38aecfSMasatake YAMATO 		},
621c38aecfSMasatake YAMATO 		{
631c38aecfSMasatake YAMATO 		  true, 'r', "record", "records (defrecord...)",
641c38aecfSMasatake YAMATO 		},
651c38aecfSMasatake YAMATO 		{
661c38aecfSMasatake YAMATO 		  true, 't', "test", "tests (test ...)",
671c38aecfSMasatake YAMATO 		},
685b3505b0SBryan Enders 		{
695b3505b0SBryan Enders 		  true, 'y', "type", "types (@type ...)",
705b3505b0SBryan Enders 		},
711c38aecfSMasatake YAMATO 	};
721c38aecfSMasatake YAMATO 	static tagRegexTable ElixirTagRegexTable [] = {
732c46f6d4SBryan Enders 		{"^[ \t]*defprotocol[ \t]+([A-Z][a-zA-Z0-9_]*\\.)*([A-Z][a-zA-Z0-9_?!]*)", "\\2",
742c46f6d4SBryan Enders 		"p", "{scope=set}", NULL, false},
751c38aecfSMasatake YAMATO 		{"^[ \t]*defmodule[ \t]+([A-Z][a-zA-Z0-9_]*\\.)*([A-Z][a-zA-Z0-9_?!]*)", "\\2",
76443b88f2SBryan Enders 		"m", "{scope=set}", NULL, false},
77bb84aac2SMasatake YAMATO 		{"^[ \t]*def((p?)|macro(p?))[ \t]+([a-zA-Z0-9_?!]+)[ \t]+([\\|\\^/&<>~.=!*+-]{1,3}|and|or|in|(not( +in)?)|when)[ \t]+[a-zA-Z0-9_?!]", "\\5",
78443b88f2SBryan Enders 		"o", "{scope=ref}{exclusive}", NULL, false},
79e951a313SBryan Enders 		{"^[ \t]*def[ \t]+([a-z_][a-zA-Z0-9_?!]*)", "\\1",
800da42576SMasatake YAMATO 		"f", "{scope=ref}{{. (public) access:}}", NULL, false},
81e951a313SBryan Enders 		{"^[ \t]*defp[ \t]+([a-z_][a-zA-Z0-9_?!]*)", "\\1",
820da42576SMasatake YAMATO 		"f", "{scope=ref}{{. (private) access:}}", NULL, false},
83443b88f2SBryan Enders 		{"^[ \t]*(@|def)callback[ \t]+([a-z_][a-zA-Z0-9_?!]*)", "\\2",
84443b88f2SBryan Enders 		"c", "{scope=ref}", NULL, false},
85443b88f2SBryan Enders 		{"^[ \t]*defdelegate[ \t]+([a-z_][a-zA-Z0-9_?!]*)", "\\1",
86443b88f2SBryan Enders 		"d", "{scope=ref}", NULL, false},
87443b88f2SBryan Enders 		{"^[ \t]*defexception[ \t]+([A-Z][a-zA-Z0-9_]*\\.)*([A-Z][a-zA-Z0-9_?!]*)", "\\2",
88*bd186360SMasatake YAMATO 		"e", "{scope=ref}{exclusive}", NULL, false},
89*bd186360SMasatake YAMATO 		{"^[ \t]*defexception[ \t]+", "",
90*bd186360SMasatake YAMATO 		"", "{exclusive}"
91*bd186360SMasatake YAMATO 		"{{\n"
92*bd186360SMasatake YAMATO 		"    _scopetop {\n"
93*bd186360SMasatake YAMATO 		"        dup :kind /module eq {\n"
94*bd186360SMasatake YAMATO 		"            dup\n"
95*bd186360SMasatake YAMATO 		"            :name /exception _tag _commit exch scope:\n"
96*bd186360SMasatake YAMATO 		"        } if\n"
97*bd186360SMasatake YAMATO 		"    } if\n"
98*bd186360SMasatake YAMATO 		"}}", NULL, false},
99e951a313SBryan Enders 		{"^[ \t]*defguard[ \t]+(is_[a-zA-Z0-9_?!]+)", "\\1",
1000da42576SMasatake YAMATO 		"g", "{scope=ref}{{. (public) access:}}", NULL, false},
101e951a313SBryan Enders 		{"^[ \t]*defguardp[ \t]+(is_[a-zA-Z0-9_?!]+)", "\\1",
1020da42576SMasatake YAMATO 		"g", "{scope=ref}{{. (private) access:}}", NULL, false},
103443b88f2SBryan Enders 		{"^[ \t]*defimpl[ \t]+([A-Z][a-zA-Z0-9_]*\\.)*([A-Z][a-zA-Z0-9_?!]*)", "\\2",
104443b88f2SBryan Enders 		"i", "{scope=ref}", NULL, false},
105e951a313SBryan Enders 		{"^[ \t]*defmacro[ \t]+([a-z_][a-zA-Z0-9_?!]*)(.[^\\|\\^/&<>~.=!*+-]+)", "\\1",
1060da42576SMasatake YAMATO 		"a", "{scope=ref}{{. (public) access:}}", NULL, false},
107e951a313SBryan Enders 		{"^[ \t]*defmacrop[ \t]+([a-z_][a-zA-Z0-9_?!]*)(.[^\\|\\^/&<>~.=!*+-]+)", "\\1",
1080da42576SMasatake YAMATO 		"a", "{scope=ref}{{. (private) access:}}", NULL, false},
109e951a313SBryan Enders 		{"^[ \t]*Record\\.defrecord[ \t(]+:([a-zA-Z0-9_]+)(\\)?)", "\\1",
1100da42576SMasatake YAMATO 		"r", "{scope=ref}{{. (public) access:}}", NULL, false},
111e951a313SBryan Enders 		{"^[ \t]*Record\\.defrecordp[ \t(]+:([a-zA-Z0-9_]+)(\\)?)", "\\1",
1120da42576SMasatake YAMATO 		"r", "{scope=ref}{{. (private) access:}}", NULL, false},
113c477ce56SIvan Gonzalez Polanco 		{"^[ \t]*test[ \t(]+\"([a-z_][a-zA-Z0-9_?! ]*)\"*(\\)?)[ \t]*do", "\\1",
114443b88f2SBryan Enders 		"t", "{scope=ref}", NULL, false},
1155b3505b0SBryan Enders 		{"^[ \t]*@(type|opaque)[ \t]+([a-z_][a-zA-Z0-9_?!]*)", "\\2",
1160da42576SMasatake YAMATO 		"y", "{scope=ref}{{. (public) access:}}", NULL, false},
1175b3505b0SBryan Enders 		{"^[ \t]*@typep[ \t]+([a-z_][a-zA-Z0-9_?!]*)", "\\1",
1180da42576SMasatake YAMATO 		"y", "{scope=ref}{{. (private) access:}}", NULL, false},
1191c38aecfSMasatake YAMATO 	};
1201c38aecfSMasatake YAMATO 
1211c38aecfSMasatake YAMATO 
1221c38aecfSMasatake YAMATO 	parserDefinition* const def = parserNew ("Elixir");
1231c38aecfSMasatake YAMATO 
1241c38aecfSMasatake YAMATO 	def->enabled       = true;
1251c38aecfSMasatake YAMATO 	def->extensions    = extensions;
1261c38aecfSMasatake YAMATO 	def->patterns      = patterns;
1271c38aecfSMasatake YAMATO 	def->aliases       = aliases;
1281c38aecfSMasatake YAMATO 	def->method        = METHOD_NOT_CRAFTED|METHOD_REGEX;
1296b1a862eSMasatake YAMATO 	def->useCork       = CORK_QUEUE;
1301c38aecfSMasatake YAMATO 	def->kindTable     = ElixirKindTable;
1311c38aecfSMasatake YAMATO 	def->kindCount     = ARRAY_SIZE(ElixirKindTable);
1321c38aecfSMasatake YAMATO 	def->tagRegexTable = ElixirTagRegexTable;
1331c38aecfSMasatake YAMATO 	def->tagRegexCount = ARRAY_SIZE(ElixirTagRegexTable);
1341c38aecfSMasatake YAMATO 	def->initialize    = initializeElixirParser;
1351c38aecfSMasatake YAMATO 
1361c38aecfSMasatake YAMATO 	return def;
1371c38aecfSMasatake YAMATO }
138