📄 html-parser-fn.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 + -