A Tree-sitter grammar for the Puppet language.
This grammar and the corresponding scanner have been developed following the structure of the original RACC grammar used by Puppet (see lib/puppet/pops/parser/egrammar.ra
in the Puppet source code). Therefore this grammar should cover the complete set of Puppet's language features.
The grammar has been successfully tested using almost 100000 lines of code in more than 1500 files of real world Puppet code. This includes Puppet modules written by myself and popular modules by Puppetlabs and Vox Pupuli (e.g. apache
, apt
, docker
, firewall
, nginx
, ntp
, php
, postgresql
, stdlib
, ...).
This parser is used for my Emacs major mode with tree-sitter support for Puppet manifests.