2004-04-23 11:58:43 +01:00
|
|
|
#ifndef TAC_H
|
|
|
|
#define TAC_H
|
|
|
|
|
2004-07-24 20:07:29 +01:00
|
|
|
#include "symbol.h"
|
2004-04-23 11:58:43 +01:00
|
|
|
|
|
|
|
/*
|
|
|
|
* TAC instructions
|
|
|
|
*/
|
|
|
|
|
|
|
|
#define TAC_UNDEF 0
|
|
|
|
#define TAC_SYM 1
|
|
|
|
#define TAC_TUPLE 3
|
|
|
|
#define TAC_ENCRYPT 4
|
|
|
|
#define TAC_VAR 7
|
|
|
|
#define TAC_CONST 8
|
|
|
|
#define TAC_READ 9
|
|
|
|
#define TAC_SEND 10
|
|
|
|
#define TAC_CLAIM 11
|
|
|
|
#define TAC_FUNC 12
|
|
|
|
#define TAC_STRING 13
|
|
|
|
#define TAC_ROLE 14
|
|
|
|
#define TAC_PROTOCOL 15
|
|
|
|
#define TAC_RUN 16
|
|
|
|
#define TAC_ROLEREF 17
|
|
|
|
#define TAC_SECRET 18
|
|
|
|
#define TAC_INVERSEKEYS 19
|
|
|
|
#define TAC_UNTRUSTED 20
|
|
|
|
#define TAC_COMPROMISED 21
|
|
|
|
#define TAC_USERTYPE 22
|
|
|
|
|
|
|
|
struct tacnode
|
|
|
|
{
|
|
|
|
struct tacnode *next;
|
|
|
|
struct tacnode *prev;
|
|
|
|
struct tacnode *allnext;
|
|
|
|
int op;
|
|
|
|
int lineno;
|
|
|
|
union
|
|
|
|
{
|
2004-05-26 09:26:40 +01:00
|
|
|
Symbol sym;
|
|
|
|
struct tacnode *tac;
|
|
|
|
char *str;
|
|
|
|
} t1;
|
|
|
|
union
|
2004-04-23 11:58:43 +01:00
|
|
|
{
|
2004-05-26 09:26:40 +01:00
|
|
|
Symbol sym;
|
|
|
|
struct tacnode *tac;
|
|
|
|
char *str;
|
|
|
|
} t2;
|
2004-04-23 11:58:43 +01:00
|
|
|
union
|
|
|
|
{
|
2004-05-26 09:26:40 +01:00
|
|
|
Symbol sym;
|
|
|
|
struct tacnode *tac;
|
|
|
|
char *str;
|
|
|
|
} t3;
|
2004-04-23 11:58:43 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct tacnode *Tac;
|
|
|
|
|
|
|
|
void tacInit (void);
|
|
|
|
void tacDone (void);
|
|
|
|
Tac tacCreate (int op);
|
|
|
|
Tac tacSymb (char *s);
|
|
|
|
Tac tacJoin (int op, Tac t1, Tac t2, Tac t3);
|
|
|
|
Tac tacTuple (Tac taclist);
|
|
|
|
Tac tacCat (Tac t1, Tac t2);
|
|
|
|
void tacPrint (Tac t);
|
|
|
|
|
|
|
|
#endif
|