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