SCM Repository
View of /sml/trunk/src/smlnj-lib/RegExp/FrontEnd/syntax.sml
Parent Directory
|
Revision Log
Revision 104 -
(download)
(annotate)
Thu May 28 21:25:35 1998 UTC (22 years, 9 months ago) by monnier
File size: 1127 byte(s)
Thu May 28 21:25:35 1998 UTC (22 years, 9 months ago) by monnier
File size: 1127 byte(s)
Initial revision
(* syntax.sml * * COPYRIGHT (c) 1995 AT&T Bell Laboratories. * * This is the abstract syntax tree used to represent regular expressions. * It serves as the glue between different front-ends (implementing * different RE specification languages), and different back-ends (implementing * different compilation/searching algorithms). *) structure RegExpSyntax : REGEXP_SYNTAX = struct exception CannotParse exception CannotCompile structure CharSet = ListSetFn (struct type ord_key = char val compare = Char.compare end) datatype syntax = Group of syntax | Alt of syntax list | Concat of syntax list | Interval of (syntax * int * int option) | Option of syntax (* == Interval(re, 0, SOME 1) *) | Star of syntax (* == Interval(re, 0, NONE) *) | Plus of syntax (* == Interval(re, 1, NONE) *) | MatchSet of CharSet.set | NonmatchSet of CharSet.set | Char of char | Begin | End fun addRange (s,minC,maxC) = CharSet.addList (s,List.tabulate (ord(maxC)-ord(minC)+1,fn v => chr (v+ord(minC)))) val allChars = addRange (CharSet.empty, Char.minChar, Char.maxChar) end;
root@smlnj-gforge.cs.uchicago.edu | ViewVC Help |
Powered by ViewVC 1.0.0 |