BEGIN {op = ""} { printed = 0; } /DEFBINOP_OP \(mul, / { operation = $5; gsub(")", ", " CHECK ")", operation); print "DEFBINOP_OP_CHK " $2 " " $3 " " $4 " " operation printed = 1; } /DEFBINOP / { print printed = 1; if ($2 == "(div,") op = "/"; else if ($2 == "(ldiv,") op = "\\\\"; else if ($2 == "(trans_ldiv,") op = "'\\\\"; else if ($2 == "(trans_mul," || $2 == "(herm_mul,") op = "'*"; else if ($2 == "(mul_trans," || $2 == "(mul_herm,") op = "*'"; } /CAST_BINOP_ARGS/ { if (op != "") print " " CHECK " (\"" op "\");"; op = ""; } /#define LMATRIX / { print "#define VALIDATE " CHECK "\n"; } { if ((op == "" || $0 == "{") && !printed) print }