/^[^#]/ { rec ++; push[rec] = $2; pop[rec] = $3; n[rec] = $1 if (NF>3) pname[rec] = $4; else pname[rec] = n[rec]; } END { print "\n\nstruct operator_def operator_def[] = {"; for (i=1; i<=rec; i++) { printf " {%3d, \"%s\",%s", i-1, pname[i], substr(" ", length(pname[i])) printf "%2d, %2d, ", push[i], pop[i]-push[i] print "0},\n#define " n[i] "_primitive " i-1 } print "};" }