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