#! /bin/bash
# Last edited on 2004-12-30 20:22:59 by stolfi

# build-dic - CONSTROI O DICIONARIO

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

# CONSTANTES

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

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

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

# 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 ${lex} ]; then
  touch ${lex}
fi

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

# verifica se o formato de todas as partes do dicionario está correto
gawk -f ${toolsdir}check-lex-format-v -v colunas=3 \
     ${dicdir}adjetivos.dic \
     ${dicdir}adverbios_sem_mente.dic \
     ${dicdir}adverbios_com_mente.dic \
     ${dicdir}artigos.dic \
     ${dicdir}comparadores.dic \
     ${dicdir}conjuncoes.dic \
     ${dicdir}contracoes.dic \
     ${dicdir}coordenadores.dic \
     ${dicdir}interjeicoes.dic \
     ${dicdir}nomes_proprios.dic \
     ${dicdir}numerais.dic \
     ${dicdir}pontuacoes.dic \
     ${dicdir}preposicoes.dic \
     ${dicdir}pronomes.dic \
     ${dicdir}relativos.dic \
     ${dicdir}siglas.dic \
     ${dicdir}simbolos_avos.dic \
     ${dicdir}substantivos.dic \
     ${dicdir}verbos.dic \
     ${dicdir}extras.dic \
  > /dev/null 2> ${dicdir}wrong-dic.err

# se o formato nao esta correto, sai do script
if [ -s ${dicdir}wrong-dic.err ]; then
  echo "Algum dos componentes do dicionario em formato incorreto. Vide " \
    dicdir "wrong-dic.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}adjetivos.dic \
     ${dicdir}adverbios_sem_mente.dic \
     ${dicdir}adverbios_com_mente.dic \
     ${dicdir}artigos.dic \
     ${dicdir}comparadores.dic \
     ${dicdir}conjuncoes.dic \
     ${dicdir}contracoes.dic \
     ${dicdir}coordenadores.dic \
     ${dicdir}interjeicoes.dic \
     ${dicdir}nomes_proprios.dic \
     ${dicdir}numerais.dic \
     ${dicdir}pontuacoes.dic \
     ${dicdir}preposicoes.dic \
     ${dicdir}pronomes.dic \
     ${dicdir}relativos.dic \
     ${dicdir}siglas.dic \
     ${dicdir}simbolos_avos.dic \
     ${dicdir}substantivos.dic \
     ${dicdir}verbos.dic \
     ${dicdir}extras.dic \
  | gawk -f ${toolsdir}remove-comments \
  | awk '{printf("*%s* %s %s\n",$1,$2,$3)}' > ${lex}
