: use execute.c to generate Prolog code to generate instructions.
#
# Copyright (C) 1990 Department of Computer Science, University of Queensland
#
# execute.c
#                                                                       sed
# PUT_CONSTANT, put_Constant(value), put_Register(i),
#                                                                       tr
# put_constant, put_constant(value), put_register(i),
# 									cat
# <number> put_constant, put_constant(value), put_register(i),
#                                                                       sed
# write_instr(put_constant(put_constant(Value), put_register(I))) :- \
# put_instruction(<number>), put_constant(Value), put_register(I).
#                                                                       sed
# write_instr(put_constant(Value, I)) :- \
# put_instruction(<number>), put_constant(Value), put_register(I).

echo "/*
 * Copyright (C) 19`date +%y` Department of Computer Science, University of Queensland
 */
"

sed -n '1,/^	.*{/ d
/^	otherwise/,$d
/^	when / {
	s/	when //
	s/://
	x
	: loop
	n
	/^#ifdef/{
		: ifdef
		n
		/^#endif/!b ifdef
		n
	}
	/^		Get/{
		s/		Get/put_/
		s/;//
		H
		b loop
	}
	x
	s/\n/, /g
	s/$/, /
	p
	x
}
' |
	tr [A-Z] [a-z] |
	cat -n |
	sed '	s/(a/(A/g
		s/(b/(B/g
		s/(c/(C/g
		s/(d/(D/g
		s/(e/(E/g
		s/(f/(F/g
		s/(g/(G/g
		s/(h/(H/g
		s/(i/(I/g
		s/(j/(J/g
		s/(k/(K/g
		s/(l/(L/g
		s/(m/(M/g
		s/(n/(N/g
		s/(o/(O/g
		s/(p/(P/g
		s/(q/(Q/g
		s/(r/(R/g
		s/(s/(S/g
		s/(t/(T/g
		s/(u/(U/g
		s/(v/(V/g
		s/(w/(W/g
		s/(x/(X/g
		s/(y/(Y/g
		s/(z/(Z/g
		s/ *\([0-9]*\)	\([^,]*\), \(.*\)/write_instr(\2(\3)) :- \
	put_instruction(\1), \3/
		s/, $/./
		s/, )/)/
		s/()//' |
	sed '	/^	/!s/put_[a-z_]*(\([^()]*\))/\1/g
		/^	/s/, /,\
	/g'
