Copyright (c) 2000 California Institute of Technology 
 All rights reserved. See the file COPYRIGHT for a full description. 
 $Id: Sym.i3,v 1.2 2001-09-19 15:31:35 wagner Exp $ 
INTERFACE Sym;
IMPORT TextIntTbl;
IMPORT TextBooleanTbl;
IMPORT TextPrecTbl;
IMPORT Prec;
CONST
  Brand = "Sym";
TYPE
  T <: REFANY;
PROCEDURE FromText(t: TEXT): T;
 return named symbol that can have code and start flag assigned 
PROCEDURE FromChar(c: CHAR): T;
 return a symbol for c 
PROCEDURE AllocCode(a: T; into: TextIntTbl.T; VAR lastCode: INTEGER);
 if a is not a char symbol and name is not in table,
   increment lastCode and bind to name 
PROCEDURE SetAttrs(a: T; start: TextBooleanTbl.T;
                   const: TextIntTbl.T);
 read attributes from tables 
PROCEDURE GetName(a: T): TEXT;
 name or @c for char 
PROCEDURE GetCode(a: T): INTEGER;
 can call after AllocCode has been called 
PROCEDURE IsStart(a: T): BOOLEAN;
PROCEDURE IsConst(a: T): BOOLEAN;
 can call after SetAttrs has been called 
PROCEDURE GetPrec(a: T; prec: TextPrecTbl.T): Prec.T;
 return a precedence applying to a, otherwise return NIL 
PROCEDURE Format(a: T): TEXT;
PROCEDURE Equal(a, b: T): BOOLEAN;
END Sym.