ADDED mttroot/mtt/bin/trans/cse2smx_lang Index: mttroot/mtt/bin/trans/cse2smx_lang ================================================================== --- /dev/null +++ mttroot/mtt/bin/trans/cse2smx_lang @@ -0,0 +1,108 @@ + +# Language +if [ -n "$2" ]; then + lang=$2 +else + lang="r" +fi + + +# Inform user +echo Creating $1_smx.$lang +#echo Creating $1_smxx.$lang +#echo Creating $1_smxtx.$lang + +# Remove the old log file +rm -f cse2smx_r.log + +rm -f $1_smx.$lang +rm -f $1_smxx.$lang +rm -f $1_smxtx.$lang + +# Use reduce to accomplish the transformation +reduce << EOF >cse2smx_lang.log + +lang := $lang; + +in "$1_subs.r"; +in "$1_def.r"; +in "$1_cse.r"; +in "$1_cr.r"; + +clear mttx; % Dont need this now - use mkid instead + +OFF Echo; + +% Load the general translator package +LOAD GENTRAN; +GENTRANLANG!* := 'Pascal; +ON GENTRANSEG; +MAXEXPPRINTLEN!* := 80; +TEMPVARNUM!* := 1; +TEMPVARNAME!* := 'mtt_t; + +% Matrix output function +in"$MTTPATH/trans/lang_matrix.r"; + + +%Set up output according to the language. + OFF NAT; + GENTRANOUT "$1_smx.$lang"; + +% Set up output according to the language. + IF (lang = r) THEN + BEGIN + write "matrix mtta(", mttnx, ",", mttnx, ");"; + write "matrix mttb(", mttnx, ",", mttnu, ");"; + write "matrix mttc(", mttny, ",", mttnx, ");"; + write "matrix mttd(", mttny, ",", mttnu, ");"; + END; + +% find MTTA : the A matrix + FOR i := 1:MTTNx DO + BEGIN + mttAAx_i := 0; + FOR j := 1:MTTNx DO + BEGIN + xj := mkid(mttx,j); + a_ij := df(MTTEdx(i,1), xj, 1); + aa_ij := MTTE(i,j) - mttdt*a_ij; + IF (aa_ij NEQ 0) THEN + GENTRAN mtta(i,j) ::=: aa_ij; + mttAAx_i := mttAAx_i + aa_ij*xj; + END; + IF (mttAAx_i NEQ 0) THEN + GENTRAN mttax(i) ::=: mttAAx_i; + END; + +%Shut the output according to the language. + GENTRANSHUT "$1_smx.$lang"; + + +EOF + +if [ "$lang" = "m" ]; then + mv $1_smx.$lang mtt_junk + lang_header $1 smx m 'mttx,mttu,mttdt' '[mtta,mttax]' > $1_smx.m + cat mtt_junk | mtt_p2m >> $1_smx.m + rm -f mtt_junk + +# mv $1_smxx.$lang mtt_junk +# lang_header $1 smxx m 'mttx,mttu,mttxx,mttdt' '[mttax]' > $1_smxx.m +# cat mtt_junk | mtt_p2m >> $1_smxx.m +# rm -f mtt_junk +# +# mv $1_smxtx.$lang mtt_junk +# lang_header $1 smxtx m 'mttx,mttu,mttxx,mttdt' '[mttax]' > $1_smxtx.m +# cat mtt_junk | mtt_p2m >> $1_smxtx.m +# rm -f mtt_junk +# +# +fi + +# Now invoke the standard error handling. +mtt_error_r cse2smx_lang.log + + + +