xref: /Universal-ctags/optlib/inko.ctags (revision 2c4d04afa3d81ad84d561e4f3a8b915c5096674f)
1ccdaccdbSYorick Peterse# inko.ctags --- regex parser for the Inko programming language
2ccdaccdbSYorick Peterse# (https://inko-lang.org/)
3ccdaccdbSYorick Peterse#
4ccdaccdbSYorick Peterse#  Copyright (c) 2019, Yorick Peterse
5ccdaccdbSYorick Peterse#
6797ac4d6SYorick Peterse#  Author: Yorick Peterse <yorick@yorickpeterse.com>
7ccdaccdbSYorick Peterse#
8ccdaccdbSYorick Peterse# This program is free software; you can redistribute it and/or
9ccdaccdbSYorick Peterse# modify it under the terms of the GNU General Public License
10ccdaccdbSYorick Peterse# as published by the Free Software Foundation; either version 2
11ccdaccdbSYorick Peterse# of the License, or (at your option) any later version.
12ccdaccdbSYorick Peterse#
13ccdaccdbSYorick Peterse# This program is distributed in the hope that it will be useful,
14ccdaccdbSYorick Peterse# but WITHOUT ANY WARRANTY; without even the implied warranty of
15ccdaccdbSYorick Peterse# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16ccdaccdbSYorick Peterse# GNU General Public License for more details.
17ccdaccdbSYorick Peterse#
18ccdaccdbSYorick Peterse# You should have received a copy of the GNU General Public License
19ccdaccdbSYorick Peterse# along with this program; if not, write to the Free Software
20ccdaccdbSYorick Peterse# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
21ccdaccdbSYorick Peterse# USA.
22ccdaccdbSYorick Peterse
23ccdaccdbSYorick Peterse--langdef=Inko
24ccdaccdbSYorick Peterse--map-Inko=+.inko
25*2c4d04afSYorick Peterse--kinddef-Inko=o,class,Class definition
26ccdaccdbSYorick Peterse--kinddef-Inko=m,method,Method definition
27ccdaccdbSYorick Peterse--kinddef-Inko=t,trait,Trait definition
28ccdaccdbSYorick Peterse--kinddef-Inko=a,attribute,Attribute definition
29ccdaccdbSYorick Peterse--kinddef-Inko=c,constant,Constant definition
30*2c4d04afSYorick Peterse--kinddef-Inko=r,reopen,Reopen class
31ccdaccdbSYorick Peterse
32ccdaccdbSYorick Peterse--_fielddef-Inko=implements,Trait being implemented
33ccdaccdbSYorick Peterse
34ccdaccdbSYorick Peterse--fields-Inko=+{implements}
35ccdaccdbSYorick Peterse
36ccdaccdbSYorick Peterse--_tabledef-Inko=toplevel
37*2c4d04afSYorick Peterse--_tabledef-Inko=class
38ccdaccdbSYorick Peterse--_tabledef-Inko=trait
39ccdaccdbSYorick Peterse--_tabledef-Inko=method
40ccdaccdbSYorick Peterse--_tabledef-Inko=comment
41ccdaccdbSYorick Peterse--_tabledef-Inko=impl
42ccdaccdbSYorick Peterse--_tabledef-Inko=let
4315f24de7SYorick Peterse--_tabledef-Inko=sstring
4415f24de7SYorick Peterse--_tabledef-Inko=dstring
4515f24de7SYorick Peterse--_tabledef-Inko=tstring
4615f24de7SYorick Peterse
4715f24de7SYorick Peterse# Handle and ignore the bodies of strings
4815f24de7SYorick Peterse--_mtable-regex-Inko=toplevel/'//{tenter=sstring}
4915f24de7SYorick Peterse--_mtable-regex-Inko=toplevel/"//{tenter=dstring}
5015f24de7SYorick Peterse--_mtable-regex-Inko=toplevel/`//{tenter=tstring}
5115f24de7SYorick Peterse
5215f24de7SYorick Peterse--_mtable-regex-Inko=sstring/'//{tleave}
5315f24de7SYorick Peterse--_mtable-regex-Inko=sstring/\\'//
5415f24de7SYorick Peterse--_mtable-regex-Inko=sstring/.//
5515f24de7SYorick Peterse
5615f24de7SYorick Peterse--_mtable-regex-Inko=dstring/"//{tleave}
5715f24de7SYorick Peterse--_mtable-regex-Inko=dstring/\\"//
5815f24de7SYorick Peterse--_mtable-regex-Inko=dstring/.//
5915f24de7SYorick Peterse
6015f24de7SYorick Peterse--_mtable-regex-Inko=tstring/`//{tleave}
6115f24de7SYorick Peterse--_mtable-regex-Inko=tstring/\\`//
6215f24de7SYorick Peterse--_mtable-regex-Inko=tstring/.//
63ccdaccdbSYorick Peterse
64ccdaccdbSYorick Peterse--_mtable-regex-Inko=toplevel/#//{tenter=comment}
65*2c4d04afSYorick Peterse--_mtable-regex-Inko=toplevel/[[:blank:]]*class[[:blank:]]+//{tenter=class}
66ccdaccdbSYorick Peterse--_mtable-regex-Inko=toplevel/[[:blank:]]*trait[[:blank:]]+//{tenter=trait}
67ccdaccdbSYorick Peterse--_mtable-regex-Inko=toplevel/[[:blank:]]*def[[:blank:]]+//{tenter=method}
68ccdaccdbSYorick Peterse--_mtable-regex-Inko=toplevel/[[:blank:]]*impl[[:blank:]]+//{tenter=impl}
69ccdaccdbSYorick Peterse--_mtable-regex-Inko=toplevel/[[:blank:]]*let[[:blank:]]+//{tenter=let}
70ccdaccdbSYorick Peterse--_mtable-regex-Inko=toplevel/\{//{placeholder}{scope=push}
71ccdaccdbSYorick Peterse--_mtable-regex-Inko=toplevel/\}//{scope=pop}
72797ac4d6SYorick Peterse--_mtable-regex-Inko=toplevel/(@[a-zA-Z0-9_]+):/\1/a/{scope=ref}
73ccdaccdbSYorick Peterse--_mtable-regex-Inko=toplevel/.//
74ccdaccdbSYorick Peterse
75*2c4d04afSYorick Peterse--_mtable-regex-Inko=class/([A-Z][a-zA-Z0-9_?]*)[^{]*/\1/o/{scope=push}
76*2c4d04afSYorick Peterse--_mtable-regex-Inko=class/\{//{tleave}
77*2c4d04afSYorick Peterse--_mtable-regex-Inko=class/.//
78ccdaccdbSYorick Peterse
79ccdaccdbSYorick Peterse--_mtable-regex-Inko=trait/([A-Z][a-zA-Z0-9_?]*)[^{]*/\1/t/{scope=push}
80ccdaccdbSYorick Peterse--_mtable-regex-Inko=trait/\{//{tleave}
81ccdaccdbSYorick Peterse--_mtable-regex-Inko=trait/.//
82ccdaccdbSYorick Peterse
83797ac4d6SYorick Peterse--_mtable-regex-Inko=method/([a-zA-Z0-9_?]+|\[\]=?|\^|&|\||\*|\+|\-|\/|>>|<<|%)/\1/m/{scope=push}
84797ac4d6SYorick Peterse--_mtable-regex-Inko=method/\{|\n//{scope=pop}{tleave}
85ccdaccdbSYorick Peterse--_mtable-regex-Inko=method/.//
86ccdaccdbSYorick Peterse
87ccdaccdbSYorick Peterse--_mtable-regex-Inko=impl/([A-Z][a-zA-Z0-9_?]*)[[:blank:]]+for[[:blank:]]+([A-Z][a-zA-Z0-9_?]*)[^{]*/\2/r/{scope=push}{_field=implements:\1}
88ccdaccdbSYorick Peterse--_mtable-regex-Inko=impl/([A-Z][a-zA-Z0-9_?]*)[^{]*/\1/r/{scope=push}
89ccdaccdbSYorick Peterse--_mtable-regex-Inko=impl/\{//{tleave}
90ccdaccdbSYorick Peterse--_mtable-regex-Inko=impl/.//
91ccdaccdbSYorick Peterse
9215132639SYorick Peterse--_mtable-regex-Inko=let/([A-Z][a-zA-Z0-9_]+)/\1/c/{scope=ref}{tleave}
93ccdaccdbSYorick Peterse
94ccdaccdbSYorick Peterse--_mtable-regex-Inko=comment/\n//{tleave}
95ccdaccdbSYorick Peterse--_mtable-regex-Inko=comment/.//
96