chiark / gitweb /
avoid clashes between macro args and real variables (!)
authorian <ian>
Fri, 30 Dec 2005 17:57:17 +0000 (17:57 +0000)
committerian <ian>
Fri, 30 Dec 2005 17:57:17 +0000 (17:57 +0000)
iwjpictest/insn-aliases.inc-gen
iwjpictest/to-insn-aliases

index d362091d7ff3d4aa5014b1ee16a04a83893ced63..9a3e290e60a9f454c383a5d7196e506f8fbd722f 100755 (executable)
@@ -64,14 +64,20 @@ desc () {
                        "$new" "$fan" "$ds" "$use"
        fi
 }
+mapargs () {
+       local str=$1
+       printf "%s\n" "$str" \
+       | sed -e 's/\b[a-z]\b/insn_aliases_arg_&/g'
+}
+
 alias_r () {
        local use=$1 new=$2 actargs=$3 formargs=$4
+       
        if $macros; then
-               cat <<END
-$new   macro   $formargs
+               mapargs \
+"$new  macro   $formargs
        $use    $actargs
-       endm
-END
+       endm"
        fi
 }
 alias_f () {
index e579c3d2fae3975e7abcc236fdc9b8152ac62053..dff1548b4332bfdefc3235cd42950984e3b85536 100755 (executable)
@@ -145,6 +145,7 @@ sub readaliases ($) {
     my ($formarglets) = 'inkfgb';
     while (<$f>) {
        s/0xfe8/W/;
+       s/\binsn_aliases_arg_([a-z])\b/$1/g;
        if (m/^\s*\;/) {
        } elsif (m/^(\w+)\s+macro(?:\s+([$formarglets,]+))?\s*$/o) {
            die if defined $inmacro;