#!/usr/bin/perl use strict; use warnings; use feature 'state'; use CGI::Carp qw(fatalsToBrowser); use FindBin; use lib qq[$FindBin::Bin/../lib]; use lib q[/home/wakaba/work/manakai2/lib]; use Message::CGI::Util qw/percent_decode htescape/; use Message::CGI::HTTP; use Regexp::Parser::Perl58; my $cgi = Message::CGI::HTTP->new; my $regexp = percent_decode $cgi->get_parameter ('s') // ''; $regexp = '(?:)' unless length $regexp; my $parser = Regexp::Parser::Perl58->new; eval { $parser->parse ($regexp); }; my $eregexp = htescape $regexp; if ($parser->errnum) { binmode STDOUT, ':encoding(utf-8)'; print "Content-Type: text/html; charset=utf-8\n\n"; print q[
Input: ], $eregexp, q[
Error: ], htescape ($parser->errmsg); exit; } require Regexp::Visualize::Simple; my $v = Regexp::Visualize::Simple->new; $v->push_regexp_node ($parser->root); binmode STDOUT, ':encoding(utf-8)'; print "Content-Type: application/xhtml+xml; charset=utf-8\n\n"; print q[
Input: ], $eregexp, q[