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>