DIRECTORY Interminal USING [KeyName], IO USING [Handle], RefTab USING [Ref], Rope USING [ROPE], TIPTables USING [TIPTable]; TIPPrivate: CEDAR DEFINITIONS = BEGIN OPEN TIPTables; ReadTIPTable: PROC [s: IO.Handle] RETURNS [table: TIPTable, keyOption: KeyOption _ none]; BadTable: ERROR; -- raised by ReadTIPTable WriteTIPTable: PROC [table: TIPTable, keyOption: KeyOption, s: IO.Handle]; EqualTables: PROC [t1, t2: TIPTable]; version: CHAR = '1; -- table syntax version number qZ: ZONE; -- quantized zone for allocations predTable: RefTab.Ref; -- table for user defined predicates KeyOption: TYPE = {none, printKeys, defaultKeys}; Symbol: TYPE = {OptionSym, Small, Fast, FastMouse, SlowMouse, PrintKeys, DefaultKeys, Opaque, Select, Trigger, Enable, From, Endcase, End, While, And, Up, Down, Mouse, After, Before, RightArrow, Comma, Semicolon, LeftCurly, RightCurly, Greater, Dot, VertBar, Char, Coords, Time, KeyIdent, Ident, Number, String, Illegal}; nrOfErrors: CARDINAL = 30; errorText : REF ARRAY [0..nrOfErrors] OF Rope.ROPE; keyNames: REF ARRAY Interminal.KeyName OF Rope.ROPE; InitBuilder: PROC; END. The syntax of "compiled" tip table files follows: capital letters, numbers and parens are character literals lower case id's are names of syntax equations id* means 0 or more instances is a primitive of some sort such as text file = TIPTABLE version opaque link ignore variant version = opaque = flag link = N --none-- | P --printKeys-- | D --defaultKeys-- ignore = up down move up = flag down = flag move = flag variant = S small | F fast small = choiceseries fast = choice U choicearray D choicearray time time = choice choicearray = ( choiceitem* ) choiceitem = ( key choice ) choiceseries = ( choice* ) choice = ( term* ) term = 1 keytrigger | 2 --mousetrigger-- | 3 timetrigger | 4 keyenable | 5 predenable | 6 --CHAR-- | 7 --COORDS-- | 8 choiceseries | 9 results | A key2Enable | B keyEnableList | C --TIME-- keytrigger = key keystate key = keystate = U --up-- | D --down-- timetrigger = timeoutflavor msecs timeoutflavor = G --gt-- | L --lt-- msecs = high low high = low = keyenable = key keystate key2Enable = keyenable keyenable keyEnableList = ( keyenable* ) predenable = atom results = ( result* ) result = 1 atom | 2 --TIPUser.stdChar-- | 3 | 4 len | 5 --TIPScreenCoords-- | 6 --TIPUser.stdTime-- flag = T | F -- true or false atom = len pname pname = len = stored as series of characters. length limited to 255 chars stored as 4 bytes and stored as themselves €TIPPrivate.mesa; Last Edited by McGregor, June 10, 1982 10:29 am Last Edited by: Maxwell, December 17, 1982 9:52 am the following are for internal use only Κή– "Mesa" style˜J˜JšΟcA™AJšœ2™2J™šΟk ˜ Jšœ žœ ˜Jšžœžœ ˜Jšœžœ˜Jšœžœžœ˜Jšœ žœ ˜J˜—Jšœ žœžœžœ ˜5J˜Jš'™'J˜šΟn œžœžœ˜!Jšžœ0˜7J˜—Jšœ žœ˜*J˜JšŸ œžœ,žœ ˜JJ˜JšŸ œžœ˜%J˜Jšœ žœ˜2J˜Jšœžœ!˜+J˜Jšœ$˜;J˜Jšœ žœ"˜1J˜šœžœI˜UJ˜YJ˜SJ˜>J˜—Jšœ žœ˜Jš œ žœžœžœžœ˜3Jš œ žœžœžœžœ˜4J˜JšŸ œžœ˜J˜Jšžœ˜J˜˜1J˜:J˜-J˜J˜-J˜—Jšœžœ#˜2J˜J˜ Jš œžœœžœ œžœ˜7J˜J˜ J˜ J˜ Jšœ žœ žœ˜J˜Jšœžœ žœ˜.J˜ J˜J˜J˜J˜šœœ!˜IJšœœ œ˜GJšžœžœžœ˜+—J˜J˜ Jšœ žœœžœ˜ J˜!Jšœžœœžœ˜#J˜J˜ J˜ J˜J˜ J˜J˜J˜šœœ˜BJšœœ˜-—Jšœžœžœ˜J˜J˜J˜ J˜J˜BJ˜J˜&J˜J˜—…—