/*-------------------------------------------------------------------
 * Interface.h    Alair Pereira do Lago 09/96
 *-------------------------------------------------------------------
 */     
 
#ifndef EXTERN
#define EXTERN extern
#endif

#define YYSTYPE int

#ifndef N
  #define N            10
#endif

#define Multiply(x,y) (((x * y) % N))
#define One           1
#define Zero          0
#define Nil           -1

extern YYSTYPE InterfaceNextNil;
extern YYSTYPE InterfaceZero;
extern YYSTYPE InterfaceOne;

YYSTYPE InterfaceMultiply(YYSTYPE x,YYSTYPE y);
YYSTYPE InterfacePower(YYSTYPE x,int n);
YYSTYPE InterfaceIdempotent(YYSTYPE x);
YYSTYPE InterfaceElement(char *word);
void    InterfacePrintElement(YYSTYPE x);

YYSTYPE InterfaceNextElement(YYSTYPE x);

YYSTYPE InterfaceNextIdempotent(YYSTYPE x);

/*
  Observations :
    1) InterfaceZero should be InterfaceNextNil if there is no zero.
    2) InterfaceOne should be InterfaceNextNil if there is no One.
    2) InterfaceElement can have an empty implementation if no
       constants will be used.
 */