added debug
Robin Edwards [Mon, 14 Dec 2009 14:34:53 +0000 (14:34 +0000)]
README
examples/Methods.pm
lib/Keyword.pm
lib/Keyword/Parser.pm

diff --git a/README b/README
index feb1d2b..ba43c43 100644 (file)
--- a/README
+++ b/README
@@ -53,7 +53,7 @@ action proto ($match) {
        return $code;
 }
 
-YADDA
+IRC
 <mst> rob: hey, we were talking about this
 <mst> basically, the answer is to standardise the declaration forms
 <mst> so you have something like
index 4db63f4..badcc10 100644 (file)
@@ -1,6 +1,6 @@
 package Methods;
 use lib 'lib/';
-use Keyword;
+use Keyword qw/debug/;
 use Data::Dumper;
 
 keyword method (ident?, proto?, block) {
index 2895889..d831fbd 100644 (file)
@@ -11,9 +11,11 @@ use Keyword::Parse::Ident;
 
 our $VERSION = '0.03';
 our $KW_MODULE = caller;
+our $DEBUG = 0;
 
 #setup parser for keyword syntax
 sub import {
+       $DEBUG = 1 if $_[1] =~ /debug/i;
 
        Devel::Declare->setup_for(
                $KW_MODULE,
@@ -94,7 +96,6 @@ sub parse_parser {
                no strict 'refs';
                *{$KW_MODULE."::parse_$name"} =  shift; 
        });
-
 }
 
 # parses the action keyword
@@ -147,6 +148,7 @@ sub kw_proto_to_code {
        return $inject;
 }
 
+sub debug { warn @_ if $DEBUG; }
 
 #converts prototype to a list of parse and action subs
 sub proto_to_parselist {
@@ -163,7 +165,7 @@ sub proto_to_parselist {
                my $opt;
                $ident =~ s/\?//g and $opt = 1 if $ident =~ /\?$/;
 
-               my $p = {ident=>$ident, opt=>$opt};
+               my $p = {name=>$ident, opt=>$opt};
                no strict 'refs';
                if($ident eq 'ident') {
                        $p->{parse} = \&{'Keyword::Parse::Ident::parse_ident'};
@@ -194,8 +196,9 @@ sub mk_parser {
        my ($plist,$keyword) = @_;
        return sub {
                my $parser = Keyword::Parser->new;
-               $parser->next_token; # skip keyword
+               $parser->next_token;
                $parser->skip_ws;
+
                my @arg;
 
                #call each parse routine and action
@@ -203,7 +206,8 @@ sub mk_parser {
                        #TODO: add evals
                        my $match = &{$r->{parse}}($parser); 
                        $parser->skip_ws;
-                       die "failed to match parse action  $r->{name}" unless $match or $r->{opt};
+                       die "failed to match parse action $r->{name}" unless $match or $r->{opt};
+                       debug("matched '$match' for $r->{name}");
                        push @arg, &{$r->{action}}($match);
                }
 
index 8e6559f..5b45c66 100644 (file)
@@ -2,7 +2,6 @@ package Keyword::Parser;
 use strict;
 use warnings;
 use Devel::Declare;
-use Data::Dumper;
 
 sub new {
        my ($class, $self) = @_;