Skip to content

Instantly share code, notes, and snippets.

View SineSwiper's full-sized avatar

SineSwiper SineSwiper

View GitHub Profile
@SineSwiper
SineSwiper / eyapp2pegex.pgx
Created August 30, 2012 18:29
Weird comment bugs
# "Atoms"
E_CODE : /(
<C_LCURLY>
(:
[^ <C_LCURLY><C_RCURLY> ]+ | # Most stuff
(?1) # Nesting braces
)*
<C_RCURLY>
)/
E_PERCODE : / <PERCENT><E_CODE> ~ / # bit of a hack, as it swallows the % from %}\n
@SineSwiper
SineSwiper / gist:3552700
Created August 31, 2012 13:32
multi rule declaration
sunday_morning: Im waking up | ( cant even focus on a coffee_cup )
coffee_cup: dont even know whos bed Im in
# Parser problems
lyric:
where
do
I
start
where
@SineSwiper
SineSwiper / gist:3785581
Created September 26, 2012 02:06
Pegex AST expansion example
#############################################################################
#
# QUERY:
# DEALLOCATE [PREPARE] <plan_name>
#
#############################################################################
DeallocateStmt : DEALLOCATE PREPARE? (
name { @->[0] }
| ALL { NULL }
) {
@SineSwiper
SineSwiper / gist:3818821
Created October 2, 2012 12:49
IRC log of new stuff for Pegex
(11:18:06 AM) SineSwiper: some interesting stuff: http://eli.thegreenplace.net/2010/01/02/top-down-operator-precedence-parsing/
(11:20:42 AM) SineSwiper: especially this: http://eli.thegreenplace.net/2009/03/20/a-recursive-descent-parser-with-an-infix-expression-evaluator/
(11:20:56 AM) SineSwiper: this is exactly the problem I'm having with a_expr and the like
(11:21:45 AM) SineSwiper: and I was close to what the solution was supposed to be: descending levels of recursion
(11:23:17 AM) SineSwiper: ingy: ^^^
(11:34:24 AM) SineSwiper: it's looking like Pegex should be supporting some form of %left/%right syntax
(9:47:03 PM) SineSwiper: ingy: the more I'm converting this, the more I'm thinking there should be a { } syntax in Pegex that introduces an Acmeist "return language"
(9:48:37 PM) SineSwiper: the tree needs to be warped into place, and it's annoying that simple changes like "opt_nowait: NOWAIT { TRUE }" end up having to be split into two files
(9:48:41 PM) rking: SineSwiper: What do you mean by “"retu
@SineSwiper
SineSwiper / gist:3859539
Created October 9, 2012 15:30
t/06virtual.i near replacement
sub near ($$$) {
my ($got, $expect, $test) = @_;
my $d = $expect ? abs($got/$expect - 1) : abs($got);
local $Test::Builder::Level = $Test::Builder::Level + 1;
$expect =~ /nan/i ?
ok( $got eq $expect, $test) || diag("NaN is? $got ~= $expect") :
cmp_ok($d, '<', $eps, $test) || diag("near? $got ~= $expect");
}
@SineSwiper
SineSwiper / p9y-pt-test.pl
Created October 11, 2012 23:26
P9Y::ProcessTable example
use P9Y::ProcessTable;
use Data::Dump;
my $p = P9Y::ProcessTable->new;
my @list = $p->table;
dd \@list;
@SineSwiper
SineSwiper / gist:3889337
Created October 14, 2012 17:59
ERROR_* compare
### Old ERROR_* code ###
Z:\code\_others\Pegex>perl -Ilib xt\speed.t
ok 1 - ./xt/grammars/pegex.pgx parses in 0.105833 seconds
ok 2 - ./xt/grammars/testml.pgx parses in 0.155526 seconds
ok 3 - ./xt/grammars/json.pgx parses in 0.028492 seconds
ok 4 - ./xt/grammars/yaml.pgx parses in 0.067088 seconds
ok 5 - ./xt/grammars/pg-lexer.pgx parses in 0.983403 seconds
ok 6 - ./xt/grammars/Pg.pgx parses in 10.429001 seconds
1..6
@SineSwiper
SineSwiper / MetaCPAN-mortality.pl
Created October 19, 2012 20:16
MetaCPAN Mortality Scoring
use v5.10;
use MetaCPAN::API;
use Data::Dumper;
use List::AllUtils qw(min max);
use DateTime;
use DateTime::Format::ISO8601;
my @score_label = qw(
Abysmal
Poor
package # Hide from PAUSE
DBIx::Class::SQLMaker::SQLStatement;
use parent 'DBIx::Class::SQLMaker';
# SQL::Statement does not understand
# INSERT INTO $table DEFAULT VALUES
# Adjust SQL here instead
sub insert { # basically just a copy of the MySQL version...
my $self = shift;
@SineSwiper
SineSwiper / api-test.pl
Created April 23, 2014 02:48
Travis CI API test
use Net::Travis::API::UA;
use Devel::Dwarn;
my $ua = Net::Travis::API::UA->new();
#my $result = $ua->get('/repos/dbsrgits/dbix-class');
my $result = $ua->get('/repos/dbsrgits/dbix-class/builds/23558604');
die "Failed!" unless ($result->content_type eq 'application/json');
my $repo_info = $result->content_json;