ブックマーク / blog.64p.org (4)

  • Perl で簡単にパーザを書く - tokuhirom's blog

    パーザを書こうという場合、Parse::RecDecsent のようなモジュールを使うのが一般的だが、Perl5 の正規表現は強力すぎるため、そんなものに頼らなくても超絶簡単にパーザを実装することが可能だ。 以下に、四則演算のパーザを示す。 use 5.018000; package Calc { use Carp (); sub parse { local $_ = $_[1]; _parse_expr(); } sub err { my ($msg) = @_; my $ret = join('', $_, "\n", (" " x pos()) . "^\n", $msg, "\n", ); Carp::croak $ret; } sub _parse_expr { my @nodes; until (/\G\s*\z/gc) { my $m = _parse_add() or do

    vid
    vid 2014/01/22
  • 素数をかぞえておちつくんだ。。 - tokuhirom's blog

    tora 言語の話題、あんまかいてないですが現在全部かきなおしてます。 ちょっとずつすすんでいて、YAPC の日に最新版をだそうとおもっています。 書きなおしたので言語仕様がだいぶかわってて、いろいろいじってたらいつのまにかセミコロンなしでもうごくようになっておりました。$ なしでもうごくようになって、わりと普通の言語っぽくなってた。 華麗に素数をかぞえておちつくこともできます。 LOOP: for 2..100 -> $i { for 2..$i-1 -> $j { if ($i%$j == 0) { next LOOP } } say(i) }

    vid
    vid 2012/08/21
    素数を数えて落ちつくんだ。1,2,4,8,16,32... あれ?
  • llvmの基本となるツールたち 〜llvm 入門 その1〜 - tokuhirom's blog

    3つのツールをためすhelloworld.c はこちら。 #include <stdio.h> int main( ) { printf("Hello World!\n"); }llvmアセンブリを生成! $ llvm-gcc -S -emit-llvm helloworld.c helloworld.s ができてた。 ; ModuleID = 'helloworld.c' target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" target triple = "x86_64-apple-darwin11.4" @.str

    vid
    vid 2012/07/16
    FreeBSDだったっけ? こっちに移行してるの。
  • Perl5 works on browser! - tokuhirom's blog

    I hacked jslinux, so I injected Perl5 binary to jslinux!! You can run Perl5 on browser!!!!!!!!!!!!!!!!!!!!!11111 Modify root.bin with CocProxyThis is a note for hacking jslinux. Very easy. https://gist.github.com/978211 use microperl;Perl5 provides micro version of perl. I used it. You should modify the Makefile.micro file for static linking, change the following line. -LIBS = -lm +LIBS = -lm -sta

    vid
    vid 2011/05/19
    LLまで動き始めたのか(^^;;
  • 1