1936b20ceSMasatake YAMATO# 2936b20ceSMasatake YAMATO# rpmMacros.ctags --- multitable regex parser for /usr/lib/rpm/macros files 3936b20ceSMasatake YAMATO# 4936b20ceSMasatake YAMATO# Copyright (c) 2021 Masatake YAMATO 5936b20ceSMasatake YAMATO# Copyright (c) 2021 Red Hat, Inc. 6936b20ceSMasatake YAMATO# 7936b20ceSMasatake YAMATO# This source code is released for free distribution under the terms of the 8936b20ceSMasatake YAMATO# GNU General Public License version 2 or (at your option) any later version. 9936b20ceSMasatake YAMATO# 10936b20ceSMasatake YAMATO# References: 11936b20ceSMasatake YAMATO# 12936b20ceSMasatake YAMATO# - https://rpm.org/user_doc/macros.html 13936b20ceSMasatake YAMATO# 14936b20ceSMasatake YAMATO# TODO: 15936b20ceSMasatake YAMATO# 16936b20ceSMasatake YAMATO# - Run Lua parser as a subparser 17936b20ceSMasatake YAMATO# 18936b20ceSMasatake YAMATO--langdef=RpmMacros 19*29197a38SMasatake YAMATO 20*29197a38SMasatake YAMATO# This map is too generic. 21*29197a38SMasatake YAMATO# e.g. "macros.h" of C language input matches this pattern. 22*29197a38SMasatake YAMATO# --map-RpmMacros=+(macros.*) 23936b20ceSMasatake YAMATO 24936b20ceSMasatake YAMATO# This one is too general. 25936b20ceSMasatake YAMATO# --map-RpmMacros=+(macros) 26936b20ceSMasatake YAMATO 27936b20ceSMasatake YAMATO--kinddef-RpmMacros=m,macro,macros 28936b20ceSMasatake YAMATO 29936b20ceSMasatake YAMATO--_tabledef-RpmMacros=main 30936b20ceSMasatake YAMATO--_tabledef-RpmMacros=contline 31936b20ceSMasatake YAMATO 32936b20ceSMasatake YAMATO--_mtable-regex-RpmMacros=main/^#[^\n]*\n?// 33936b20ceSMasatake YAMATO--_mtable-regex-RpmMacros=main/^%([_a-zA-Z0-9]+)(\([^)]*\))*[^\n]*([^\n])\n?/\1/m/{{ 34936b20ceSMasatake YAMATO \2 false ne { 35936b20ceSMasatake YAMATO . \2 signature: 36936b20ceSMasatake YAMATO } if 37936b20ceSMasatake YAMATO \3 (\\) eq { 38936b20ceSMasatake YAMATO % push the current tag for attaching end: later 39936b20ceSMasatake YAMATO . 40936b20ceSMasatake YAMATO % Skip next line if \ is at the enf of the current line. 41936b20ceSMasatake YAMATO /contline _tenter 42936b20ceSMasatake YAMATO } if 43936b20ceSMasatake YAMATO}} 44936b20ceSMasatake YAMATO--_mtable-regex-RpmMacros=main/.// 45936b20ceSMasatake YAMATO 46936b20ceSMasatake YAMATO--_mtable-regex-RpmMacros=contline/(\n)//{{ 47936b20ceSMasatake YAMATO 1 /start _matchloc end: 48936b20ceSMasatake YAMATO _tleave 49936b20ceSMasatake YAMATO}} 50936b20ceSMasatake YAMATO--_mtable-regex-RpmMacros=contline/^[^\n]*([^\n])\n?///{{ 51936b20ceSMasatake YAMATO \1 (\\) eq not { 52936b20ceSMasatake YAMATO 1 /end _matchloc end: 53936b20ceSMasatake YAMATO _tleave 54936b20ceSMasatake YAMATO } if 55936b20ceSMasatake YAMATO}} 56