#! /bin/sh #file: o2grammars.sh #compile all o2 grammars #o2=/mnt/c2d0s0/yacco2/bin/o2 # no parms: just gen c++ code per grammar # parms: -t -err # to also gen Tes or Errors vocabulary # parms: -p # gen grammar's pdf and ps documents o2=/usr/local/yacco2/bin/o2 ###o2=/yacco2/bin/o2 dir_only=`pwd` #"/usr/local/yacco2/compiler/grammars" tmp=/tmp/o2 if [ ! -e "$tmp" ] then mkdir $tmp fi cd $tmp delete_files=1 #clean up the work files in /tmp sw1=$1 sw2=$2 file_no=$((0)) file_pos=$((1)) cc_lex() { file_name_only="`basename $2`" #dir_only=`pwd` #"/usr/local/yacco2/compiler/grammars" #echo "%%%%%%%%%%%%%%%%target directory $dir_only" #echo "%%%%%%%%%%%%%%%%basename $file_name_only" if ! eval "$o2 $sw1 $sw2 $1" then echo "===================> grammar in error: $1 switch(es): $sw1 $sw2"; return; fi for j in $sw1 $sw2 do case $j in *p) eval "mpost $file_name_only.mp" eval "cweave $file_name_only.w" eval "pdftex $file_name_only.tex" xref="$file_name_only""_idx" #echo "%%%%%%%%%%%%%%%%% index file: $xref to cweave and pdftex" eval "cweave $xref.w" eval "pdftex $xref.tex" ###pdftops "$file_name_only.pdf" ###pdftops "$xref"".pdf" eval "cp $xref\.pdf* $dir_only"; #copy gened docs to its gening folder ###eval "cp $xref\.ps* $dir_only"; #copy gened docs to its gening folder return esac done if test $delete_files -eq 1; then for k in `ls * `; do #echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!Casing on $k" case $k in *.cpp|*.h) eval "cp $k $dir_only/$k"; #echo "-----Copying--------> $k to $dir_only/$k" eval "rm -f $k" ;; *.fsc) eval "cp $k $dir_only/$k"; #echo "-------------> Deleting $k" eval "rm -f $k" ;; *.scn|*.idx|*.log|*.toc) #echo "-------------> Deleting $k" eval "rm -f $k" ;; Err.w|T.w) # error and terminal documents to be cweave then pdftex printed by xpdf #echo "-------------> Deleting $k" #eval "rm -f $k" eof ;; *.w) #echo "-------------> Deleting $k" #eval "rm -f $k" ;; *.tex) #echo "-------------> Deleting $k" eval "rm -f $k" ;; *.mp) #echo "-------------> Deleting $k" #eval "rm -f $k" ;; *.tex1) #echo "-------------> Deleting $k" eval "rm -f $k" ;; *.[1-9]) #echo "-------------> Deleting Mpost diagrams $k" ##eval "rm -f $k" ;; *.[1-9][0-9]*) #echo "-------------> Deleting Mpost diagrams $k" ##eval "rm -f $k" ;; esac done fi } for i in `find $dir_only | grep '.*\.lex$'`; do echo "==========> Grammar to compile: $i with switch(es): $sw1 $sw2" file_no=$((++file_no)) if test $((file_no)) -ge $((file_pos)); then file_no_ext=${i%%.*} cc_lex $i $file_no_ext fi done cd $dir_only