#! /bin/bash -f
# Last edited on 2004-12-30 22:07:19 by stolfi


# caminho completo do analisador
parser="${top}analisador/parser.plp"

# Diretorio da gramatica
gramdir="${top}gramatica/"

# gramatica
gramusada="${nomegram}.plg"

# caminho completo da gramatica
gram="${gramdir}${gramusada}"

# arquivos de ferramentas utilizados:
#   check-model

# arquivos de entrada
#   model.txt

# arquivos de saida:
#   tree.txt
#   err.txt

# arquivos intermediarios gerados ou possivel de ser gerado:
#   wrong-model.err
#   model.plm


#
# plb:
#   1. arcos do grafo no formato predicado do prolog da seguinte forma:
#      arco(no_inicial,no_final,palavra_original,nivel).
#
# pln:
#   último no' do grafo no formato predicado do prolog da seguinte forma: last_node(no_final).
#
# plg:
#   gramatica no formato predicados do prolog.
#
# plp:
#   parser no formato predicados do prolog.

echo "etapa 01 - cria arquivo de gabarito"
# apaga arquivo para regras prolog do gabarito se existente
# cria arquivo vazio para regras prolog do gabarito
if [ -e ${tmpdir}model.plm ]; then
  rm ${tmpdir}model.plm
fi
touch ${tmpdir}model.plm

echo "etapa 02 - checa formato do gabarito"
# checa formato do gabarito se existente
if [ -e ${indir}model.txt ]; then
  gawk -f ${toolsdir}check-model \
    ${indir}model.txt \
    > ${tmpdir}model.plm \
    2> ${tmpdir}wrong-model.err
fi

echo "etapa 03 - verifica se houve erros no formato do gabarito"
# se o formato nao esta correto, sai do script
if [ -s ${tmpdir}wrong-model.err ]; then
  echo "Gabarito 'model' em formato incorreto. Programa abortado" \
    > "/dev/stderr"
  exit 1
fi


  echo "etapa 26 - gera as arvores sintaticas"
  # limita tempo de CPU:
  ulimit -t 1800
  # limita tamanho de arquivos (???tree.txt,???err.txt):
  ulimit -f 4000
  # guarda o tempo de inicio da execucao da analise
  inicio=`date +'%s'`
  # gera as arvores sintaticas ->???tree.txt
  pl -A20m -G10m -L10m -g "consult(['${parser}','${gram}','${tmpdir}last-node.pln','${tmpdir}phrase.phr','${tmpdir}big-arcs.plb','${tmpdir}model.plm'])" \
    -t gram > ${outdir}???tree.txt 2> ${outdir}???err.txt
  # calcula e armazena o tempo decorrido da execucao da analise
  fim=`date +'%s'`
  echo "Tempo de execucao $((fim - inicio)) segundos" \
  > ${outdir}time.txt
