⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 html-parser-fn.sml

📁 这是我们参加06年全国开源软件的竞赛作品
💻 SML
字号:
(* html-parser-fn.sml * * COPYRIGHT (c) 1996 AT&T REsearch. * * This glues the lexer and parser together. *)functor HTMLParserFn (Err : HTML_ERROR) : sig    val parseFile : string -> HTML.html  end = struct    structure TIO = TextIO    structure HTMLAttrs = HTMLAttrsFn(Err)    structure HTMLLrVals = HTMLLrValsFn(	structure Token = LrParser.Token	structure HTMLAttrs = HTMLAttrs)    structure Lex = HTMLLexFn(	structure Err = Err	structure Tokens = HTMLLrVals.Tokens	structure HTMLAttrs = HTMLAttrs)    structure Parser = JoinWithArg(	structure Lex= Lex	structure LrParser = LrParser	structure ParserData = HTMLLrVals.ParserData)    structure CheckHTML = CheckHTMLFn(Err)    fun parseFile fname = let	(* build a context to hand to the HTMLAttrs build functions. *)	  fun ctx lnum = {file = SOME fname, line=lnum}	  fun lexError (msg, lnum, _) =		Err.lexError {file = SOME fname, line = lnum} msg	  fun syntaxError (msg, lnum, _) =		Err.syntaxError {file = SOME fname, line = lnum} msg	  val inStrm = TIO.openIn fname	  fun close () = TIO.closeIn inStrm	  val lexer = Parser.makeLexer (fn n => TIO.inputN(inStrm, n))		(lexError, SOME fname)	  val (result, _) = Parser.parse (		15,	(* lookahead *)		lexer,		syntaxError,		ctx)	  in	    CheckHTML.check (ctx 0) result	      handle ex => (close(); raise ex)	    close();	    result	  end  end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -