From 05489d911a86a68d947b174e5c1710be47ea807e Mon Sep 17 00:00:00 2001 From: schodet Date: Fri, 4 Feb 2005 21:30:38 +0000 Subject: Ajout du scipt protodec --- n/avr/proto/protodec | 97 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100755 n/avr/proto/protodec (limited to 'n') diff --git a/n/avr/proto/protodec b/n/avr/proto/protodec new file mode 100755 index 0000000..0ee929b --- /dev/null +++ b/n/avr/proto/protodec @@ -0,0 +1,97 @@ +#!/usr/bin/perl -w +use strict; + +sub syntax +{ + print <= 2 ** ($b - 1)) { + return -(2 ** $b - $h); + } else { + return $h; + } +} + +sub prcmd +{ + my ($cmd, $c, @v) = @_; + return unless exists $$cmd{$c}; + print $c; + for (@{$$cmd{$c}}) + { + /^(\d)-(\d)(u?)$/; + if ($3 eq 'u') { + print ' ', cvhexu @v[$1 - 1 .. $2 - 1]; + } else { + print ' ', cvhex @v[$1 - 1 .. $2 - 1]; + } + } + print "\n"; +}; + +my %cmd; +my ($acmd, @acmdl); + +while ($_ = shift) +{ + /^[a-zA-Z]$/ and do { + $cmd{$acmd} = [ @acmdl ] if defined $acmd; + @acmdl = (); + $acmd = $_; + next; + }; + /^([0-8])(u?)$/ and do { + syntax if !defined $acmd; + push @acmdl, "$1-$1$2"; + next; + }; + /^([0-8])-([0-8])(u?)$/ and do { + syntax if !defined $acmd; + syntax if $2 <= $1; + push @acmdl, $_; + next; + }; + syntax; +} +$cmd{$acmd} = [ @acmdl ] if defined $acmd; + +syntax if !scalar %cmd; + +#print $_, ' ', join (' ', @{$cmd{$_}}), "\n" for keys %cmd; + +while (<>) +{ + chomp; + if (/^!([a-zA-Z])(\w\w)?(\w\w)?(\w\w)?(\w\w)?(\w\w)?(\w\w)?(\w\w)?(\w\w)?(\w\w)?$/o) + { + my @m; + push @m, $1 if defined $1; + push @m, $2 if defined $2; + push @m, $3 if defined $3; + push @m, $4 if defined $4; + push @m, $5 if defined $5; + push @m, $6 if defined $6; + push @m, $7 if defined $7; + push @m, $8 if defined $8; + push @m, $9 if defined $9; + prcmd \%cmd, @m; + } +} -- cgit v1.2.3