|
|
1.1 root 1: (* Copyright 1989 by AT&T Bell Laboratories *)
2: signature TOKEN = sig
3: datatype token =
4: EOF | ID of Symbol.symbol | IDDOT of Symbol.symbol | TYVAR of Symbol.symbol
5: | INT of int | REAL of string | STRING of string | ABSTRACTION | ABSTYPE | AND
6: | ARROW | AS | BAR | CASE | DATATYPE | DOTDOTDOT | ELSE | END | EQUAL
7: | EQTYPE | EXCEPTION | DO | DARROW | FN | FUN | FUNCTOR | HANDLE | HASH | IF | IN
8: | INCLUDE | INFIX | INFIXR | LET | LOCAL | NONFIX | OF | OP | OPEN | OVERLOAD
9: | RAISE | REC | SHARING | SIG | SIGNATURE | STRUCT | STRUCTURE | THEN
10: | TYPE | VAL | WHILE | WILD | WITH | WITHTYPE | ASTERISK | COLON | COMMA | LBRACE
11: | LBRACKET | LPAREN | RBRACE | RBRACKET | RPAREN | SEMICOLON | ORELSE | ANDALSO | IMPORT
12:
13: val tokenName : token -> string
14: end (* TOKEN *)
15:
16: structure Token : TOKEN = struct
17: datatype token =
18: EOF | ID of Symbol.symbol | IDDOT of Symbol.symbol | TYVAR of Symbol.symbol
19: | INT of int | REAL of string | STRING of string | ABSTRACTION | ABSTYPE | AND
20: | ARROW | AS | BAR | CASE | DATATYPE | DOTDOTDOT | ELSE | END | EQUAL
21: | EQTYPE | EXCEPTION | DO | DARROW | FN | FUN | FUNCTOR | HANDLE | HASH | IF | IN
22: | INCLUDE | INFIX | INFIXR | LET | LOCAL | NONFIX | OF | OP | OPEN | OVERLOAD
23: | RAISE | REC | SHARING | SIG | SIGNATURE | STRUCT | STRUCTURE | THEN
24: | TYPE | VAL | WHILE | WILD | WITH | WITHTYPE | ASTERISK | COLON | COMMA | LBRACE
25: | LBRACKET | LPAREN | RBRACE | RBRACKET | RPAREN | SEMICOLON | ORELSE | ANDALSO | IMPORT
26:
27: fun tokenName(tok: token) : string =
28: case tok of
29: EOF => "EOF"
30: | ID s => "ID " ^ Symbol.name(s)
31: | IDDOT s => "IDDOT " ^ Symbol.name(s)
32: | TYVAR s => "TYVAR " ^ Symbol.name(s)
33: | INT i => "INT" ^ makestring(i)
34: | REAL s => "REAL " ^ s
35: | STRING s => "STRING " ^ s
36: | AND => "AND"
37: | ABSTRACTION => "ABSTRACTION"
38: | ABSTYPE => "ABSTYPE"
39: | ARROW => "ARROW"
40: | AS => "AS"
41: | BAR => "BAR"
42: | CASE => "CASE"
43: | DATATYPE => "DATATYPE"
44: | DOTDOTDOT => "DOTDOTDOT"
45: | ELSE => "ELSE"
46: | END => "END"
47: | EQUAL => "EQUAL"
48: | EQTYPE => "EQTYPE"
49: | EXCEPTION => "EXCEPTION"
50: | DO => "DO"
51: | DARROW => "DARROW"
52: | FN => "FN"
53: | FUN => "FUN"
54: | FUNCTOR => "FUNCTOR"
55: | HANDLE => "HANDLE"
56: | HASH => "HASH"
57: | IF => "IF"
58: | IN => "IN"
59: | INCLUDE => "INCLUDE"
60: | INFIX => "INFIX"
61: | INFIXR => "INFIXR"
62: | LET => "LET"
63: | LOCAL => "LOCAL"
64: | NONFIX => "NONFIX"
65: | OF => "OF"
66: | OP => "OP"
67: | OPEN => "OPEN"
68: | OVERLOAD => "OVERLOAD"
69: | RAISE => "RAISE"
70: | REC => "REC"
71: | SHARING => "SHARING"
72: | SIG => "SIG"
73: | SIGNATURE => "SIGNATURE"
74: | STRUCT => "STRUCT"
75: | STRUCTURE => "STRUCTURE"
76: | THEN => "THEN"
77: | TYPE => "TYPE"
78: | VAL => "VAL"
79: | WHILE => "WHILE"
80: | WILD => "WILD"
81: | WITH => "WITH"
82: | WITHTYPE => "WITHTYPE"
83: | ASTERISK => "ASTERISK"
84: | COLON => "COLON"
85: | COMMA => "COMMA"
86: | LBRACE => "LBRACE"
87: | LBRACKET => "LBRACKET"
88: | LPAREN => "LPAREN"
89: | RBRACE => "RBRACE"
90: | RBRACKET => "RBRACKET"
91: | RPAREN => "RPAREN"
92: | SEMICOLON => "SEMICOLON"
93: | ORELSE => "ORELSE"
94: | ANDALSO => "ANDALSO"
95: | IMPORT => "IMPORT"
96: end (* Token *)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.