Module Submission: Regexp::MultiLanguage
- From: robby.walker@xxxxxxxxx
- Date: 22 Jun 2006 10:53:36 -0700
I'm working on a project where I need to use a set of common regular
expressions in more than one programming language. To facilitate this,
I've written Regexp::MultiLanguage which parses a simple language and
produces code that works in Perl, PHP, and JavaScript. (plus, adding
new languages is easy) Sound useful? Is this already implemented? Is
the name OK?
For example, here is a sample Regexp::MultiLanguage input:
number : integer || binary
integer : /\d+/
binary : /0b[01]+/i
I'd eventually like to extend this language to allow named regexp
captures and more, but for version 0.01 I'm keeping it simple.
I then use the following code (which assumes the above input is stored
in $snippet)
use Regexp::MultiLanguage qw(Perl JavaScript PHP);
print "Perl: \n";
print Regexp::MultiLanguage->compile( $snippet, 'Perl', 'isa_' );
print "\nJavaScript: \n";
print Regexp::MultiLanguage->compile( $snippet, 'JavaScript',
'isa_' );
print "\nPHP: \n";
print Regexp::MultiLanguage->compile( $snippet, 'PHP', 'isa_' );
This produces the following:
Perl:
sub isa_number { (isa_integer($_[0]) || isa_binary($_[0])) }
sub isa_integer { ($_[0] =~ m/\d+/) }
sub isa_binary { ($_[0] =~ m/0b[01]+/i) }
1;
JavaScript:
function isa_number(value) { return (isa_integer($_[0]) ||
isa_binary($_[0])) }
function isa_integer(value) { return (value.match(/\d+/) }
function isa_binary(value) { return (value.match(/0b[01]+/i) }
PHP:
<?php
function isa_number( $text ) { return (isa_integer( $text ) ||
isa_binary( $text )); }
function isa_integer( $text ) { return preg_match("/\\d+/", $text);
}
function isa_binary( $text ) { return preg_match("/0b[01]+/i",
$text); }
?>
I'd love to hear your comments.
Thanks,
- Robby
.
- Follow-Ups:
- Re: Module Submission: Regexp::MultiLanguage
- From: Sherm Pendley
- Re: Module Submission: Regexp::MultiLanguage
- Prev by Date: Re: need your helpppp
- Next by Date: Re: Module Submission: Regexp::MultiLanguage
- Previous by thread: need your helpppp
- Next by thread: Re: Module Submission: Regexp::MultiLanguage
- Index(es):
Relevant Pages
|