Baal-Parser

 view release on metacpan or  search on metacpan

lib/Baal/Parser.pm  view on Meta::CPAN

DOCUMENT_COMMENT: /\/#(.*?)#\//s
    { $return = $1 }
MULTI_LINE_COMMENT: /\/\*(.*?)\*\//
    { $return = $1 }
SINGLE_LINE_COMMENT: "//" LINE_CONTENT(s) END_OF_LINE(?)
    { $return = join '', @{$item[2]} }
BLANK: WHITE_SPACE(s)
HEXADECIMAL_CHARACTOR: /[0-9a-fA-F]/
ALPHABET_NUMERIC_CHARACTOR: ALPHABET_CHARACTOR | NUMERIC_CHARACTOR
ALPHABET_CHARACTOR: LOWER_ALPHABET_CHARACTOR | UPPER_ALPHABET_CHARACTOR
LOWER_ALPHABET_CHARACTOR: /[a-z]/
UPPER_ALPHABET_CHARACTOR: /[A-Z]/
NUMERIC_CHARACTOR: /[0-9]/
WHITE_SPACE: /[ \t\r\n]/
LINE_CONTENT: /[^\r\n]/
END_OF_LINE: /\r?\n/
END_OF_FILE: /^\Z/
GRAMMER

has parser => (
    is  => 'ro',
    isa => 'Parse::RecDescent',
    default => sub {
        local $Parse::RecDescent::skip = '([ \t\r\n]|//.*?\r?\n|/\*(.|\r|\n)*?\*/)*';
        return Parse::RecDescent->new($grammer);
    },
);

no Mouse;

sub parse {
    my ($self, $text) = @_;
    my $result = $self->parser->Document($text);
    return $result;
}

1;
__END__

=encoding utf-8

=head1 NAME

Baal::Parser - A Paser for Baal IDL.

=head1 SYNOPSIS

    use Baal::Parser;
    my $parser = Baal::Parser->new;
    my $parsed_document = $parser->parse(<<END);
    namespace Data.Hoge += Hoge.Fuga.* {
        service HogeHoge {
            Hoge: <= !integer => !integer;
        }
    }
    END

=head1 DESCRIPTION

Baal::Parser is A Paser for Baal IDL.
See L<http://techblog.kayac.com/?page=1482198679> and L<http://techblog.kayac.com/unity_advent_calendar_2016_20>
about Baal(They are written in japanese).

=head1 LICENSE

Copyright (C) ohta-nobuyuki.

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.

=head1 AUTHOR

ohta-nobuyuki E<lt>ohta-nobuyuki@kayac.comE<gt>

=cut



( run in 1.465 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )