#!/usr/bin/perl -- use strict; use warnings; use Data::Dump qw/ dd /; use Marpa::R2; my $hamlInput = q{-# haml comment %p a paragraph %p %span foo inside span inside p }; my $syntax = <<'__SYNTAX__'; :default ::= action => [values] :start ::= haml haml ::= comments | oneliners oneliners ::= oneliner+ comments ::= comment+ comment ::= # oneliner ::= | oneliner ::= oneliner ::= ~ '%' tagname ~ '%' tagname ~ + tagname ~ [a-zA-Z]+ # Hash comment handling copied from Marpa::R2's metag.bnf. ~ | ~ '-#' ~ '-#' ~ * ~ [\x{0A}\x{0B}\x{0C}\x{0D}\x{2028}\x{2029}] ~ [^\x{0A}\x{0B}\x{0C}\x{0D}\x{2028}\x{2029}] __SYNTAX__ my $grammar = Marpa::R2::Scanless::G->new({source => \$syntax}); my $recce = Marpa::R2::Scanless::R->new( { grammar => $grammar , trace_values => 1, trace_terminals => 1, } ); eval { dd( $recce->read( \$hamlInput, ) ); #~ dd( $recce->read( \$hamlInput, 0,16 ) ); 1; } or warn $@; my $value_ref = $recce->value(); dd( $value_ref ); #~ dd( $recce, $grammar ); __END__ Setting trace_terminals option Setting trace_values option Accepted lexeme L1c1-16 e1: ; value="-# haml comment " Rejected lexeme L2c1-15: ; value="%p a paragraph " Error in SLIF parse: No lexemes accepted at line 2, column 1 Rejected lexeme #0: ; value="%p a paragraph "; length = 15 * String before error: -# haml comment\n * The error was at line 2, column 1, and at character 0x0025 '%', ... * here: %p a paragraph\n%p\n %span foo inside span inside Marpa::R2 exception at - line 60. \[[["-# haml comment\n"]]]