#!/bin/sh set -e em_table=$1 h=${2-.} d=${3-.} set `grep fpseu $em_table` p=$2 set `grep fmnem $em_table` m=$2 ed - $em_table <<'A' > X 1,/^$/g/ /s// /gp A ed - $em_table <<'A' | awk '{$2=$2+'$p'; print}' > Y 1,/^$/d 1,/^$/g/ /s// /gp A ed - $em_table <<'A' | awk '{print $0,'$m'+i++}' > Z 1,/^$/d 1,/^$/d 1,/^$/g/ /s// /gp A i=`wc -l >X i=`wc -l >X ed - X <<'A' > $h/em_spec.h g/^/s//#define sp_/p A ed - Y <<'A' > $h/em_pseu.h g/ \(.*\) .*/s// \1/ g/\(.*\) \(.*\)/s//#define ps_\1 \2/p A ed - Z <<'A' > $h/em_mnem.h g/ .* /s// / g/\(.*\) \(.*\)/s//#define op_\1 \2/p A ( echo 'char em_pseu[][4] = {' ed - Y <<'A' g/\(...\).*/s// "\1",/p A echo '};' ) > $d/em_pseu.c ( echo 'char em_mnem[][4] = {' ed - Z <<'A' g/\(...\).*/s// "\1",/p A echo '};' ) > $d/em_mnem.c ( echo '#include char em_flag[] = {' ed - Z <<'A' | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ g/^... /s/// g/ .*/s/// g/\(.\)\(.\)/s//PAR_\1 | FLO_\2/ g/-/s//NO/g g/.*/s// &,/p A echo '};' ) > $d/em_flag.c rm X Y Z