From 2d777b055b750c40d2698422202c4d3950822a0c Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Wed, 17 Jul 2013 00:28:52 -0400 Subject: initial sketch of the framework now, just need to expose the parser functions to perl --- lib/Parse/Keyword.pm | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'lib') diff --git a/lib/Parse/Keyword.pm b/lib/Parse/Keyword.pm index e69de29..b2e2709 100644 --- a/lib/Parse/Keyword.pm +++ b/lib/Parse/Keyword.pm @@ -0,0 +1,30 @@ +package Parse::Keyword; +use strict; +use warnings; +use 5.014; +# ABSTRACT: write syntax extensions in perl + +use Devel::CallParser; +use XSLoader; + +XSLoader::load( + __PACKAGE__, + exists $Parse::Keyword::{VERSION} ? ${ $Parse::Keyword::{VERSION} } : (), +); + +sub import { + my $package = shift; + my ($keywords) = @_; + + my $caller = caller; + + for my $keyword (keys %$keywords) { + my $sub = do { + no strict 'refs'; + \&{ $caller . '::' . $keyword }; + }; + install_keyword_handler($sub, $keywords->{$keyword}); + } +} + +1; -- cgit v1.2.3-54-g00ecf