#!/usr/bin/perl # Author: Daniel "Trizen" Șuteu # License: GPLv3 # Date: 30 April 2014 # Wesbite: https://github.com/trizen # Experimental Sidef parser, using Damian Conway's Regexp::Grammars. use 5.010; use strict; use warnings; use Data::Dump qw(pp); BEGIN { $SIG{__WARN__} = sub { }; }; use Regexp::Grammars; local $SIG{__WARN__} = sub { print STDERR @_ }; my $parser = qr{ <[main]>* <rule: main> <obj> ((?:\.|\s*)<[method]>)* ;* <rule: obj> "([^"\\]+|\\.)*" | \d+(?:\.\d+)? | \{ <[main]> \} <rule: args> \(<[obj]>(?:,<[obj]>)*\) <rule: name> (say|print|sort) <rule: method> <name> <args>? }xms; my $text = <<'CODE'; "hello".sort("test", "here").print; { "sidef" say; } CODE if ($text =~ $parser) { #print Dumper(\%/); pp \%/; } __END__