Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > 890cf518b78038a784eb346d2e43e31c > files > 9

perl-ParseLex-2.19-3.fc15.noarch.rpm

#!/usr/bin/perl -w

use strict;
require 5.000;
BEGIN {  unshift @INC, "../lib"; }

use Parse::LexEvent;
print STDERR "Version $Parse::LexEvent::VERSION\n";

my @tokens = Parse::Token->factory([
				    Type => 'Simple',
				    Name => 'ccomment', 
				    Handler => 'comment',
				    Regex => '//.*\n',
				    # 
				    Type => 'Delimited',
				    Name => 'comment',
				    Start => '/[*]', 
				    End => '[*]/',
				    # 
				    Type => 'Quoted',
				    Name => 'squotes', 
				    Handler => 'string',
				    Quote => qq!\'!, 
				    # 
				    Type => 'Quoted',
				    Name => 'dquotes', 
				    Handler => 'string',
				    Escape => '\\',
				    Quote => qq!\"!,	
				    # 
				    Type => 'Simple',
				    Name => 'remainder', 
				    Regex => '[^/\'\"]+', 
				    ReadMore => 1
				   ]);

sub string {
  print $_[0]->name, ": $_[1]\n";
}
sub comment {
  print $_[0]->name, ": $_[1]\n";
}
sub remainder {
  print $_[0]->name, ": $_[1]\n";
}

my $lexer = Parse::LexEvent->new(@tokens);
$lexer->from(\*DATA);
$lexer->parse();

__END__
/*
  A C comment 
*/
// A C++ comment
var d = "string in \"double\" quotes";
var s = 'string in ''single'' quotes';
var x = 1;
var y = 2;