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 )