xref: /Universal-ctags/optlib/puppetManifest.ctags (revision b6f7c9a44824e6cc58a8834476fad60c80d2d725)
13409f3d5SMasatake YAMATO#
23409f3d5SMasatake YAMATO# puppetManifest.ctags --- multitable regex parser for Puppet's manifest file
33409f3d5SMasatake YAMATO#
43409f3d5SMasatake YAMATO#  Copyright (c) 2017, Red Hat, Inc.
53409f3d5SMasatake YAMATO#  Copyright (c) 2017, Masatake YAMATO
63409f3d5SMasatake YAMATO#
73409f3d5SMasatake YAMATO#  Author: Masatake YAMATO <yamato@redhat.com>
83409f3d5SMasatake YAMATO#
93409f3d5SMasatake YAMATO# This program is free software; you can redistribute it and/or
103409f3d5SMasatake YAMATO# modify it under the terms of the GNU General Public License
113409f3d5SMasatake YAMATO# as published by the Free Software Foundation; either version 2
123409f3d5SMasatake YAMATO# of the License, or (at your option) any later version.
133409f3d5SMasatake YAMATO#
143409f3d5SMasatake YAMATO# This program is distributed in the hope that it will be useful,
153409f3d5SMasatake YAMATO# but WITHOUT ANY WARRANTY; without even the implied warranty of
163409f3d5SMasatake YAMATO# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
173409f3d5SMasatake YAMATO# GNU General Public License for more details.
183409f3d5SMasatake YAMATO#
193409f3d5SMasatake YAMATO# You should have received a copy of the GNU General Public License
203409f3d5SMasatake YAMATO# along with this program; if not, write to the Free Software
213409f3d5SMasatake YAMATO# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
223409f3d5SMasatake YAMATO# USA.
233409f3d5SMasatake YAMATO#
243409f3d5SMasatake YAMATO#
253409f3d5SMasatake YAMATO# References:
263409f3d5SMasatake YAMATO#
273409f3d5SMasatake YAMATO# - https://github.com/puppetlabs/puppet-specifications/blob/master/language/intro.md
283409f3d5SMasatake YAMATO# - https://docs.puppet.com/puppet/5.1/lang_visual_index.html
293409f3d5SMasatake YAMATO#
30f570d51fSMasatake YAMATO--langdef=PuppetManifest{_autoFQTag}
316b1ec470SMasatake YAMATO--map-PuppetManifest=+.pp
323409f3d5SMasatake YAMATO
333409f3d5SMasatake YAMATO#
343409f3d5SMasatake YAMATO# Kinds
353409f3d5SMasatake YAMATO#
366b1ec470SMasatake YAMATO--kinddef-PuppetManifest=c,class,classes
376b1ec470SMasatake YAMATO--kinddef-PuppetManifest=d,definition,definitions
386b1ec470SMasatake YAMATO--kinddef-PuppetManifest=n,node,nodes
396b1ec470SMasatake YAMATO--kinddef-PuppetManifest=r,resource,resources
406b1ec470SMasatake YAMATO--kinddef-PuppetManifest=v,variable,variables
410ee6ddc8SMasatake YAMATO--kinddef-PuppetManifest=p,param,parameters
42bd464c18SMasatake YAMATO--kinddef-PuppetManifest=V,vresource,virtual resources
43*b6f7c9a4SMasatake YAMATO--kinddef-PuppetManifest=t,type,type aliases
443409f3d5SMasatake YAMATO
453409f3d5SMasatake YAMATO#
46f570d51fSMasatake YAMATO# Separators
47f570d51fSMasatake YAMATO#
48f570d51fSMasatake YAMATO--_scopesep-PuppetManifest=/c:::
49f570d51fSMasatake YAMATO--_scopesep-PuppetManifest=*/*:::
50f570d51fSMasatake YAMATO
51f570d51fSMasatake YAMATO#
52bd464c18SMasatake YAMATO# Prelude
53bd464c18SMasatake YAMATO#
54bd464c18SMasatake YAMATO--_prelude-PuppetManifest={{
55bd464c18SMasatake YAMATO    % spec:dict<num,kind> TRYMAKETAG tag:int true
56bd464c18SMasatake YAMATO    % spec:dict<num,kind> TRYMAKETAG false
57bd464c18SMasatake YAMATO    /trymaketag {
58bd464c18SMasatake YAMATO        {
59bd464c18SMasatake YAMATO            {
60bd464c18SMasatake YAMATO                1 index _matchstr {
61bd464c18SMasatake YAMATO                    % key value str
62bd464c18SMasatake YAMATO                    3 -1 roll
63bd464c18SMasatake YAMATO                    % value str key
64bd464c18SMasatake YAMATO                    _matchloc
65bd464c18SMasatake YAMATO                    % value str loc
66bd464c18SMasatake YAMATO                    3 -1 roll exch
67bd464c18SMasatake YAMATO                    % str value loc
68bd464c18SMasatake YAMATO                    _tag _commit
69bd464c18SMasatake YAMATO                    stop
70bd464c18SMasatake YAMATO                } {
71bd464c18SMasatake YAMATO                    pop pop
72bd464c18SMasatake YAMATO                } ifelse
73bd464c18SMasatake YAMATO            } forall
74bd464c18SMasatake YAMATO         } stopped
75bd464c18SMasatake YAMATO    } def
76bd464c18SMasatake YAMATO}}
77bd464c18SMasatake YAMATO
78bd464c18SMasatake YAMATO#
793409f3d5SMasatake YAMATO# Tables
803409f3d5SMasatake YAMATO#
816b1ec470SMasatake YAMATO--_tabledef-PuppetManifest=main
826b1ec470SMasatake YAMATO--_tabledef-PuppetManifest=separator
836b1ec470SMasatake YAMATO--_tabledef-PuppetManifest=any
846b1ec470SMasatake YAMATO--_tabledef-PuppetManifest=ignoreWhiteSpace
856b1ec470SMasatake YAMATO--_tabledef-PuppetManifest=end
866b1ec470SMasatake YAMATO--_tabledef-PuppetManifest=endWithPop
873409f3d5SMasatake YAMATO
886b1ec470SMasatake YAMATO--_tabledef-PuppetManifest=ssliteral
896b1ec470SMasatake YAMATO--_tabledef-PuppetManifest=dsliteral
903409f3d5SMasatake YAMATO
916b1ec470SMasatake YAMATO--_tabledef-PuppetManifest=comment
923409f3d5SMasatake YAMATO
936b1ec470SMasatake YAMATO--_tabledef-PuppetManifest=blockStart
946b1ec470SMasatake YAMATO--_tabledef-PuppetManifest=blockHead
956b1ec470SMasatake YAMATO--_tabledef-PuppetManifest=blockHeadPopAtLast
966b1ec470SMasatake YAMATO--_tabledef-PuppetManifest=block
973409f3d5SMasatake YAMATO
986b1ec470SMasatake YAMATO--_tabledef-PuppetManifest=classStart
996b1ec470SMasatake YAMATO#--_tabledef-PuppetManifest=resourceBlock{args=end}
1006b1ec470SMasatake YAMATO--_tabledef-PuppetManifest=resourceBlock
1013409f3d5SMasatake YAMATO
1026b1ec470SMasatake YAMATO--_tabledef-PuppetManifest=skipLiteral
1036b1ec470SMasatake YAMATO--_tabledef-PuppetManifest=skipBlock
1046b1ec470SMasatake YAMATO--_tabledef-PuppetManifest=skipArray
1056b1ec470SMasatake YAMATO--_tabledef-PuppetManifest=skipArgs
1066b1ec470SMasatake YAMATO--_tabledef-PuppetManifest=skipCollector
1073409f3d5SMasatake YAMATO
1080ee6ddc8SMasatake YAMATO--_tabledef-PuppetManifest=signature
1090ee6ddc8SMasatake YAMATO--_tabledef-PuppetManifest=skipDefaultValue
1100ee6ddc8SMasatake YAMATO
1116b1ec470SMasatake YAMATO--_tabledef-PuppetManifest=var
1123409f3d5SMasatake YAMATO
1136b1ec470SMasatake YAMATO--_tabledef-PuppetManifest=defineStart
1146b1ec470SMasatake YAMATO--_tabledef-PuppetManifest=caseStart
1156b1ec470SMasatake YAMATO--_tabledef-PuppetManifest=ifStart
1163409f3d5SMasatake YAMATO
1176b1ec470SMasatake YAMATO--_tabledef-PuppetManifest=nodeStart
1183409f3d5SMasatake YAMATO
119*b6f7c9a4SMasatake YAMATO--_tabledef-PuppetManifest=typeStart
120*b6f7c9a4SMasatake YAMATO
1213409f3d5SMasatake YAMATO#
1223409f3d5SMasatake YAMATO# Utilities
1233409f3d5SMasatake YAMATO#
1246b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=separator/[a-zA-Z0-9]//
1256b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=separator///{tleave}
1263409f3d5SMasatake YAMATO
1276b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=any/.//
12878fe1fd3SMasatake YAMATO--_mtable-regex-PuppetManifest=ignoreWhiteSpace/[ \t\n]+//
1296b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=end///{tleave}
1306b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=endWithPop///{tleave}{scope=pop}
1313409f3d5SMasatake YAMATO
132e7210e24SMasatake YAMATO--_mtable-regex-PuppetManifest=ssliteral/[^']*'//{tleave}
13378fe1fd3SMasatake YAMATO--_mtable-regex-PuppetManifest=ssliteral/[^']+//
134e7210e24SMasatake YAMATO--_mtable-regex-PuppetManifest=dsliteral/[^"]*"//{tleave}
13578fe1fd3SMasatake YAMATO--_mtable-regex-PuppetManifest=dsliteral/[^"]+//
1363409f3d5SMasatake YAMATO
1373409f3d5SMasatake YAMATO#
1383409f3d5SMasatake YAMATO# comment
1393409f3d5SMasatake YAMATO#
1406b1ec470SMasatake YAMATO--_tabledef-PuppetManifest=comment_multiline
1416b1ec470SMasatake YAMATO--_tabledef-PuppetManifest=comment_oneline
1426b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=comment/\/\*//{tenter=comment_multiline}
1436b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=comment/\#//{tenter=comment_oneline}
1446b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=comment_multiline/\*\///{tleave}
1456b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=comment_multiline+any
1466b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=comment_oneline/\n//{tleave}
1476b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=comment_oneline+any
1483409f3d5SMasatake YAMATO
1493409f3d5SMasatake YAMATO#
1503409f3d5SMasatake YAMATO# skipLiteral
1513409f3d5SMasatake YAMATO#
1526b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=skipLiteral/'//{tenter=ssliteral}
1536b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=skipLiteral/"//{tenter=dsliteral}
1543409f3d5SMasatake YAMATO
1553409f3d5SMasatake YAMATO#
1563409f3d5SMasatake YAMATO# skipBlock
1573409f3d5SMasatake YAMATO#
1586b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=skipBlock+comment
1596b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=skipBlock+skipLiteral
1606b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=skipBlock/\{//{tenter=skipBlock}
1616b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=skipBlock/\}//{tleave}
1626b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=skipBlock+any
1633409f3d5SMasatake YAMATO
1643409f3d5SMasatake YAMATO#
1653409f3d5SMasatake YAMATO# skipArray
1663409f3d5SMasatake YAMATO#
1676b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=skipArray+comment
1686b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=skipArray+skipLiteral
1696b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=skipArray/\[//{tenter=skipArray}
1706b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=skipArray/\]//{tleave}
1716b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=skipArray+any
1723409f3d5SMasatake YAMATO
1733409f3d5SMasatake YAMATO#
1743409f3d5SMasatake YAMATO# skipArgs
1753409f3d5SMasatake YAMATO#
1766b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=skipArgs+comment
1776b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=skipArgs+skipLiteral
1786b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=skipArgs/\(//{tenter=skipArgs}
1796b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=skipArgs/\)//{tleave}
1806b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=skipArgs+any
1813409f3d5SMasatake YAMATO
1823409f3d5SMasatake YAMATO#
1830ee6ddc8SMasatake YAMATO# signature
1840ee6ddc8SMasatake YAMATO#
1850ee6ddc8SMasatake YAMATO--_mtable-extend-PuppetManifest=signature+comment
1860ee6ddc8SMasatake YAMATO--_mtable-extend-PuppetManifest=signature+skipLiteral
1870ee6ddc8SMasatake YAMATO--_mtable-extend-PuppetManifest=signature+ignoreWhiteSpace
1880ee6ddc8SMasatake YAMATO--_mtable-regex-PuppetManifest=signature/\)//{tleave}{{
1890ee6ddc8SMasatake YAMATO    %
1900ee6ddc8SMasatake YAMATO    % fill signature
1910ee6ddc8SMasatake YAMATO    %
1920ee6ddc8SMasatake YAMATO    dup ?, eq { pop } if
1930ee6ddc8SMasatake YAMATO    ?) _buildstring _scopetop {
1940ee6ddc8SMasatake YAMATO        exch signature:
1950ee6ddc8SMasatake YAMATO    } {
1960ee6ddc8SMasatake YAMATO        % something wrong
1970ee6ddc8SMasatake YAMATO        pop
1980ee6ddc8SMasatake YAMATO    } ifelse
1990ee6ddc8SMasatake YAMATO}}
2000ee6ddc8SMasatake YAMATO--_mtable-regex-PuppetManifest=signature/\$([a-zA-Z][_a-zA-Z0-9:]*)[ \t]*([=,])[ \t]*/\1/p/{scope=ref}{{
2010ee6ddc8SMasatake YAMATO    % push the name of parameter for filling the signature field of definition
2020ee6ddc8SMasatake YAMATO    \2 0 get ?= eq {
2030ee6ddc8SMasatake YAMATO       /skipDefaultValue _tenter
2040ee6ddc8SMasatake YAMATO    } if
2050ee6ddc8SMasatake YAMATO    ?$ \1 ?,
2060ee6ddc8SMasatake YAMATO}}
2070ee6ddc8SMasatake YAMATO--_mtable-extend-PuppetManifest=signature+any
2080ee6ddc8SMasatake YAMATO
2090ee6ddc8SMasatake YAMATO#
2100ee6ddc8SMasatake YAMATO# skipDefaultValue
2110ee6ddc8SMasatake YAMATO#
2120ee6ddc8SMasatake YAMATO--_mtable-extend-PuppetManifest=skipDefaultValue+comment
2130ee6ddc8SMasatake YAMATO--_mtable-extend-PuppetManifest=skipDefaultValue+skipLiteral
2140ee6ddc8SMasatake YAMATO--_mtable-regex-PuppetManifest=skipDefaultValue/\[//{tenter=skipArray}
2150ee6ddc8SMasatake YAMATO--_mtable-regex-PuppetManifest=skipDefaultValue/\{//{tenter=skipBlock}
2160ee6ddc8SMasatake YAMATO--_mtable-regex-PuppetManifest=skipDefaultValue/\(//{tenter=skipArgs}
2170ee6ddc8SMasatake YAMATO--_mtable-regex-PuppetManifest=skipDefaultValue/,//{tleave}
2180ee6ddc8SMasatake YAMATO--_mtable-regex-PuppetManifest=skipDefaultValue/\)//{tleave}{_advanceTo=0start}
2190ee6ddc8SMasatake YAMATO--_mtable-extend-PuppetManifest=skipDefaultValue+any
2200ee6ddc8SMasatake YAMATO
2210ee6ddc8SMasatake YAMATO#
2223409f3d5SMasatake YAMATO# skipCollector
2233409f3d5SMasatake YAMATO#
2246b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=skipCollector+comment
2256b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=skipCollector+skipLiteral
2266b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=skipCollector/<<?\|//{tenter=skipCollector}
2276b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=skipCollector/\|>>?//{tleave}
2286b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=skipCollector+any
2293409f3d5SMasatake YAMATO
2303409f3d5SMasatake YAMATO
2313409f3d5SMasatake YAMATO
2323409f3d5SMasatake YAMATO#
2333409f3d5SMasatake YAMATO# block
2343409f3d5SMasatake YAMATO#
23573467b38SMasatake YAMATO--_mtable-regex-PuppetManifest=blockStart/(@)?(::[a-zA-Z0-9:_]+|[a-zA-Z][a-zA-Z0-9:_]*)[ \t\n]*\{//{tenter=resourceBlock}{{
2365c1bbad2SMasatake YAMATO    \1 _isstring {
237bd464c18SMasatake YAMATO       /vresource
2385c1bbad2SMasatake YAMATO    } {
2395c1bbad2SMasatake YAMATO       /resource
24073467b38SMasatake YAMATO    } ifelse \2 true
241bd464c18SMasatake YAMATO    % kind:name type:string true
24273467b38SMasatake YAMATO}}
2436b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=blockStart/class[ \t\n]+//{tenter=classStart}
2446b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=blockStart/define[ \t\n]+//{tenter=defineStart}
2456b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=blockStart/case[ \t\n]+//{tenter=caseStart}
2466b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=blockStart/(if|elsif|else|unless)[ \t\n]+//{tenter=ifStart}
2476b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=blockStart/node[ \t\n]+//{tenter=nodeStart}
248*b6f7c9a4SMasatake YAMATO--_mtable-regex-PuppetManifest=blockStart/type[ \t\n]+//{tenter=typeStart}
249eca6f84cSMasatake YAMATO--_mtable-regex-PuppetManifest=blockStart/\$//{tenter=var}
2503409f3d5SMasatake YAMATO
2513409f3d5SMasatake YAMATO
2526b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=blockHead+comment
2530e5a358cSMasatake YAMATO--_mtable-extend-PuppetManifest=blockHead+ignoreWhiteSpace
2546b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=blockHead/\{//{tenter=block,end}
2556b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=blockHead+any
2563409f3d5SMasatake YAMATO
2576b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=blockHeadPopAtLast+comment
2586b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=blockHeadPopAtLast/\{//{tenter=block,endWithPop}
2596c3c5407SMasatake YAMATO--_mtable-extend-PuppetManifest=blockHeadPopAtLast+ignoreWhiteSpace
2606c3c5407SMasatake YAMATO--_mtable-regex-PuppetManifest=blockHeadPopAtLast/inherits[ \t\n]+(::[a-z][_a-zA-Z0-9:]*|[a-z][_a-zA-Z0-9:]*)[ \t\n]*//{{
2616c3c5407SMasatake YAMATO    _scopetop {
2626c3c5407SMasatake YAMATO        dup :kind /class eq {
2636c3c5407SMasatake YAMATO           \1 inherits:
2646c3c5407SMasatake YAMATO        } {
2656c3c5407SMasatake YAMATO           pop
2666c3c5407SMasatake YAMATO        } ifelse
2676c3c5407SMasatake YAMATO    } if
2686c3c5407SMasatake YAMATO}}
2696b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=blockHeadPopAtLast+any
2703409f3d5SMasatake YAMATO
2716b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=block+ignoreWhiteSpace
2726b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=block+blockStart
273ae1a08feSMasatake YAMATO--_mtable-regex-PuppetManifest=block/<<?\|//{tenter=skipCollector}
2743409f3d5SMasatake YAMATO
2753409f3d5SMasatake YAMATO# Following stack manipulation for handling following input.
2763409f3d5SMasatake YAMATO# A {
2773409f3d5SMasatake YAMATO#     "a": b => c;
2783409f3d5SMasatake YAMATO#     "d": e => f;
2793409f3d5SMasatake YAMATO# }
2803409f3d5SMasatake YAMATO# B {
2813409f3d5SMasatake YAMATO#     "g": h => i;
2823409f3d5SMasatake YAMATO#     "j": k => k /* THIS COMMENT CANNOT BE IGNORED WELL */
2833409f3d5SMasatake YAMATO# }
2846b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=block/;?[ \t\n]*\}//{tleave}
28573467b38SMasatake YAMATO--_mtable-regex-PuppetManifest=block/;//{tjump=resourceBlock}{scope=pop}{{
28673467b38SMasatake YAMATO    false
28773467b38SMasatake YAMATO}}
2886b1ec470SMasatake YAMATO#--_mtable-regex-PuppetManifest=block/;//{tleave}{scope=pop}
2896b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=block/://
290ae1a08feSMasatake YAMATO--_mtable-extend-PuppetManifest=block+comment
291ae1a08feSMasatake YAMATO--_mtable-extend-PuppetManifest=block+skipLiteral
2920e5a358cSMasatake YAMATO--_mtable-regex-PuppetManifest=block/\{//{tenter=block}
2936b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=block/.//{tenter=separator}
2943409f3d5SMasatake YAMATO
2953409f3d5SMasatake YAMATO#
2963409f3d5SMasatake YAMATO# main
2973409f3d5SMasatake YAMATO#
2986b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=main+comment
2996b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=main+ignoreWhiteSpace
3006b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=main+skipLiteral
3016b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=main/<<?\|//{tenter=skipCollector}
3026b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=main/\$//{tenter=var}
3036b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=main+blockStart
3046b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=main/\(//{tenter=skipArgs}
3056b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=main/\{//{tenter=skipBlock}
3066b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=main/.//{tenter=separator}
3073409f3d5SMasatake YAMATO
3083409f3d5SMasatake YAMATO#
3093409f3d5SMasatake YAMATO# class
3106b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=classStart+comment
3116c3c5407SMasatake YAMATO--_mtable-regex-PuppetManifest=classStart/(::[a-z][_a-zA-Z0-9:]*|[a-z][_a-zA-Z0-9:]*)[ \t\n]*(\(|\{|inherits[ \t\n]+(::[a-z][_a-zA-Z0-9:]*|[a-z][_a-zA-Z0-9:]*))[ \t\n]*/\1/c/{scope=push}{{
3125c1bbad2SMasatake YAMATO    \3 _isstring {
3135c1bbad2SMasatake YAMATO        . exch inherits:
3146c3c5407SMasatake YAMATO        /blockHead /endWithPop _tentercont
3156c3c5407SMasatake YAMATO    } {
3166c3c5407SMasatake YAMATO        \2 0 get ?( eq {
3176c3c5407SMasatake YAMATO            % for gathering signature
3186c3c5407SMasatake YAMATO            mark ?(
3196c3c5407SMasatake YAMATO            % {tenter=signature,blockHeadPopAtLast}
3206c3c5407SMasatake YAMATO            /signature /blockHeadPopAtLast _tentercont
3216c3c5407SMasatake YAMATO        } {
3226c3c5407SMasatake YAMATO            2 /start _matchloc _advanceto
3236c3c5407SMasatake YAMATO            /blockHead /endWithPop _tentercont
3246c3c5407SMasatake YAMATO        } ifelse
3256c3c5407SMasatake YAMATO    } ifelse
3265c1bbad2SMasatake YAMATO}}
3273409f3d5SMasatake YAMATO
3283409f3d5SMasatake YAMATO#
3293409f3d5SMasatake YAMATO# resource
3303409f3d5SMasatake YAMATO#
3316b1ec470SMasatake YAMATO--_tabledef-PuppetManifest=resourceName
3326b1ec470SMasatake YAMATO--_tabledef-PuppetManifest=resourceNameInArray
3336b1ec470SMasatake YAMATO--_tabledef-PuppetManifest=resourceBody
3346b1ec470SMasatake YAMATO--_tabledef-PuppetManifest=resourceArray
3356b1ec470SMasatake YAMATO--_tabledef-PuppetManifest=resourceCollector
3363409f3d5SMasatake YAMATO
33773467b38SMasatake YAMATO# resourceBlock expects data on optscript:
33873467b38SMasatake YAMATO#
33973467b38SMasatake YAMATO# false RESOURCEBLOCK -
340bd464c18SMasatake YAMATO# kind:name type:string true RESOURCEBLOCK -
34173467b38SMasatake YAMATO#
3426b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=resourceBlock+ignoreWhiteSpace
34373467b38SMasatake YAMATO--_mtable-regex-PuppetManifest=resourceBlock/\}//{tleave}{{
34473467b38SMasatake YAMATO    { pop pop } if
34573467b38SMasatake YAMATO}}
3466b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=resourceBlock/'//{tenter=resourceName}{_advanceTo=0start}
3476b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=resourceBlock/"//{tenter=resourceName}{_advanceTo=0start}
3486b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=resourceBlock/\[//{tenter=resourceArray}
3490e5a358cSMasatake YAMATO--_mtable-regex-PuppetManifest=resourceBlock/\{//{tenter=block}
3501e22d3bcSMasatake YAMATO--_mtable-extend-PuppetManifest=resourceBlock+comment
3516b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=resourceBlock/.//{tenter=resourceBody}{scope=push}{placeholder}
3523409f3d5SMasatake YAMATO
35373467b38SMasatake YAMATO# resourceName expects data on optscript:
35473467b38SMasatake YAMATO#
35573467b38SMasatake YAMATO# false RESOURCENAME false
356bd464c18SMasatake YAMATO# kind:name type:string true RESOURCENAME kind:name type:string true
35773467b38SMasatake YAMATO#
358bd464c18SMasatake YAMATO--_mtable-regex-PuppetManifest=resourceName/'([^']+)'|"([^"]+)"//{tenter=resourceBody,end}{{
35973467b38SMasatake YAMATO    dup {
360bd464c18SMasatake YAMATO        1 index (typename) exch [ 3 1 roll ]
361ee8dc419SMasatake YAMATO        % kind:name type:string true [ (typename) type:string ]
362bd464c18SMasatake YAMATO        <<
363bd464c18SMasatake YAMATO        4 index
364ee8dc419SMasatake YAMATO        % kind:name type:string true [ (typename) type:string ] << kind:name
365bd464c18SMasatake YAMATO        1 exch dup 2 exch
366bd464c18SMasatake YAMATO        >>
367ee8dc419SMasatake YAMATO        % kind:name type:string true [ (typename) type:string ] << 1 kind:name 2 kind:name >>
368bd464c18SMasatake YAMATO        trymaketag
369ee8dc419SMasatake YAMATO        % kind:name type:string true [ (typename) type:string ] tag:int true %
370ee8dc419SMasatake YAMATO        % kind:name type:string true [ (typename) type:string ] false
371bd464c18SMasatake YAMATO        {
372bd464c18SMasatake YAMATO            dup _scopepush
373bd464c18SMasatake YAMATO            exch typeref:
374bd464c18SMasatake YAMATO        } {
375bd464c18SMasatake YAMATO            pop
376bd464c18SMasatake YAMATO        } ifelse
377bd464c18SMasatake YAMATO    } {
378bd464c18SMasatake YAMATO        << 1 /resource 2 /resource >> trymaketag {
379bd464c18SMasatake YAMATO           _scopepush
38073467b38SMasatake YAMATO        } if
381bd464c18SMasatake YAMATO    } ifelse
38273467b38SMasatake YAMATO}}
3836b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=resourceName///{tquit}
384ee8dc419SMasatake YAMATO
385ee8dc419SMasatake YAMATO# resourceNameInArray expects data on optscript:
386ee8dc419SMasatake YAMATO#
387ee8dc419SMasatake YAMATO# false RESOURCENAMEINARRAY false
388ee8dc419SMasatake YAMATO# kind:name type:string true RESOURCENAMEINARRAY kind:name type:string true
389ee8dc419SMasatake YAMATO#
390ee8dc419SMasatake YAMATO--_mtable-regex-PuppetManifest=resourceNameInArray/'([^']+)'|"([^"]+)"///{tleave}{{
391ee8dc419SMasatake YAMATO    dup {
392ee8dc419SMasatake YAMATO        % do the same as resourceName
393ee8dc419SMasatake YAMATO        1 index (typename) exch [ 3 1 roll ]
394ee8dc419SMasatake YAMATO        << 4 index 1 exch dup 2 exch >> trymaketag
395ee8dc419SMasatake YAMATO        {
396ee8dc419SMasatake YAMATO            dup _scoperef
397ee8dc419SMasatake YAMATO            exch typeref:
398ee8dc419SMasatake YAMATO        } {
399ee8dc419SMasatake YAMATO            pop
400ee8dc419SMasatake YAMATO        } ifelse
401ee8dc419SMasatake YAMATO
402ee8dc419SMasatake YAMATO    } {
403ee8dc419SMasatake YAMATO        << 1 /resource 2 /resource >> trymaketag {
404ee8dc419SMasatake YAMATO           _scoperef
405ee8dc419SMasatake YAMATO        } if
406ee8dc419SMasatake YAMATO    } ifelse
407ee8dc419SMasatake YAMATO}}
4086b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=resourceNameInArray////{tquit}
4093409f3d5SMasatake YAMATO
4106ba08990SMasatake YAMATO# --_mtable-extend-PuppetManifest=resourceBody+ignoreWhiteSpace
4116ba08990SMasatake YAMATO#
4126ba08990SMasatake YAMATO# Next pattern is just for optimization.
4136ba08990SMasatake YAMATO#
41478fe1fd3SMasatake YAMATO--_mtable-regex-PuppetManifest=resourceBody/[^\/#{'";}<]+//
4156b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=resourceBody/'//{tenter=ssliteral}
4166b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=resourceBody/"//{tenter=dsliteral}
4176b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=resourceBody/\}//{tleave}{_advanceTo=0start}{scope=pop}
4186ba08990SMasatake YAMATO--_mtable-regex-PuppetManifest=resourceBody/\{//{tenter=skipBlock}
4196ba08990SMasatake YAMATO--_mtable-regex-PuppetManifest=resourceBody/;//{tleave}{scope=pop}
4206b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=resourceBody/<<?\|//{tenter=skipCollector}
4216ba08990SMasatake YAMATO--_mtable-extend-PuppetManifest=resourceBody+comment
4226b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=resourceBody+any
4233409f3d5SMasatake YAMATO
4246b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=resourceArray+comment
4256b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=resourceArray+ignoreWhiteSpace
426ee8dc419SMasatake YAMATO--_mtable-regex-PuppetManifest=resourceArray/['"]//{tenter=resourceNameInArray}{_advanceTo=0start}
4276b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=resourceArray/\]//{tleave}
4286b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=resourceArray+any
4293409f3d5SMasatake YAMATO
4303409f3d5SMasatake YAMATO#
4313409f3d5SMasatake YAMATO# var
4323409f3d5SMasatake YAMATO#
4336b1ec470SMasatake YAMATO--_tabledef-PuppetManifest=varexpr
43420a1fd27SMasatake YAMATO--_mtable-regex-PuppetManifest=var/(::[a-zA-Z0-9_:]+|[a-zA-Z_][a-zA-Z0-9_:]*)[ \t\n]*=/\1/v/{tenter=varexpr,end}{{
43520a1fd27SMasatake YAMATO    \1 0 get ?: eq not {
43620a1fd27SMasatake YAMATO       . _scoperef
43720a1fd27SMasatake YAMATO    } if
43820a1fd27SMasatake YAMATO}}
4393409f3d5SMasatake YAMATO
4406b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=varexpr+comment
4416b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=varexpr/'//{tenter=ssliteral,end}
4426b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=varexpr/"//{tenter=dsliteral,end}
4436b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=varexpr/\[//{tenter=skipArray,end}
4446b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=varexpr/\{//{tenter=skipBlock,end}
4456b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=varexpr/\(//{tenter=skipArgs,end}
446303b676eSMasatake YAMATO--_mtable-regex-PuppetManifest=varexpr/\$[a-zA-Z:][0-9a-zA-Z:]*//
4476b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=varexpr/[0-9]+(\.[0-9]+(e([+-][0-9]+)))?//
4486b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=varexpr/[a-zA-Z0-9:][0-9a-zA-Z:]*//
4496b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=varexpr/[ \t]//
4506b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=varexpr/\n//{tleave}
451bc929927SMasatake YAMATO--_mtable-extend-PuppetManifest=varexpr+any
4523409f3d5SMasatake YAMATO
4533409f3d5SMasatake YAMATO#
4543409f3d5SMasatake YAMATO# define
4553409f3d5SMasatake YAMATO#
4566b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=defineStart+comment
45720a1fd27SMasatake YAMATO--_mtable-regex-PuppetManifest=defineStart/([a-z][_a-zA-Z0-9:]*)[ \n\t]*([({])/\1/d/{scope=push}{{
45820a1fd27SMasatake YAMATO    \2 0 get ?( eq {
4590ee6ddc8SMasatake YAMATO       % for gathering signature
4600ee6ddc8SMasatake YAMATO       mark ?(
46120a1fd27SMasatake YAMATO       % {tenter=signature,blockHeadPopAtLast}
46220a1fd27SMasatake YAMATO       /signature /blockHeadPopAtLast _tentercont
46320a1fd27SMasatake YAMATO    } {
46420a1fd27SMasatake YAMATO       /block /endWithPop _tentercont
46520a1fd27SMasatake YAMATO    } ifelse
4660ee6ddc8SMasatake YAMATO}}
4673409f3d5SMasatake YAMATO
4683409f3d5SMasatake YAMATO#
4693409f3d5SMasatake YAMATO# case
4703409f3d5SMasatake YAMATO#
4716b1ec470SMasatake YAMATO--_tabledef-PuppetManifest=caseBlock
4723409f3d5SMasatake YAMATO
4736b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=caseStart+comment
4746b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=caseStart+ignoreWhiteSpace
4756b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=caseStart/\{//{tenter=caseBlock}
4766b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=caseStart/}//{tleave}
4776b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=caseStart+any
4783409f3d5SMasatake YAMATO
4796b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=caseBlock+comment
4806b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=caseBlock+ignoreWhiteSpace
4816b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=caseBlock+skipLiteral
4820e5a358cSMasatake YAMATO--_mtable-regex-PuppetManifest=caseBlock/://{tenter=blockHead}
4836b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=caseBlock/}//{tleave}{_advanceTo=0start}
4846b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=caseBlock+any
4853409f3d5SMasatake YAMATO
4863409f3d5SMasatake YAMATO#
4873409f3d5SMasatake YAMATO# if/elsif/else
4883409f3d5SMasatake YAMATO#
4896b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=ifStart+comment
4906b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=ifStart+ignoreWhiteSpace
4916b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=ifStart+skipLiteral
4926b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=ifStart/\{//{tenter=block,end}
4936b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=ifStart+any
4943409f3d5SMasatake YAMATO
4953409f3d5SMasatake YAMATO#
4963409f3d5SMasatake YAMATO# node
4973409f3d5SMasatake YAMATO#
4986b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=nodeStart+comment
4996b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=nodeStart+ignoreWhiteSpace
5006b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=nodeStart/'([^']+)'/\1/n/
5016b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=nodeStart/"([^"]+)"/\1/n/
5026b1ec470SMasatake YAMATO--_mtable-regex-PuppetManifest=nodeStart/\{///{tenter=block,end}
5036b1ec470SMasatake YAMATO--_mtable-extend-PuppetManifest=nodeStart+any
504*b6f7c9a4SMasatake YAMATO
505*b6f7c9a4SMasatake YAMATO#
506*b6f7c9a4SMasatake YAMATO# type
507*b6f7c9a4SMasatake YAMATO#
508*b6f7c9a4SMasatake YAMATO--_mtable-extend-PuppetManifest=typeStart+comment
509*b6f7c9a4SMasatake YAMATO--_mtable-extend-PuppetManifest=typeStart+ignoreWhiteSpace
510*b6f7c9a4SMasatake YAMATO--_mtable-regex-PuppetManifest=typeStart/([a-zA-Z][a-zA-Z0-9]*::[a-zA-Z][a-zA-Z0-9]+)[ \t\n]*=[ \t\n]*/\1/t/{tenter=varexpr,end}
511*b6f7c9a4SMasatake YAMATO--_mtable-extend-PuppetManifest=typeStart+any
512