#!/usr/bin/perl use warnings; use strict; use Marpa::R2; use Data::Dumper; my $dsl = << '__DSL__'; :default ::= action => [values] lexeme default = latm => 1 seq ::= '(' seqstrs ')' seqstrs ::= seqstr seqstrs | seqstr seqstr ::= seq | tagstr tagstr ::= OZN seq | OZN rijec OZN ~ [A-Z.,?'*:`]+ rijec ~ [\w\-?,:<*`*]+ space ~ [\s]+ :discard ~ space __DSL__ my $grammar = 'Marpa::R2::Scanless::G'->new({ source => \$dsl }); my $input = "(SBARQ (WHNP (WP Who))(SQ (VP (VBZ says)(, ,)(S (SBAR (`` ``)(IN If)(S (NP (PRP you))(VP (VBP do)(RB nparse(\$input); print Dumper($result); #### $VAR1 = \[ '(', [ [ [ 'SBARQ', [ '(', [ [ [ 'WHNP', [ '(', [ [ [ 'WP', 'Who' ] ] ], ')' ] ] ] ], ')' ] ] ], [ [ [ '(', [ [ [ 'SQ', [ '(', [ [ [ 'VP', [ '(', [ [ [ 'VBZ', 'says' ] ] ], ')' ] ] ], [ [ [ '(', [ [ [ ',', ',' ] ] ], ')' ] ], [ [ [ '(', [ [ [ 'S', [ '(', [ [ [ 'SBAR', [ '(', [ [ [ '``', '``' ] ] ], ')' ] ] ], [ [ [ '(', [ [ [ 'IN', 'If' ] ] ], ')' ] ], [ [ [ '(', [ [ [ 'S', [ '(', [ [ [ 'NP', [ '(', [ [ [ 'PRP', 'you' ] ] ], ')' ] ] ] ], ')' ] ] ], [ [ [ '(', [ [ [ 'VP', [ '(', [ [ [ 'VBP', 'do' ] ] ], ')' ] ] ], [ [ [ '(', [ [ [ 'RB', 'n## ($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,