Grammar-Formal
view release on metacpan or search on metacpan
"ExtUtils::MakeMaker" : "0"
}
},
"configure" : {
"requires" : {
"ExtUtils::MakeMaker" : "0"
}
},
"runtime" : {
"requires" : {
"Modern::Perl" : "0",
"Moose" : "0",
"MooseX::SetOnce" : "0",
"Set::IntSpan" : "0",
"Test::More" : "0"
}
}
},
"release_status" : "stable",
"resources" : {
"repository" : {
license: perl
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
version: '1.4'
name: Grammar-Formal
no_index:
directory:
- t
- inc
requires:
Modern::Perl: '0'
Moose: '0'
MooseX::SetOnce: '0'
Set::IntSpan: '0'
Test::More: '0'
resources:
repository: https://github.com/hoehrmann/Grammar-Formal.git
version: '0.20'
x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
Makefile.PL view on Meta::CPAN
use 5.012000;
use ExtUtils::MakeMaker;
WriteMakefile(
NAME => 'Grammar::Formal',
VERSION_FROM => 'lib/Grammar/Formal.pm',
PREREQ_PM => {
'Test::More' => 0,
'Set::IntSpan' => 0,
'Moose' => 0,
'Modern::Perl' => 0,
'MooseX::SetOnce' => 0,
},
ABSTRACT_FROM => 'lib/Grammar/Formal.pm',
AUTHOR => 'Bjoern Hoehrmann <bjoern@hoehrmann.de>',
LICENSE => 'perl',
'dist' => {
PREOP => 'chmod 600 Makefile.PL',
TARFLAGS => '--group=none --owner=bjoern --mode=a+rw -cvf',
},
lib/Grammar/Formal.pm view on Meta::CPAN
#####################################################################
# Base package for operators
#####################################################################
package Grammar::Formal::Pattern;
use Modern::Perl;
use Moose;
use MooseX::SetOnce;
has 'parent' => (
is => 'ro',
required => 0,
isa => 'Maybe[Grammar::Formal::Pattern]',
writer => '_set_parent',
traits => [qw/SetOnce/],
weak_ref => 1,
lib/Grammar/Formal.pm view on Meta::CPAN
return $p;
}
die "Called owner_grammar on orphan pattern";
}
#####################################################################
# Base package for unary operators
#####################################################################
package Grammar::Formal::Unary;
use Modern::Perl;
use Moose;
extends 'Grammar::Formal::Pattern';
has 'p' => (
is => 'ro',
required => 1,
isa => 'Grammar::Formal::Pattern'
);
sub BUILD {
my $self = shift;
$self->p->_set_parent($self);
}
#####################################################################
# Base package for binary operators
#####################################################################
package Grammar::Formal::Binary;
use Modern::Perl;
use Moose;
extends 'Grammar::Formal::Pattern';
has 'p1' => (
is => 'ro',
required => 1,
isa => 'Grammar::Formal::Pattern'
);
lib/Grammar/Formal.pm view on Meta::CPAN
sub BUILD {
my $self = shift;
$self->p1->_set_parent($self);
$self->p2->_set_parent($self);
}
#####################################################################
# Group
#####################################################################
package Grammar::Formal::Group;
use Modern::Perl;
use Moose;
extends 'Grammar::Formal::Binary';
#####################################################################
# Choice
#####################################################################
package Grammar::Formal::Choice;
use Modern::Perl;
use Moose;
extends 'Grammar::Formal::Binary';
#####################################################################
# OrderedChoice
#####################################################################
package Grammar::Formal::OrderedChoice;
use Modern::Perl;
use Moose;
extends 'Grammar::Formal::Binary';
#####################################################################
# Conjunction
#####################################################################
package Grammar::Formal::Conjunction;
use Modern::Perl;
use Moose;
extends 'Grammar::Formal::Binary';
#####################################################################
# OrderedConjunction
#####################################################################
package Grammar::Formal::OrderedConjunction;
use Modern::Perl;
use Moose;
extends 'Grammar::Formal::Binary';
#####################################################################
# Subtraction
#####################################################################
package Grammar::Formal::Subtraction;
use Modern::Perl;
use Moose;
extends 'Grammar::Formal::Binary';
#####################################################################
# Empty
#####################################################################
package Grammar::Formal::Empty;
use Modern::Perl;
use Moose;
extends 'Grammar::Formal::Pattern';
#####################################################################
# NotAllowed
#####################################################################
package Grammar::Formal::NotAllowed;
use Modern::Perl;
use Moose;
extends 'Grammar::Formal::Pattern';
#####################################################################
# ZeroOrMore
#####################################################################
package Grammar::Formal::ZeroOrMore;
use Modern::Perl;
use Moose;
extends 'Grammar::Formal::Unary';
#####################################################################
# OneOrMore
#####################################################################
package Grammar::Formal::OneOrMore;
use Modern::Perl;
use Moose;
extends 'Grammar::Formal::Unary';
#####################################################################
# SomeOrMore
#####################################################################
package Grammar::Formal::SomeOrMore;
use Modern::Perl;
use Moose;
extends 'Grammar::Formal::Unary';
has 'min' => (
is => 'ro',
required => 1,
isa => 'Int'
);
#####################################################################
# BoundedRepetition
#####################################################################
package Grammar::Formal::BoundedRepetition;
use Modern::Perl;
use Moose;
extends 'Grammar::Formal::Unary';
has 'min' => (
is => 'ro',
required => 1,
isa => 'Int'
);
has 'max' => (
is => 'ro',
required => 1,
isa => 'Int'
);
#####################################################################
# Reference
#####################################################################
package Grammar::Formal::Reference;
use Modern::Perl;
use Moose;
extends 'Grammar::Formal::Pattern';
has 'name' => (
is => 'ro',
required => 1,
isa => 'Str'
);
sub expand {
lib/Grammar/Formal.pm view on Meta::CPAN
warn "rule expansion for " . $self->name . " failed.";
return;
}
#####################################################################
# Rule
#####################################################################
package Grammar::Formal::Rule;
use Modern::Perl;
use Moose;
extends 'Grammar::Formal::Unary';
has 'name' => (
is => 'ro',
required => 1,
isa => 'Str'
);
#####################################################################
# Grammar
#####################################################################
package Grammar::Formal::Grammar;
use Modern::Perl;
use Moose;
extends 'Grammar::Formal::Pattern';
has 'start' => (
is => 'ro',
required => 0,
isa => 'Maybe[Str]',
);
has 'rules' => (
lib/Grammar/Formal.pm view on Meta::CPAN
sub ZeroOrMore {
my ($self, $p, @o) = @_;
Grammar::Formal::ZeroOrMore->new(p => $p, @o);
}
#####################################################################
# CaseSensitiveString
#####################################################################
package Grammar::Formal::CaseSensitiveString;
use Modern::Perl;
use Moose;
extends 'Grammar::Formal::Pattern';
has 'value' => (
is => 'ro',
required => 1,
isa => 'Str'
);
#####################################################################
# ASCII-Insensitive string
#####################################################################
package Grammar::Formal::AsciiInsensitiveString;
use Modern::Perl;
use Moose;
extends 'Grammar::Formal::Pattern';
has 'value' => (
is => 'ro',
required => 1,
isa => 'Str'
);
#####################################################################
# prose values
#####################################################################
package Grammar::Formal::ProseValue;
use Modern::Perl;
use Moose;
extends 'Grammar::Formal::Pattern';
has 'value' => (
is => 'ro',
required => 1,
isa => 'Str'
);
#####################################################################
# Range
#####################################################################
package Grammar::Formal::Range;
use Modern::Perl;
use Moose;
extends 'Grammar::Formal::Pattern';
has 'min' => (
is => 'ro',
required => 1,
isa => 'Int'
);
has 'max' => (
lib/Grammar/Formal.pm view on Meta::CPAN
required => 1,
isa => 'Int'
);
# TODO: add check min <= max
#####################################################################
# Character class
#####################################################################
package Grammar::Formal::CharClass;
use Modern::Perl;
use Set::IntSpan;
use Moose;
extends 'Grammar::Formal::Pattern';
has 'spans' => (
is => 'ro',
required => 1,
isa => 'Set::IntSpan'
);
lib/Grammar/Formal.pm view on Meta::CPAN
my ($class, $pos, @numbers) = @_;
my $spans = Set::IntSpan->new([@numbers]);
return $class->new(spans => $spans, position => $pos);
}
#####################################################################
# Grammar::Formal
#####################################################################
package Grammar::Formal;
use 5.012000;
use Modern::Perl;
use Moose;
extends 'Grammar::Formal::Grammar';
our $VERSION = '0.20';
1;
__END__
( run in 0.942 second using v1.01-cache-2.11-cpan-4d50c553e7e )