#!/bin/bash

set -e

if [ -z "$LINGDEF" ]; then
  LINGDEF=$HOME/olivex/lingdef.xml
fi
export LINGDEF


if [ $# == 0 ]; then
  echo "usage: $0 [-f] <maingraph> <dir>"
  exit 1
fi

FORCE="no"
if [ "$1" = "-f" ]; then
  FORCE="yes"
  shift
fi

if [ "$#" != 2 ]; then
  echo "bad args"
  exit 1
fi

MAIN=$1
GRFDIR=$2
RESDIR=$MAIN.grm

function die () {
 echo "error!: $1"
 exit 1
}

if [ $FORCE = "yes" -a -e "$RESDIR" ]; then
  rm -r $RESDIR
fi

if [ -e "$RESDIR" ]; then
  echo "$RESDIR exist, please remove it"
  exit 1
fi
mkdir $RESDIR

echo "Grf2Fst2 ..."
(cd $GRFDIR && for i in *.grf; do echo -n "$i "; Grf2Fst2 $i y > /dev/null || die "error"; done || die "error")
echo

cp $GRFDIR/*.fst2 $RESDIR

cd $RESDIR

echo
echo "Flatten ..."
for i in *.fst2; do
  echo -n "$i "
  Flatten $i FST > /dev/null
  u162u8 $i > /dev/null
  rm $i.bak
done
echo

echo
echo "to XML..."
for i in *.fst2; do
  echo -n "$i "
  FST2genfst $i
done
echo

echo
echo "to pattern..."
for i in *.gfst; do
  echo -n "$i "
  gfst2upattern -l $LINGDEF $i
done
echo

echo
echo "making grammar ..."
pat2ugrammar -l $LINGDEF $MAIN

echo "done. grammar in $RESDIR"

