Skip to content

Commit

Permalink
Work on SL if: t+
Browse files Browse the repository at this point in the history
  • Loading branch information
- committed Nov 25, 2012
1 parent 35611de commit 52687a4
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 18 deletions.
41 changes: 25 additions & 16 deletions blog/sl/error.pl
Expand Up @@ -22,23 +22,35 @@

my $prefix_grammar = Marpa::R2::Grammar->new(
{ start => 'Script',
actions => 'My_Actions',
action_object => 'My_Actions',
default_action => 'do_arg0',
rules => [ <<'END_OF_RULES' ]
Script ::=
Expression
| [s] [a] [y] :ws Expression action => do_arg1
:ows Expression :ows
| :ows ([s] [a] [y]) :ows Expression
Expression ::=
:ows Number :ows
| :ows [+] :ows Expression :ows action => do_add
Number
| ([+]) :ows Expression :ows Expression action => do_add
Number ::= [\d] + action => do_number
END_OF_RULES
}
);

sub My_Actions::do_add { shift; return $_[1] + $_[2] }
sub My_Actions::do_arg0 { shift; return shift; }
sub My_Actions::do_arg1 { shift; return $_[1]; }
package My_Actions;
our $SELF;
sub new { return $SELF }
sub do_number {
my $self = shift;
my ($start, $end) = Marpa::R2::Context::location();
return substr ${$self->{input}}, $start, $end-$start;
}
sub do_add { shift;
# say +(scalar @_), " args: ", join "; ", @_;
return $_[0] + $_[1] }
sub do_arg0 { shift; return shift; }
sub do_arg1 { shift; return $_[1]; }

package main;

$prefix_grammar->precompute();

Expand Down Expand Up @@ -105,15 +117,12 @@ sub My_Error::show_position {

sub my_parser {
my ( $grammar, $string ) = @_;
my $recce = Marpa::R2::Recognizer->new( { grammar => $grammar } );

# A quasi-object, for internal use only
my $self = bless {
grammar => $grammar,
input => \$string,
recce => $recce,
},
'My_Error';
my $self = bless { grammar => $grammar, input => \$string, }, 'My_Error';
local $My_Actions::SELF = $self;

my $recce = Marpa::R2::Recognizer->new( { grammar => $grammar } );
$self->{recce} = $recce;

$recce->read_string($string);
my $value_ref = $recce->value;
Expand Down
8 changes: 6 additions & 2 deletions r2/lib/Marpa/R2/Stuifzand.pm
Expand Up @@ -33,6 +33,7 @@ use constant HIDE => 1;

sub new { my $class = shift; return bless { name => $_[NAME], is_hidden => ($_[HIDE]//0) }, $class }
sub name { return $_[0]->{name} }
sub names { return $_[0]->{name} }
sub is_hidden { return $_[0]->{is_hidden} }
sub hidden_set { $_[0]->{is_hidden} = 1; }
sub symbols { return $_[0]; }
Expand All @@ -42,15 +43,18 @@ package Marpa::R2::Internal::Stuifzand::Symbol_List;
sub new { my $class = shift; return bless [@_], $class }

sub names {
return map { $_->name() } @{ $_[0] };
return map { $_->names() } @{ $_[0] };
}
sub is_hidden {
return map { $_->is_hidden() } @{ $_[0] };
}

sub hidden_set {
$_->hidden_set() for @ { $_[0] };
}

sub mask {
return map { !$_->is_hidden() } @{ $_[0] };
return map { ! $_ } map { $_->is_hidden() } @{ $_[0] };
}

sub symbols { return @{ $_[0] }; }
Expand Down

0 comments on commit 52687a4

Please sign in to comment.