File:  [Research Unix] / researchv10no / cmd / sml / src / basics / token.sml
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 17:21:34 2018 UTC (8 years, 1 month ago) by root
Branches: belllabs, MAIN
CVS tags: researchv10, HEAD
researchv10 Norman

(* Copyright 1989 by AT&T Bell Laboratories *)
signature TOKEN = sig
  datatype token =
    EOF | ID of Symbol.symbol | IDDOT of Symbol.symbol | TYVAR of Symbol.symbol
  | INT of int | REAL of string | STRING of string | ABSTRACTION | ABSTYPE | AND
  | ARROW | AS | BAR | CASE | DATATYPE | DOTDOTDOT | ELSE | END | EQUAL
  | EQTYPE | EXCEPTION | DO | DARROW | FN | FUN | FUNCTOR | HANDLE | HASH | IF | IN
  | INCLUDE | INFIX | INFIXR | LET | LOCAL | NONFIX | OF | OP | OPEN | OVERLOAD
  | RAISE | REC | SHARING | SIG | SIGNATURE | STRUCT | STRUCTURE | THEN
  | TYPE | VAL | WHILE | WILD | WITH | WITHTYPE | ASTERISK | COLON | COMMA | LBRACE
  | LBRACKET | LPAREN | RBRACE | RBRACKET | RPAREN | SEMICOLON | ORELSE | ANDALSO | IMPORT

  val tokenName : token -> string
end  (* TOKEN *)

structure Token : TOKEN = struct
  datatype token =
    EOF | ID of Symbol.symbol | IDDOT of Symbol.symbol | TYVAR of Symbol.symbol
  | INT of int | REAL of string | STRING of string | ABSTRACTION | ABSTYPE | AND
  | ARROW | AS | BAR | CASE | DATATYPE | DOTDOTDOT | ELSE | END | EQUAL
  | EQTYPE | EXCEPTION | DO | DARROW | FN | FUN | FUNCTOR | HANDLE | HASH | IF | IN
  | INCLUDE | INFIX | INFIXR | LET | LOCAL | NONFIX | OF | OP | OPEN | OVERLOAD
  | RAISE | REC | SHARING | SIG | SIGNATURE | STRUCT | STRUCTURE | THEN
  | TYPE | VAL | WHILE | WILD | WITH | WITHTYPE | ASTERISK | COLON | COMMA | LBRACE
  | LBRACKET | LPAREN | RBRACE | RBRACKET | RPAREN | SEMICOLON | ORELSE | ANDALSO | IMPORT

 fun tokenName(tok: token) : string =
     case tok of
       EOF => "EOF"
     | ID s => "ID " ^ Symbol.name(s)
     | IDDOT s => "IDDOT " ^ Symbol.name(s)
     | TYVAR s => "TYVAR " ^ Symbol.name(s)
     | INT i => "INT" ^ makestring(i)
     | REAL s => "REAL " ^ s
     | STRING s => "STRING " ^ s
     | AND => "AND"
     | ABSTRACTION => "ABSTRACTION"
     | ABSTYPE => "ABSTYPE"
     | ARROW => "ARROW"
     | AS => "AS"
     | BAR => "BAR"
     | CASE => "CASE"
     | DATATYPE => "DATATYPE"
     | DOTDOTDOT => "DOTDOTDOT"
     | ELSE => "ELSE"
     | END => "END"
     | EQUAL => "EQUAL"
     | EQTYPE => "EQTYPE"
     | EXCEPTION => "EXCEPTION"
     | DO => "DO"
     | DARROW => "DARROW"
     | FN => "FN"
     | FUN => "FUN"
     | FUNCTOR => "FUNCTOR"
     | HANDLE => "HANDLE"
     | HASH => "HASH"
     | IF => "IF"
     | IN => "IN"
     | INCLUDE => "INCLUDE"
     | INFIX => "INFIX"
     | INFIXR => "INFIXR"
     | LET => "LET"
     | LOCAL => "LOCAL"
     | NONFIX => "NONFIX"
     | OF => "OF"
     | OP => "OP"
     | OPEN => "OPEN"
     | OVERLOAD => "OVERLOAD"
     | RAISE => "RAISE"
     | REC => "REC"
     | SHARING => "SHARING"
     | SIG => "SIG"
     | SIGNATURE => "SIGNATURE"
     | STRUCT => "STRUCT"
     | STRUCTURE => "STRUCTURE"
     | THEN => "THEN"
     | TYPE => "TYPE"
     | VAL => "VAL"
     | WHILE => "WHILE"
     | WILD => "WILD"
     | WITH => "WITH"
     | WITHTYPE => "WITHTYPE"
     | ASTERISK => "ASTERISK"
     | COLON => "COLON"
     | COMMA => "COMMA"
     | LBRACE => "LBRACE"
     | LBRACKET => "LBRACKET"
     | LPAREN => "LPAREN"
     | RBRACE => "RBRACE"
     | RBRACKET => "RBRACKET"
     | RPAREN => "RPAREN"
     | SEMICOLON => "SEMICOLON"
     | ORELSE => "ORELSE"
     | ANDALSO => "ANDALSO"
     | IMPORT => "IMPORT"
end  (* Token *)

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.