home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Source Code / C / Applications / Moscow ML 1.42 / src / lex / Grammar.sml < prev    next >
Encoding:
Text File  |  1997-08-18  |  10.1 KB  |  334 lines  |  [TEXT/Moml]

  1. local
  2. in
  3. datatype token =
  4.     Tident of string
  5.   | Tchar of char
  6.   | Tstring of string
  7.   | Taction of Syntax.location
  8.   | Trule
  9.   | Tparse
  10.   | Tand
  11.   | Tequal
  12.   | Tend
  13.   | Tor
  14.   | Tunderscore
  15.   | Teof
  16.   | Tlbracket
  17.   | Trbracket
  18.   | Tstar
  19.   | Tmaybe
  20.   | Tplus
  21.   | Tlparen
  22.   | Trparen
  23.   | Tcaret
  24.   | Tdash
  25. end;
  26.  
  27. open Obj Parsing;
  28. prim_val vector_ : int -> 'a -> 'a Vector.vector         = 2 "make_vect";
  29. prim_val update_ : 'a Vector.vector -> int -> 'a -> unit = 3 "set_vect_item";
  30.  
  31. open List Syntax Gram_aux;
  32. (* Line 7, file Grammar.sml *)
  33. val yytransl = #[
  34.   257 (* Tident *),
  35.   258 (* Tchar *),
  36.   259 (* Tstring *),
  37.   260 (* Taction *),
  38.   261 (* Trule *),
  39.   262 (* Tparse *),
  40.   263 (* Tand *),
  41.   264 (* Tequal *),
  42.   265 (* Tend *),
  43.   266 (* Tor *),
  44.   267 (* Tunderscore *),
  45.   268 (* Teof *),
  46.   269 (* Tlbracket *),
  47.   270 (* Trbracket *),
  48.   271 (* Tstar *),
  49.   272 (* Tmaybe *),
  50.   273 (* Tplus *),
  51.   274 (* Tlparen *),
  52.   275 (* Trparen *),
  53.   276 (* Tcaret *),
  54.   277 (* Tdash *),
  55.     0];
  56.  
  57. val yylhs = "\255\255\
  58. \\001\000\002\000\002\000\003\000\003\000\004\000\005\000\006\000\
  59. \\006\000\007\000\008\000\008\000\008\000\008\000\008\000\008\000\
  60. \\008\000\008\000\008\000\008\000\008\000\009\000\009\000\010\000\
  61. \\010\000\010\000\000\000";
  62.  
  63. val yylen = "\002\000\
  64. \\005\000\001\000\000\000\003\000\000\000\003\000\003\000\003\000\
  65. \\000\000\002\000\001\000\001\000\001\000\001\000\003\000\002\000\
  66. \\002\000\002\000\003\000\002\000\003\000\002\000\001\000\004\000\
  67. \\002\000\000\000\002\000";
  68.  
  69. val yydefred = "\000\000\
  70. \\000\000\000\000\002\000\027\000\000\000\000\000\000\000\005\000\
  71. \\000\000\000\000\000\000\006\000\000\000\001\000\013\000\014\000\
  72. \\011\000\012\000\000\000\000\000\009\000\000\000\004\000\000\000\
  73. \\000\000\000\000\023\000\000\000\000\000\010\000\000\000\016\000\
  74. \\017\000\018\000\000\000\000\000\025\000\022\000\015\000\021\000\
  75. \\000\000\000\000\000\000\008\000\024\000";
  76.  
  77. val yydgoto = "\002\000\
  78. \\004\000\005\000\010\000\008\000\012\000\029\000\021\000\035\000\
  79. \\026\000\027\000";
  80.  
  81. val yysindex = "\004\000\
  82. \\007\255\000\000\000\000\000\000\009\255\012\255\021\255\000\000\
  83. \\025\255\001\255\004\255\000\000\012\255\000\000\000\000\000\000\
  84. \\000\000\000\000\255\254\004\255\000\000\040\255\000\000\002\255\
  85. \\034\255\031\255\000\000\022\255\036\255\000\000\004\255\000\000\
  86. \\000\000\000\000\057\255\045\255\000\000\000\000\000\000\000\000\
  87. \\004\255\057\255\034\255\000\000\000\000";
  88.  
  89. val yyrindex = "\000\000\
  90. \\056\255\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
  91. \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
  92. \\000\000\000\000\035\255\000\000\000\000\000\000\000\000\035\255\
  93. \\035\255\000\000\000\000\000\000\019\255\000\000\000\000\000\000\
  94. \\000\000\000\000\008\255\000\000\000\000\000\000\000\000\000\000\
  95. \\000\000\044\255\035\255\000\000\000\000";
  96.  
  97. val yygindex = "\000\000\
  98. \\000\000\000\000\000\000\049\000\000\000\000\000\023\000\245\255\
  99. \\000\000\234\255";
  100.  
  101. val YYTABLESIZE = 75;
  102. val yytable = "\022\000\
  103. \\024\000\037\000\038\000\024\000\001\000\015\000\016\000\013\000\
  104. \\028\000\014\000\003\000\020\000\007\000\006\000\017\000\018\000\
  105. \\019\000\020\000\025\000\042\000\045\000\020\000\036\000\015\000\
  106. \\016\000\007\000\020\000\007\000\009\000\022\000\011\000\031\000\
  107. \\017\000\018\000\019\000\024\000\032\000\033\000\034\000\020\000\
  108. \\040\000\015\000\016\000\030\000\039\000\041\000\043\000\019\000\
  109. \\026\000\031\000\017\000\018\000\019\000\019\000\032\000\033\000\
  110. \\034\000\020\000\015\000\016\000\003\000\023\000\019\000\044\000\
  111. \\000\000\000\000\000\000\017\000\018\000\019\000\000\000\032\000\
  112. \\033\000\034\000\020\000";
  113.  
  114. val yycheck = "\011\000\
  115. \\002\001\024\000\025\000\002\001\001\000\002\001\003\001\007\001\
  116. \\020\000\009\001\004\001\004\001\001\001\005\001\011\001\012\001\
  117. \\013\001\010\001\020\001\031\000\043\000\018\001\021\001\002\001\
  118. \\003\001\007\001\019\001\009\001\008\001\041\000\006\001\010\001\
  119. \\011\001\012\001\013\001\002\001\015\001\016\001\017\001\018\001\
  120. \\019\001\002\001\003\001\004\001\014\001\010\001\002\001\004\001\
  121. \\014\001\010\001\011\001\012\001\013\001\010\001\015\001\016\001\
  122. \\017\001\018\001\002\001\003\001\005\001\013\000\019\001\041\000\
  123. \\255\255\255\255\255\255\011\001\012\001\013\001\255\255\015\001\
  124. \\016\001\017\001\018\001";
  125.  
  126. val yyact = vector_ 28 (fn () => ((raise Fail "parser") : obj));
  127. (* Rule 1, file Grammar.grm, line 37 *)
  128. val _ = update_ yyact 1
  129. (fn () => repr(let
  130. val d__1__ = peekVal 4 : Syntax.location
  131. val d__3__ = peekVal 2 : string * (Syntax.regular_expression * Syntax.location) list
  132. val d__4__ = peekVal 1 : (string * (Syntax.regular_expression * Syntax.location) list) list
  133. in
  134. ( Lexdef((d__1__), (d__3__)::(rev (d__4__))) ) end : Syntax.lexer_definition))
  135. ;
  136. (* Rule 2, file Grammar.grm, line 41 *)
  137. val _ = update_ yyact 2
  138. (fn () => repr(let
  139. val d__1__ = peekVal 0 : Syntax.location
  140. in
  141. ( (d__1__) ) end : Syntax.location))
  142. ;
  143. (* Rule 3, file Grammar.grm, line 43 *)
  144. val _ = update_ yyact 3
  145. (fn () => repr(let
  146. in
  147. ( Location(0,0) ) end : Syntax.location))
  148. ;
  149. (* Rule 4, file Grammar.grm, line 47 *)
  150. val _ = update_ yyact 4
  151. (fn () => repr(let
  152. val d__1__ = peekVal 2 : (string * (Syntax.regular_expression * Syntax.location) list) list
  153. val d__3__ = peekVal 0 : string * (Syntax.regular_expression * Syntax.location) list
  154. in
  155. ( (d__3__)::(d__1__) ) end : (string * (Syntax.regular_expression * Syntax.location) list) list))
  156. ;
  157. (* Rule 5, file Grammar.grm, line 49 *)
  158. val _ = update_ yyact 5
  159. (fn () => repr(let
  160. in
  161. ( [] ) end : (string * (Syntax.regular_expression * Syntax.location) list) list))
  162. ;
  163. (* Rule 6, file Grammar.grm, line 53 *)
  164. val _ = update_ yyact 6
  165. (fn () => repr(let
  166. val d__1__ = peekVal 2 : string
  167. val d__3__ = peekVal 0 : (Syntax.regular_expression * Syntax.location) list
  168. in
  169. ( ((d__1__),(d__3__)) ) end : string * (Syntax.regular_expression * Syntax.location) list))
  170. ;
  171. (* Rule 7, file Grammar.grm, line 57 *)
  172. val _ = update_ yyact 7
  173. (fn () => repr(let
  174. val d__2__ = peekVal 1 : Syntax.regular_expression * Syntax.location
  175. val d__3__ = peekVal 0 : (Syntax.regular_expression * Syntax.location) list
  176. in
  177. ( (d__2__)::rev (d__3__) ) end : (Syntax.regular_expression * Syntax.location) list))
  178. ;
  179. (* Rule 8, file Grammar.grm, line 61 *)
  180. val _ = update_ yyact 8
  181. (fn () => repr(let
  182. val d__1__ = peekVal 2 : (Syntax.regular_expression * Syntax.location) list
  183. val d__3__ = peekVal 0 : Syntax.regular_expression * Syntax.location
  184. in
  185. ( (d__3__)::(d__1__) ) end : (Syntax.regular_expression * Syntax.location) list))
  186. ;
  187. (* Rule 9, file Grammar.grm, line 63 *)
  188. val _ = update_ yyact 9
  189. (fn () => repr(let
  190. in
  191. ( [] ) end : (Syntax.regular_expression * Syntax.location) list))
  192. ;
  193. (* Rule 10, file Grammar.grm, line 67 *)
  194. val _ = update_ yyact 10
  195. (fn () => repr(let
  196. val d__1__ = peekVal 1 : Syntax.regular_expression
  197. val d__2__ = peekVal 0 : Syntax.location
  198. in
  199. ( ((d__1__),(d__2__)) ) end : Syntax.regular_expression * Syntax.location))
  200. ;
  201. (* Rule 11, file Grammar.grm, line 71 *)
  202. val _ = update_ yyact 11
  203. (fn () => repr(let
  204. in
  205. ( Characters all_chars ) end : Syntax.regular_expression))
  206. ;
  207. (* Rule 12, file Grammar.grm, line 73 *)
  208. val _ = update_ yyact 12
  209. (fn () => repr(let
  210. in
  211. ( Characters [#"\000"] ) end : Syntax.regular_expression))
  212. ;
  213. (* Rule 13, file Grammar.grm, line 75 *)
  214. val _ = update_ yyact 13
  215. (fn () => repr(let
  216. val d__1__ = peekVal 0 : char
  217. in
  218. ( Characters [(d__1__)] ) end : Syntax.regular_expression))
  219. ;
  220. (* Rule 14, file Grammar.grm, line 77 *)
  221. val _ = update_ yyact 14
  222. (fn () => repr(let
  223. val d__1__ = peekVal 0 : string
  224. in
  225. ( regexp_for_string (d__1__) ) end : Syntax.regular_expression))
  226. ;
  227. (* Rule 15, file Grammar.grm, line 79 *)
  228. val _ = update_ yyact 15
  229. (fn () => repr(let
  230. val d__2__ = peekVal 1 : char list
  231. in
  232. ( Characters (d__2__) ) end : Syntax.regular_expression))
  233. ;
  234. (* Rule 16, file Grammar.grm, line 81 *)
  235. val _ = update_ yyact 16
  236. (fn () => repr(let
  237. val d__1__ = peekVal 1 : Syntax.regular_expression
  238. in
  239. ( Repetition (d__1__) ) end : Syntax.regular_expression))
  240. ;
  241. (* Rule 17, file Grammar.grm, line 83 *)
  242. val _ = update_ yyact 17
  243. (fn () => repr(let
  244. val d__1__ = peekVal 1 : Syntax.regular_expression
  245. in
  246. ( Alternative((d__1__), Epsilon) ) end : Syntax.regular_expression))
  247. ;
  248. (* Rule 18, file Grammar.grm, line 85 *)
  249. val _ = update_ yyact 18
  250. (fn () => repr(let
  251. val d__1__ = peekVal 1 : Syntax.regular_expression
  252. in
  253. ( Sequence((d__1__), Repetition (d__1__)) ) end : Syntax.regular_expression))
  254. ;
  255. (* Rule 19, file Grammar.grm, line 87 *)
  256. val _ = update_ yyact 19
  257. (fn () => repr(let
  258. val d__1__ = peekVal 2 : Syntax.regular_expression
  259. val d__3__ = peekVal 0 : Syntax.regular_expression
  260. in
  261. ( Alternative((d__1__),(d__3__)) ) end : Syntax.regular_expression))
  262. ;
  263. (* Rule 20, file Grammar.grm, line 89 *)
  264. val _ = update_ yyact 20
  265. (fn () => repr(let
  266. val d__1__ = peekVal 1 : Syntax.regular_expression
  267. val d__2__ = peekVal 0 : Syntax.regular_expression
  268. in
  269. ( Sequence((d__1__),(d__2__)) ) end : Syntax.regular_expression))
  270. ;
  271. (* Rule 21, file Grammar.grm, line 91 *)
  272. val _ = update_ yyact 21
  273. (fn () => repr(let
  274. val d__2__ = peekVal 1 : Syntax.regular_expression
  275. in
  276. ( (d__2__) ) end : Syntax.regular_expression))
  277. ;
  278. (* Rule 22, file Grammar.grm, line 95 *)
  279. val _ = update_ yyact 22
  280. (fn () => repr(let
  281. val d__2__ = peekVal 0 : char list
  282. in
  283. ( subtract all_chars (d__2__) ) end : char list))
  284. ;
  285. (* Rule 23, file Grammar.grm, line 97 *)
  286. val _ = update_ yyact 23
  287. (fn () => repr(let
  288. val d__1__ = peekVal 0 : char list
  289. in
  290. ( (d__1__) ) end : char list))
  291. ;
  292. (* Rule 24, file Grammar.grm, line 101 *)
  293. val _ = update_ yyact 24
  294. (fn () => repr(let
  295. val d__1__ = peekVal 3 : char
  296. val d__3__ = peekVal 1 : char
  297. val d__4__ = peekVal 0 : char list
  298. in
  299. ( char_class (d__1__) (d__3__) @ (d__4__) ) end : char list))
  300. ;
  301. (* Rule 25, file Grammar.grm, line 103 *)
  302. val _ = update_ yyact 25
  303. (fn () => repr(let
  304. val d__1__ = peekVal 1 : char
  305. val d__2__ = peekVal 0 : char list
  306. in
  307. ( (d__1__) :: (d__2__) ) end : char list))
  308. ;
  309. (* Rule 26, file Grammar.grm, line 105 *)
  310. val _ = update_ yyact 26
  311. (fn () => repr(let
  312. in
  313. ( [] ) end : char list))
  314. ;
  315. (* Entry lexer_definition *)
  316. val _ = update_ yyact 27 (fn () => raise yyexit (peekVal 0));
  317. val yytables : parseTables =
  318.   ( yyact,
  319.     yytransl,
  320.     yylhs,
  321.     yylen,
  322.     yydefred,
  323.     yydgoto,
  324.     yysindex,
  325.     yyrindex,
  326.     yygindex,
  327.     YYTABLESIZE,
  328.     yytable,
  329.     yycheck );
  330. fun lexer_definition lexer lexbuf = yyparse yytables 1 lexer lexbuf;
  331. (* Line 109, file Grammar.grm *)
  332.  
  333. (* Line 283, file Grammar.sml *)
  334.