[BACK]Return to asir2string.pl CVS log [TXT][DIR] Up to [local] / OpenXM / misc

Annotation of OpenXM/misc/asir2string.pl, Revision 1.1

1.1     ! ohara       1: #!/usr/bin/perl
        !             2: # $OpenXM$
        !             3:
        !             4: ## asir のプログラムを(できるだけ短い)文字列形式に書き換える.
        !             5: ## usage: asir2string.pl example.rr example.txt
        !             6: ## Bugs: (1) 文字列リテラルの内部も改変されてしまう.
        !             7: ##       (2) トークンの境界を無視する.  例えば
        !             8: ##           「A = B + +C」 が 「A=B++C」となる.
        !             9:
        !            10: sub main {
        !            11:        ($_) = @_;
        !            12:        s#/\*.*?\*/##gs ;
        !            13:        s#\\#\\\\#gs ;
        !            14:        s#\s+# #gs ;
        !            15:        s#end[\$;].*$##gs ;
        !            16:        s#"#\\"#gs ;
        !            17:        s#\s?([,=;<>\[\]\(\){}\+\-\*/%])\s?#\1#gs ;
        !            18:        s#^\s?#"#gs ;
        !            19:        s#\s?$#"#gs ;
        !            20:        return $_;
        !            21: }
        !            22:
        !            23: local $/;
        !            24:
        !            25: open(STDIN,  $ARGV[0]) if @ARGV > 0 ;
        !            26: open(STDOUT, '>' . $ARGV[1]) if @ARGV > 1;
        !            27: my $buffer;
        !            28: $buffer = <STDIN>;
        !            29:
        !            30: $buffer = main $buffer;
        !            31:
        !            32: print $buffer;

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>