### Install Puppet Dependencies with Bundler Source: https://github.com/puppetlabs/puppet/blob/main/docs/quickstart.md Installs all project dependencies defined in the Gemfile using bundler. The `--path .bundle` flag ensures dependencies are installed locally within the project. ```bash $ bundle install --path .bundle ``` -------------------------------- ### Install Bundler Dependency Manager Source: https://github.com/puppetlabs/puppet/blob/main/docs/quickstart.md Installs the bundler gem, a dependency manager for Ruby projects, which is required for managing Puppet's dependencies. ```bash $ gem install bundler ``` -------------------------------- ### Run Puppet Spec Tests Source: https://github.com/puppetlabs/puppet/blob/main/docs/quickstart.md Executes the project's spec tests using Rake. `bundle exec` ensures the tests run within the context of the project's installed dependencies. ```bash $ bundle exec rake spec ``` -------------------------------- ### Run Puppet Resource Lookup Source: https://github.com/puppetlabs/puppet/blob/main/docs/quickstart.md Executes the Puppet agent to perform a resource lookup, for example, for the host 'localhost'. This command runs within the context of Puppet's dependencies. ```bash $ bundle exec puppet resource host localhost ``` -------------------------------- ### Run Puppet Apply with a Manifest Source: https://github.com/puppetlabs/puppet/blob/main/docs/quickstart.md Applies a given Puppet manifest directly from the command line. This is useful for quick testing of small configurations. ```bash $ bundle exec puppet apply -e 'notify { "hello world": }' ``` -------------------------------- ### Package Installation with Custom Options (Puppet) Source: https://github.com/puppetlabs/puppet/blob/main/references/type.md Demonstrates how to install a package with specific installation options, including a custom installation directory. This is useful for packages that require non-standard setup procedures. Note that file paths in options on Windows must use backslashes, which need to be escaped in double-quoted strings. ```puppet package { 'mysql': ensure => installed, source => 'N:/packages/mysql-5.5.16-winx64.msi', install_options => [ '/S', { 'INSTALLDIR' => 'C:\\mysql-5.5' } ], } ``` -------------------------------- ### Install and Test Ruby 3.2 Locally Source: https://github.com/puppetlabs/puppet/wiki/Puppet-8-Compatibility This snippet shows how to install and switch to Ruby 3.2 using rbenv, clear the Gemfile.lock, install dependencies, and run RSpec tests to verify compatibility. It's a crucial first step for identifying Ruby 3.2 related issues. ```shell rbenv install 3.2.0 rbenv shell 3.2.0 rm Gemfile.lock bundle bundle exec rake spec ``` -------------------------------- ### Install Package with Options (Puppet DSL) Source: https://github.com/puppetlabs/puppet/blob/main/references/types/package.md Demonstrates how to pass additional, package-specific options during package installation using the `install_options` attribute in Puppet's DSL. This is particularly useful for Windows MSI installations where options like `INSTALLDIR` can be specified. File paths with backslashes must be properly escaped. ```puppet package { 'mysql': ensure => installed, source => 'N:/packages/mysql-5.5.16-winx64.msi', install_options => [ '/S', { 'INSTALLDIR' => 'C:\\mysql-5.5' } ], } } ``` -------------------------------- ### Puppet Filebucket Get Example Source: https://github.com/puppetlabs/puppet/blob/main/references/man/filebucket.md Illustrates the usage of the 'get' mode for retrieving file content from a filebucket using its SHA256 sum. The retrieved content is output to standard output. ```bash # Example of getting file content by SHA256 sum (specific command invocation not shown) # The output would be the content of the file. # puppet filebucket get ``` -------------------------------- ### Run Puppet Acceptance Tests in Parallel Source: https://github.com/puppetlabs/puppet/blob/main/docs/quickstart.md Executes all spec tests in parallel using a specified number of processes. This can significantly speed up the test suite execution. ```bash $ bundle exec rake parallel:spec[process_count] ``` -------------------------------- ### Install Gem Dependencies Source: https://github.com/puppetlabs/puppet/blob/main/acceptance/README.md Installs all necessary testing dependencies defined in the Gemfile. It specifies a local path for the bundled gems. This command is essential for setting up the testing environment. ```bash bundle install --path .bundle/gems ``` -------------------------------- ### Puppet Catalog API Apply Example Source: https://github.com/puppetlabs/puppet/blob/main/references/man/catalog.md An example of how to apply a catalog using the Puppet Ruby API. It shows the initialization and application of a catalog, returning a Puppet::Transaction::Report object. ```ruby # API example: ## ... Puppet::Face[:catalog, '0.0.1'].download ## (Termini are singletons; catalog.download has a side effect of ## setting the catalog terminus to yaml) report = Puppet::Face[:catalog, '0.0.1'].apply ## ... ``` -------------------------------- ### Install and Run Puppet on Windows Source: https://github.com/puppetlabs/puppet/blob/main/docs/windows.md Commands to install bundler, bundle Puppet gems, and check the Puppet version on Windows. Requires Ruby and bundler to be pre-installed. ```bash C:\> cd C:\work\puppet C:\work\puppet> gem install bundler C:\work\puppet> bundle install --path .bundle C:\work\puppet> bundle exec puppet --version ``` -------------------------------- ### Run a Specific Puppet Spec Test File Source: https://github.com/puppetlabs/puppet/blob/main/docs/quickstart.md Runs spec tests for a particular file. This is useful for faster feedback during development. The `TEST` variable specifies the file to be tested. ```bash $ bundle exec rake spec TEST=spec/unit/file_system_spec.rb ``` -------------------------------- ### Package Settings Example (Puppet) Source: https://github.com/puppetlabs/puppet/blob/main/references/type.md Illustrates how to configure package-specific settings using the `package_settings` attribute. This example shows setting a build option for an Apache package on FreeBSD. The exact format and effect of `package_settings` are provider-specific and require consulting individual provider documentation. ```puppet package { 'www/apache22': package_settings => { 'SUEXEC' => false } } ``` -------------------------------- ### Puppet Code Snippet: Updating Legacy Fact Reference Source: https://github.com/puppetlabs/puppet/wiki/Puppet-8-Compatibility This example shows a common code change required when moving to Puppet 8, specifically updating how a Fully Qualified Domain Name (FQDN) fact is accessed. It demonstrates the transition from a legacy fact access method to a more structured data access using `facts.dig`. ```puppet -<%= $fqdn %> +<%= $facts.dig("networking","fqdn") %> ``` -------------------------------- ### Ruby: Setup and Teardown in RSpec Tests Source: https://github.com/puppetlabs/puppet/blob/main/docs/rspec_tutorial.md Demonstrates how to use `before` and `after` blocks in RSpec to manage test setup and cleanup. This is useful for controlling global state like `$VERBOSE` during specific test runs, ensuring tests don't interfere with each other. ```ruby describe "something that could warn" do before :each do # Disable warnings for this test $VERBOSE = nil end after :each do # Enable warnings afterwards $VERBOSE = true end it "doesn't generate a warning" do MY_CONSTANT = 1 # reassigning a constant normally prints out 'warning: already initialized constant FOO' MY_CONSTANT = 2 end end ``` -------------------------------- ### Basic RSpec Examples and Expectations (Ruby) Source: https://github.com/puppetlabs/puppet/blob/main/docs/rspec_tutorial.md Demonstrates fundamental RSpec syntax for defining tests (examples) and asserting expected outcomes (expectations) in Ruby. This is used for unit and integration testing in Puppet. It requires the RSpec gem. ```ruby specify "one equals one" do expect(1).to eq(1) end it "one doesn't equal two" do expect(1).to_not eq(2) end ``` -------------------------------- ### Example: Find Node with REST Terminus Source: https://github.com/puppetlabs/puppet/blob/main/references/man/node.md Shows how to retrieve the same node as the previous example, but this time using the 'rest' terminus to interact with the Puppet Server, rendering the output as YAML. ```bash $ puppet node find somenode.puppetlabs.lan --terminus rest --render-as yaml ``` -------------------------------- ### Puppet Filebucket Resource Declaration Example Source: https://github.com/puppetlabs/puppet/blob/main/references/types/filebucket.md An example illustrating the basic structure for declaring a filebucket resource in Puppet. It shows the resource type, a title ('resource title'), and common attributes like 'name', 'path', 'port', and 'server'. This serves as a template for defining filebucket configurations. ```puppet filebucket { 'resource title': name => 'resource title', path => false, port => 8140, server => 'puppet.example.com', } ``` -------------------------------- ### Example: Get Certificate Information (JSON) Source: https://github.com/puppetlabs/puppet/blob/main/api/docs/http_certificate_status.md An example of a GET request to retrieve certificate information, showing a successful HTTP 200 response with a JSON body containing certificate details. ```http GET /puppet-ca/v1/certificate_status/mycertname?environment=env HTTP/1.1 200 OK Content-Type: text/pson { "name":"mycertname", "state":"signed", "fingerprint":"A6:44:08:A6:38:62:88:5B:32:97:20:49:8A:4A:4A:AD:65:C3:3E:A2:4C:30:72:73:02:C5:F3:D4:0E:B7:FC:2F", "fingerprints":{ "default":"A6:44:08:A6:38:62:88:5B:32:97:20:49:8A:4A:4A:AD:65:C3:3E:A2:4C:30:72:73:02:C5:F3:D4:0E:B7:FC:2F", "SHA1":"77:E6:5A:7E:DD:83:78:DC:F8:51:E3:8B:12:71:F4:57:F1:C2:34:AE", "SHA256":"A6:44:08:A6:38:62:88:5B:32:97:20:49:8A:4A:4A:AD:65:C3:3E:A2:4C:30:72:73:02:C5:F3:D4:0E:B7:FC:2F", "SHA512":"CA:A0:8C:B9:FE:9D:C2:72:18:57:08:E9:4B:11:B7:BC:4E:F7:52:C8:9C:76:03:45:B4:B6:C5:D2:DC:E8:79:43:D7:71:1F:5C:97:FA:B2:F3:ED:AE:19:BD:A9:3B:DB:9F:A5:B4:8D:57:3F:40:34:29:50:AA:AA:0A:93:D8:D7:54" }, "dns_alt_names":["DNS:puppet","DNS:mycertname"] } ``` -------------------------------- ### View CI Task Help Source: https://github.com/puppetlabs/puppet/blob/main/acceptance/README.md Displays help information for CI-related Rake tasks, including a list of required and optional environment variables with brief descriptions. This is the most up-to-date source for configuration options. ```bash bundle exec rake ci:help ``` -------------------------------- ### List Filebucket Files by Date Range Source: https://github.com/puppetlabs/puppet/blob/main/references/man/filebucket.md This section demonstrates how to list files within a filebucket, filtering by start and end dates/times. It shows examples of using only a start date, only an end date, and both. ```shell $ puppet filebucket -l -f 2015-01-01 -t 2015-01-11 list $ puppet filebucket -l -f 2015-05-10 list d43a6ecaa892a1962398ac9170ea9bf2 2015-05-11 09:27:56 /tmp/TestFile 7ae322f5791217e031dc60188f4521ef 2015-05-11 09:52:15 /tmp/TestFile $ puppet filebucket -l -f "2015-05-11 09:30:00" list 7ae322f5791217e031dc60188f4521ef 2015-05-11 09:52:15 /tmp/TestFile $ puppet filebucket -l -t "2015-05-11 09:30:00" list d43a6ecaa892a1962398ac9170ea9bf2 2015-05-11 09:27:56 /tmp/TestFile ``` -------------------------------- ### Puppet Catalog Apply Example Source: https://github.com/puppetlabs/puppet/blob/main/references/man/catalog.md Demonstrates applying a locally cached catalog or retrieving one from the master before applying. The '--terminus' option specifies the source of the catalog. ```bash $ puppet catalog apply --terminus yaml $ puppet catalog apply --terminus rest ``` -------------------------------- ### Reduce Hash with Start Memo and Complex Logic in Puppet Source: https://github.com/puppetlabs/puppet/blob/main/references/function.md This example demonstrates reducing a hash with a custom start memo. The lambda merges defaults into inner hashes, processing key-value pairs and updating a memo structure. ```puppet $data = { 'connection1' => { 'username' => 'user1', 'password' => 'pass1', }, 'connection_name2' => { 'username' => 'user2', 'password' => 'pass2', }, } $defaults = { 'maxActive' => '20', 'maxWait' => '10000', 'username' => 'defaultuser', 'password' => 'defaultpass', } $merged = $data.reduce( {} ) |$memo, $x| { $memo + { $x[0] => $defaults + $data[$x[0]] } } ``` -------------------------------- ### Gemfile Example for Ruby 3.2 Compatibility Source: https://github.com/puppetlabs/puppet/wiki/Puppet-8-Compatibility This example shows how to update the `fast-gettext` gem to version 2.1 or later in a Gemfile. This is important because older versions call `Kernel#untaint`, which is removed in Ruby 3.2, causing runtime failures. ```ruby gem "fast-gettext", ">= 2.1" ``` -------------------------------- ### Example hosts.yaml for Docker hypervisor Source: https://github.com/puppetlabs/puppet/blob/main/acceptance/README.md This is an example hosts.yaml file generated for testing with the Docker hypervisor. It defines two hosts, 'centos7-64-1' (master) and 'centos7-64-2' (agent), specifying Docker configurations like image, commands, and roles. It also includes global configuration for the NFS server and console port. ```yaml --- HOSTS: centos7-64-1: docker_cmd: - "/sbin/init" image: centos:7 platform: centos-7-x86_64 packaging_platform: el-7-x86_64 docker_image_commands: - cp /bin/true /sbin/agetty - yum install -y crontabs initscripts iproute openssl sysvinit-tools tar wget which ss hypervisor: docker roles: - master centos7-64-2: docker_cmd: - "/sbin/init" image: centos:7 platform: centos-7-x86_64 packaging_platform: el-7-x86_64 docker_image_commands: - cp /bin/true /sbin/agetty - yum install -y crontabs initscripts iproute openssl sysvinit-tools tar wget which ss hypervisor: docker roles: - agent CONFIG: nfs_server: none consoleport: 443 ``` -------------------------------- ### Puppet Resource: Installing Hiera Gem for Agent Lookup Source: https://github.com/puppetlabs/puppet/wiki/Puppet-8-Compatibility This Puppet resource declaration installs the 'hiera' gem for the agent's Ruby environment. This is necessary to ensure that the `puppet lookup` command functions correctly, especially when dealing with Hiera v3 backends. ```puppet package { 'puppet-hiera': ensure => present, name => 'hiera', provider => puppet_gem } ``` -------------------------------- ### Puppet Resource: Installing Hiera Gem for Puppet Server Source: https://github.com/puppetlabs/puppet/wiki/Puppet-8-Compatibility This Puppet resource declaration installs the 'hiera' gem specifically for the Puppet server's JRuby environment. It ensures that Hiera v3 backends can function by making the gem available and then triggers a service restart. ```puppet package { 'puppetserver-hiera': ensure => present, name => 'hiera', provider => puppetserver_gem } ~> Service[puppetserver] ``` -------------------------------- ### Initialize Puppet Settings Source: https://github.com/puppetlabs/puppet/blob/main/docs/settings.md The `Puppet.initialize_settings` method is the entry point for initializing Puppet's settings. It handles command-line arguments, loading `puppet.conf`, and application-specific options, ensuring a consistent configuration. ```ruby Puppet.initialize_settings ``` -------------------------------- ### Show Help for Puppet Subcommand/Action (with Options) Source: https://github.com/puppetlabs/puppet/blob/main/references/man/help.md This section details how to display help for Puppet subcommands and their actions, including specific options like '--version' and '--ronn'. It outlines the synopsis, description, and return value of the help action itself. ```shell puppet help [--version VERSION] [--ronn] [subcommand] [action] ``` -------------------------------- ### Manage Puppet Resources Source: https://context7.com/puppetlabs/puppet/llms.txt Demonstrates using the `puppet resource` command for direct interaction with system resources. Includes listing resources by type, examining specific resources, displaying them in YAML, showing all resource types, modifying resource states, creating file resources, and managing users. ```bash # List all resources of a type puppet resource user # Examine specific resource puppet resource service nginx # Display resource in YAML format puppet resource --to_yaml package apache2 # Show all resource types puppet resource --types # Modify resource state puppet resource user john ensure=present shell=/bin/bash home=/home/john # Create file resource puppet resource file /etc/myapp/config.conf ensure=file content='key=value' mode=0644 ``` -------------------------------- ### Execute Puppet code with puppet apply Source: https://github.com/puppetlabs/puppet/blob/main/references/man/apply.md Demonstrates how to execute a simple Puppet manifest string directly using the 'puppet apply' command with the '--execute' option. This is useful for quick tests or applying small snippets of code. ```shell puppet apply -e 'notify { "hello world": }' ``` -------------------------------- ### Configure Puppet Test Logging to File Source: https://github.com/puppetlabs/puppet/blob/main/docs/quickstart.md Sets an environment variable to capture Puppet's log messages to a specified file during test runs. This is helpful for debugging test failures. ```bash export PUPPET_TEST_LOG=/path/to/your/puppet.log ``` -------------------------------- ### Configure Puppet Test Log Level Source: https://github.com/puppetlabs/puppet/blob/main/docs/quickstart.md Sets an environment variable to control the verbosity of Puppet's log output during test runs. Useful levels include 'notice', 'info', and 'debug'. ```bash export PUPPET_TEST_LOG_LEVEL=debug ``` -------------------------------- ### Run a Specific Line in Puppet Spec Tests Source: https://github.com/puppetlabs/puppet/blob/main/docs/quickstart.md Executes a single test or a group of tests located at a specific line number within a test file. This allows for highly targeted testing. ```bash $ bundle exec rake spec TEST=spec/unit/file_system_spec.rb:42 ``` -------------------------------- ### Puppet Lookup Function Syntax Examples Source: https://github.com/puppetlabs/puppet/blob/main/references/function.md Demonstrates the different syntaxes for using the Puppet 'lookup' function, including direct argument passing and using an options hash. It also shows how to provide default values and specify merge behaviors. ```puppet lookup( "my_key" ) lookup( "my_key", String ) lookup( "my_key", String, union ) lookup( "my_key", String, union, "default" ) lookup( "my_key", { 'value_type' => String, 'default_value' => "default" } ) lookup( { 'name' => "my_key", 'default_value' => "default" } ) lookup( "my_key" ) |$key| { "default" } ``` -------------------------------- ### Hiera Configuration: Variable-Based Hierarchy Path Source: https://github.com/puppetlabs/puppet/wiki/Puppet-8-Compatibility This Hiera configuration example illustrates a hierarchy path that uses a variable (`%{var}`). In Puppet 8's strict mode, referencing an undefined variable in a Hiera lookup will cause a failure. ```yaml hierarchy: - name: "missing" path: "% {var}.yaml" ``` -------------------------------- ### Create HTTP Session and Get Certificate (Ruby) Source: https://github.com/puppetlabs/puppet/blob/main/docs/http.md Demonstrates how to create an HTTP client session, route to the CA service, and retrieve a certificate. This requires the Puppet HTTP client library. ```ruby client = Puppet::HTTP::Client.new session = client.create_session service = session.route_to(:ca) cert = service.get_certificate('foo') puts "Retrieved cert #{cert.subject.to_utf8} from #{service.url}" ``` -------------------------------- ### Puppet Code: Strict Mode Variable Access Source: https://github.com/puppetlabs/puppet/wiki/Puppet-8-Compatibility This example highlights a common Puppet code snippet that will fail to compile in Puppet 8 due to the default `strict_variables=true` setting. It shows the direct use of an undefined variable, which is now disallowed. ```puppet notice($var) ``` -------------------------------- ### Puppet Catalog Compile Example Source: https://github.com/puppetlabs/puppet/blob/main/references/man/catalog.md Shows how to compile a catalog for a specific node. The '--codedir' option specifies the directory containing Puppet code. ```bash puppet catalog compile mynode --codedir ... ``` -------------------------------- ### Puppet: Map Array Indexes with Lambda Source: https://github.com/puppetlabs/puppet/blob/main/references/function.md When the first argument to 'map' is an array and the lambda has two parameters, Puppet passes the array's indexes (starting from 0) as the first parameter and its values as the second. This example demonstrates returning only the indexes. ```puppet # For the array $data, return an array containing the indexes $data = [1,2,3] $transformed_data = $data.map |$index,$value| { $index } # $transformed_data contains [0,1,2] ``` -------------------------------- ### Puppet Catalog Download Example Source: https://github.com/puppetlabs/puppet/blob/main/references/man/catalog.md Illustrates downloading a node's catalog from the Puppet master and saving it to the local YAML cache. This action can be used as a standalone command or in API contexts. ```bash $ puppet catalog download # API example: Puppet::Face[:plugin, '0.0.1'].download Puppet::Face[:facts, '0.0.1'].upload Puppet::Face[:catalog, '0.0.1'].download ``` -------------------------------- ### Get Node Information using cURL Source: https://context7.com/puppetlabs/puppet/llms.txt This example shows how to retrieve classification information for a node, including its environment, classes, and parameters, from an External Node Classifier (ENC) using cURL. It requires specifying the node name, environment, and transaction UUID. ```bash # Get node information curl -X GET "https://puppet.example.com:8140/puppet/v3/node/webserver01.example.com?environment=production&transaction_uuid=$(uuidgen)&configured_environment=production" \ -H "Accept: application/json" \ --cert /etc/puppetlabs/puppet/ssl/certs/webserver01.example.com.pem \ --key /etc/puppetlabs/puppet/ssl/private_keys/webserver01.example.com.pem \ --cacert /etc/puppetlabs/puppet/ssl/certs/ca.pem ``` -------------------------------- ### Decent Precedence Rule Grouping in Racc Source: https://github.com/puppetlabs/puppet/blob/main/docs/parser_work.md This example illustrates 'Decent Precedence' where grammar rules are structured to implicitly handle precedence by grouping expressions. It defines rules for 'expr' and 'mulexp' to manage operator precedence without an explicit precedence table. ```racc expr : mulexp # to higher precedence | expr PLUS mulexp | expr MINUS mulexp mulexp : primary # to higher precedence | mulexp TIMES primary | mulexp DIV primary primary : NUMBER ``` -------------------------------- ### Show Detailed Rake Task Descriptions Source: https://github.com/puppetlabs/puppet/blob/main/acceptance/README.md Provides detailed descriptions for all Rake tasks, including their arguments and specific usage. This is essential for understanding the nuances of each testing task. ```bash bundle exec rake -D ``` -------------------------------- ### Precedence Table Example in Racc Source: https://github.com/puppetlabs/puppet/blob/main/docs/parser_work.md This code snippet demonstrates how to define precedence levels and associativity for tokens in a grammar using the racc parser generator. It lists tokens from highest to lowest precedence and specifies their grouping behavior (left, right, nonassoc). ```racc prechigh left HIGH nonassoc UMINUS left TIMES DIV MODULO left MINUS PLUS right EQUALS left LOW preclow ``` -------------------------------- ### List Rake Tasks for CI Source: https://github.com/puppetlabs/puppet/blob/main/acceptance/README.md Lists all available Rake tasks for continuous integration, providing a summary of their functionality. This is useful for understanding the testing capabilities and available commands. ```bash bundle exec rake -T ``` -------------------------------- ### Racc Grammar Conflict Example Source: https://github.com/puppetlabs/puppet/blob/main/docs/parser_work.md Illustrates a shift/reduce conflict in a Racc grammar state. This output shows potential ambiguities where the parser can either shift to a new state upon seeing a 'COMMA' token or reduce using a specific rule. ```text state 66 7) syntactic_statements : syntactic_statements syntactic_statement _ 9) syntactic_statement : syntactic_statement _ COMMA expression COMMA shift, and go to state 68 $default reduce using rule 7 (syntactic_statements) ``` -------------------------------- ### Puppet Service Resource Attributes Source: https://github.com/puppetlabs/puppet/blob/main/references/type.md These examples illustrate how to manually specify commands for starting, stopping, and checking the status of a service resource in Puppet. If not specified, Puppet attempts to determine these actions automatically. The 'status' command requires a specific exit code convention. ```puppet # Specify a custom start command service { 'myservice': start => '/etc/init.d/myservice start', } # Specify a custom stop command service { 'myservice': stop => '/etc/init.d/myservice stop', } # Specify a custom status command service { 'myservice': status => '/etc/init.d/myservice status', } # Specify a custom restart command service { 'myservice': restart => '/etc/init.d/myservice restart', } # Specify a timeout for syncing service properties service { 'myservice': timeout => 60, } ``` -------------------------------- ### Racc Grammar Conflict with Multiple Actions Source: https://github.com/puppetlabs/puppet/blob/main/docs/parser_work.md Demonstrates a Racc grammar conflict where a token can lead to multiple actions. This example shows a 'COMMA' token potentially causing a shift to a new state or a reduction using a specific rule, highlighting an ambiguity. ```text COMMA shift, and go to state 68 COMMA reduce using rule 666 (the_trouble_rule) $default reduce using rule 7 (syntactic_statements) ```