p parse);
sue Spp::Builtin qw(read_file to_json);
my $ast = spp($grammar_file, $string_file);
lint($grammar_file);
say to_json($ast);
my $grammar_text = read_file($gramm
use Exporter;
our @ISA = qw(Exporter);
our @EXPORT =
qw(is_type is_atoms to_ejson from_ejson char_to_ejson atoms flat match name value offline elen epush eappend eunshift ejoin is_atom_name i
}
return 1;
}
sub to_ejson {
my $json = shift;
if (is_estr($json)) { return $json }
my $chars = [];
my $mode = 0;
for my $ch (split '', $json) {
if ($mode == 0) {
lt { push @{$chars}, $ch; }
}
}
}
return join '', @{$chars};
}
sub from_ejson {
my $estr = shift;
if (is_str($estr)) { return $estr }
my $chars = [];
my $mode = 0
XPORT = qw(End In Out True False Qstr Qint Blank
clean first string strings sort_array to_json from_json
is_exists first_char last_char rest_str tail rest
is_string is_int is_array Chop add u
w(fileparse);
use Perl::Tidy;
use File::Copy qw(copy);
use String::Random;
use JSON::XS qw(decode_json encode_json);
use Carp;
use constant {
End => chr(0),
In => chr(1),
Out =
sub error { say @_; exit() }
sub to_json {
my $data = shift;
return encode_json($data);
}
sub from_json {
my $data = shift;
return decode_json($data);
}
sub clean {
my $stack