xref: /Universal-ctags/optlib/mesonOptions.ctags (revision 57835cd4fc9319a16d4806aee3f34b951b88a1e3)
194868d14SMasatake YAMATO#
2fbd53a7cSMasatake YAMATO#  mesonOptions.ctags --- multitable regex parser for meson_options files
394868d14SMasatake YAMATO#
494868d14SMasatake YAMATO#  Copyright (c) 2021 Masatake YAMATO
594868d14SMasatake YAMATO#  Copyright (c) 2021 Red Hat, Inc.
694868d14SMasatake YAMATO#
794868d14SMasatake YAMATO#  This source code is released for free distribution under the terms of the
894868d14SMasatake YAMATO#  GNU General Public License version 2 or (at your option) any later version.
994868d14SMasatake YAMATO#
1094868d14SMasatake YAMATO#  This parser is one of testbed of optscript.
1194868d14SMasatake YAMATO#
1294868d14SMasatake YAMATO# References:
1394868d14SMasatake YAMATO#
1494868d14SMasatake YAMATO# - https://mesonbuild.com/Build-options.html
1594868d14SMasatake YAMATO#
1694868d14SMasatake YAMATO# TODO:
1794868d14SMasatake YAMATO#
1894868d14SMasatake YAMATO# - capture choice items
1994868d14SMasatake YAMATO#
2094868d14SMasatake YAMATO--langdef=MesonOptions
2194868d14SMasatake YAMATO--map-MesonOptions=+(meson_options.txt)
2294868d14SMasatake YAMATO
2394868d14SMasatake YAMATO--kinddef-MesonOptions=s,string,strings
2494868d14SMasatake YAMATO--kinddef-MesonOptions=b,boolean,booleans
2594868d14SMasatake YAMATO--kinddef-MesonOptions=c,combo,combos
2694868d14SMasatake YAMATO--kinddef-MesonOptions=i,integer,integers
2794868d14SMasatake YAMATO--kinddef-MesonOptions=a,array,arrays
2894868d14SMasatake YAMATO--kinddef-MesonOptions=f,feature,features
2994868d14SMasatake YAMATO
30*57835cd4SMasatake YAMATO--mline-regex-MesonOptions=/^option[ \t\n]*\([ \t\n]*'([^']*[^\\])'[ \t\n]*,[ \t\n]*type[ \t\n]*:[ \t\n]*'([a-z]+)'//{{
3194868d14SMasatake YAMATO    % \1 points a tag name.
3294868d14SMasatake YAMATO    \1
3394868d14SMasatake YAMATO    % \2 may point a kind. This must be converted to a name from a string.
3494868d14SMasatake YAMATO    \2 cvn
3594868d14SMasatake YAMATO    % Push the start position of the group 1.
3694868d14SMasatake YAMATO    1 /start _matchloc
3794868d14SMasatake YAMATO    % To skip an unexpected kind name, _tag is wrapped with stopped.
3894868d14SMasatake YAMATO    { _tag } stopped {
3994868d14SMasatake YAMATO        % Unexpected kind. Clear the stack.
4094868d14SMasatake YAMATO        pop pop pop
4194868d14SMasatake YAMATO    } {
4294868d14SMasatake YAMATO        _commit pop
4394868d14SMasatake YAMATO    } ifelse
4494868d14SMasatake YAMATO}}
45