Este é um programa para testar os analisadores. Ele lê uma expressão da entrada, e imprime seu resultado em seguida.

public class Main
{
  public static void main(String[] args)
  {

    Lexico lexico = new Lexico();
    Sintatico sintatico = new Sintatico();
    Semantico semantico = new Semantico();

    LineNumberReader in = new LineNumberReader(new InputStreamReader(System.in));
    String line = in.readLine();

    lexico.setInput( line );

    try
    {
      sintatico.parse(lexico, semantico);
      System.out.println(" = ");
      System.out.println(trans.getResult());

    }
    catch ( LexicalError e )
    {
      e.printStackTrace();
    }
    catch ( SintaticError e )
    {
      e.printStackTrace();
    }
    catch ( SemanticError e )
    {
      e.printStackTrace();
    }
  }
}

Para utilizar os analisadores gerados pelo GALS, deve seguir os seguintes passos:

Em Java

Lexico lexico = new Lexico();
Sintatico sintatico = new Sintatico();
Semantico semantico = new Semantico();

...

lexico.setInput( /* entrada */ );

try
{
    sintatico.parse(lexico, semantico);
}
catch ( LexicalError e )
{
    //Trada erros léxicos
}
catch ( SintaticError e )
{
    //Trada erros sintáticos
}
catch ( SemanticError e )
{
    //Trada erros semânticos
}

Em C++

Lexico lexico;
Sintatico sintatico;
Semantico semantico;

...

lexico.setInput( /* entrada */ );

try
{
    sintatico.parse(&lexico, &semantico);
}
catch ( LexicalError &e )
{
    //Trada erros léxicos
}
catch ( SintaticError &e )
{
    //Trada erros sintáticos
}
catch ( SemanticError &e )
{
    //Trada erros semânticos
}

Em Delphi

lexico : TLexico;
sintatico : TSintatico;
semantico : TSemantico;

...

lexico := TLexico.create;
sintatico := TSintatico.create;
semantico := TSemantico.create;

...

lexico.setInput( /* entrada */ );

try
    sintatico.parse(lexico, semantico);
except
  on e : ELexicalError do
    //Trada erros léxicos

  on e : ESintaticError do
    //Trada erros sintáticos

  on e : ESemanticError do
    //Trada erros semânticos

end;

...

lexico.destroy;
sintatico.destroy;
semantico.destroy;

Mesagens de Erro

São geradas mensagens de erro default para os possívies erros. Em alguns casos elas podem ser apropriadas, mas em geral você vai querer alterá-las para informar ao usuário uma mensagem mais adequada. As tabelas de erro estão nos arquivos com as constantes.