#!/usr/bin/perl -w use strict; require 5.005; #BEGIN { unshift @INC, "../lib"; } use Parse::LexEvent; print STDERR "Version $Parse::LexEvent::VERSION\n"; my @tokens = ( new Parse::Token::Simple(Name => 'ccomment', Handler => 'comment', Regex => '//.*\n', ), new Parse::Token::Delimited(Name => 'comment', Start => '/[*]', End => '[*]/' ), new Parse::Token::Quoted(Name => 'squotes', Handler => 'string', Quote => qq!\'!, ), new Parse::Token::Quoted(Name => 'dquotes', Handler => 'string', Escape => '\\', Quote => qq!\"!, ), new Parse::Token::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"; } #select STDERR; 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;