|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T m
Length: 1319 (0x527) Types: TextFile Names: »man2mus«
└─⟦4f9d7c866⟧ Bits:30007245 EUUGD6: Sikkerheds distributionen └─⟦b5330643c⟧ »./cops/perl-4.019/perl.tar.Z« └─⟦2b9a58213⟧ └─⟦this⟧ »perl-4.019/usub/man2mus«
#!/usr/bin/perl while (<>) { if (/^\.SH SYNOPSIS/) { $spec = ''; for ($_ = <>; $_ && !/^\.SH/; $_ = <>) { s/^\.[IRB][IRB]\s*//; s/^\.[IRB]\s+//; next if /^\./; s/\\f\w//g; s/\\&//g; s/^\s+//; next if /^$/; next if /^#/; $spec .= $_; } $_ = $spec; 0 while s/\(([^),;]*)\s*,\s*([^);]*)\)/($1|$2)/g; s/\(\*([^,;]*)\)\(\)/(*)()$1/g; s/(\w+)\[\]/*$1/g; s/\n/ /g; s/\s+/ /g; s/(\w+) \(([^*])/$1($2/g; s/^ //; s/ ?; ?/\n/g; s/\) /)\n/g; s/ \* / \*/g; s/\* / \*/g; $* = 1; 0 while s/^((struct )?\w+ )([^\n,]*), ?(.*)/$1$3\n$1$4/g; $* = 0; s/\|/,/g; @cases = (); for (reverse split(/\n/,$_)) { if (/\)$/) { ($type,$name,$args) = split(/(\w+)\(/); $type =~ s/ $//; if ($type =~ /^(\w+) =/) { $type = $type{$1} if $type{$1}; } $type = 'int' if $type eq ''; @args = grep(/./, split(/[,)]/,$args)); $case = "CASE $type $name\n"; foreach $arg (@args) { $type = $type{$arg} || "int"; $type =~ s/ //g; $type .= "\t" if length($type) < 8; if ($type =~ /\*/) { $case .= "IO $type $arg\n"; } else { $case .= "I $type $arg\n"; } } $case .= "END\n\n"; unshift(@cases, $case); } else { $type{$name} = $type if ($type,$name) = /(.*\W)(\w+)$/; } } print @cases; } }