#! /bin/bash

# build-dic - CONSTROI O DICIONARIO MORFOLOGICO

# Script para:
#   dadas as partes do dicionario morfologico em dicdir 
#   gerar o dicionario morfologico completo delimitado com *

# CONSTANTES

# path para executaveis (gawk)
export PATH="${PATH}"

# diretorio dos arquivos que compoe o dicionario morfologico
dicdir="/home/msc2000/ra880518/parser/dic/"

# caminho completo do dicionario morfologico
morf="/home-ext/msc2000/ra880518/parser/dic/morf.mrf"

# diretorio das ferramentas
toolsdir="/home/msc2000/ra880518/parser/prog-texto/"

# diretorio das tabelas
tablesdir="/home/msc2000/ra880518/parser/tabelas/"


# CODIGO DO PROGRAMA

# gera o arquivo do dicionario se inexistente
if [ ! -e ${morf} ]; then
  touch ${morf}
fi

# se o arquivo do dicionario nao tem permissao de escrita, sai do script
if [ ! -w ${morf} ]; then
  echo "Dicionario morfologico " morf " sem permissao de escrita. Programa abortado" > "/dev/stderr"
  exit 1
fi

# verifica se o formato de todas as partes do dicionario morfologico está correto
gawk -f ${toolsdir}check-morf-format-v \
     ${dicdir}clises.mrf \
%     ${dicdir}prefixos.mrf \
%     ${dicdir}extras.mrf \
  > /dev/null 2> ${dicdir}wrong-morf.err

# se o formato nao esta correto, sai do script
if [ -s ${dicdir}wrong-morf.err ]; then
  echo "Algum dos componentes do dicionario morfologico em formato incorreto. Vide " dicdir "wrong-morf.err. Programa abortado" > "/dev/stderr"
  exit 1
fi

# une todas as partes do dicionario, ordenando-o e retirando duplicacoes por prevencao
# remove carriage return, linhas em branco e comentarios
# adiciona as delimitacoes com *
sort -u \
     ${dicdir}clises.mrf \
      ${dicdir}prefixos.mrf \
      ${dicdir}extras.mrf \
  | gawk -f ${toolsdir}remove-comments \
  | awk '{printf("*%s* %s %s\n",$1,$2,$3)}' > ${morf}
