MoonBit月兔编程语言 现代编程思想 第十一课 案例:语法解析器与Tagless Final现代编程思想 案例:语法解析器 Hongbo Zhang ## 语法解析器 • 案例目标 ○ 解析基于自然数的数学表达式: $ (1+5)*7/2 $ ☐ 转化为单词列表 LParen Value(1) Plus Value(5) Multiply Value(7) Divide Value(2) ☐ 转化为抽象语法树 Division(Multiply(Add(Value(1) Value(5)), Value(7)), Value(2))) ○ 计算最终结果:21 • 语法分析 ☐ 对输入文本进行分析并确定其语法结构 通常包含词法分析和语法分析 ◦ 本节课均利用语法解析器组合子(parser combinator)为例 ## 词法分析 - 将输入分割为单词 ☐ 输入:字符串/字节块 ☐ 输出:单词流 ☐ 例如:“12 +678” -> [Value(12),Plus,Value(678)] { 2. Value(Int); LParen; RParen; Plus; Minus; Multiply; Divide 3. } derive(Debug) ## 解析器组合子 ## • 构造可组合的解析器 1. // V 代表解析成功后获得的值 2. // Lexer[V] == (String) -> Option[(V, String)] 3. type Lexer[V]0 码力 | 25 页 | 400.29 KB | 2 年前3
Swift 写解释器 - 戴铭## ? 解乐释(件)店 什么是解释器?什么是解析器?  源代码 一 编译 字节码|AST VM 解释执行 结果 支持 概述 使用MultipartResolver与Commons FileUpload传输文件 Servlet 3.0下的MultipartResolver 处理表单中的文件上传 处理客户端发起的文件上传请求 异常处理 处理器异常解析器HandlerExceptionHandler @ExceptionHandler注解 应头弱ETag 基于代码的Servlet容器初始化 配置Spring MVC 启用MVC Java编程配置或MVC命名空间 默认配置的定制化 转换与格式化 验证 拦截器 内容协商 视图控制器 视图解析器 资源的服务 回到默认的Servlet来进行资源服务 路径匹配 消息转换器 使用MVC Java编程进行高级定制 使用MVC命名空间进行高级定制 术语笔记 致谢 当前文档 《Spring MVC0 码力 | 163 页 | 2.28 MB | 1 月前3
Spring Framework 1.1.5 Changelog0 码力 | 57 页 | 166.71 KB | 2 年前3
Spring Framework 1.2.2 Reference0 码力 | 269 页 | 1.41 MB | 2 年前3
Spring Framework 1.2.4 ChangelogAbstract自动生成捕获解析器自动解析解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解 器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解 器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解析器解0 码力 | 77 页 | 223.73 KB | 2 年前3
Python 标准库参考指南 3.9.20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531 14.2 configparser --- 配置文件解析器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532 14.2.1 快速起步 . . . . . . . . 映射协议访问 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537 14.2.7 定制解析器行为 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538 14.2.8 旧式 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639 16.4 argparse --- 命令行选项、参数和子命令解析器 . . . . . . . . . . . . . . . . . . . . . . . . . . 640 16.4.1 示例 . . . . . . . . . . . . . . . .0 码力 | 2146 页 | 10.17 MB | 1 年前3
Python 标准库参考指南 3.6.15 tar 归档文件 ..... 446 14 文件格式 ..... 457 14.1 csv — CSV 文件读写 ..... 457 14.2 configparser — 配置文件解析器 ..... 463 14.3 netrc — netrc 文件处理 ..... 480 14.4 xdrlib — 编码与解码 XDR 数据 ..... 481 14.5 plistlib 处理流的核心工具 ..... 546 16.3 time — 时间的访问和转换 ..... 557 16.4 argparse — 命令行选项、参数和子命令解析器 ..... 565 16.5 getopt — C 风格的命令行选项解析器 ..... 595 16.6 模块 logging — Python 的日志记录工具 ..... 597 16.7 logging.config — 20 结构化标记处理工具 ..... 1003 20.1 html—超文本标记语言支持 ..... 1003 20.2 html.parser—简单的 HTML 和 XHTML 解析器 ..... 1004 20.3 html.entities—HTML 一般实体的定义 ..... 1008 20.4 XML 处理模块 ..... 1008 20.5 xml.etree0 码力 | 1886 页 | 8.95 MB | 1 年前3
Python 标准库参考指南 3.8.20 tarfile --- 读写 tar 归档文件 ... 456 # 14 文件格式 471 14.1 csv --- CSV 文件读写 471 14.2 configparser --- 配置文件解析器 477 14.3 netrc --- netrc 文件处理 492 14.4 xdrlib --- 编码与解码 XDR 数据 493 14.5 plistlib --- 生成与解析 Mac OS 2 io --- 处理流的核心工具 559 16.3 time --- 时间的访问和转换 570 16.4 argparse --- 命令行选项、参数和子命令解析器 579 16.5 getopt --- C 风格的命令行选项解析器 608 16.6 logging --- Python 的日志记录工具 610 16.7 logging.config --- 日志记录配置 623 16 # 20 结构化标记处理工具 ... 1039 20.1 html --- 超文本标记语言支持 ... 1039 20.2 html.parser --- 简单的 HTML 和 XHTML 解析器 ... 1040 20.3 html.entities --- HTML 一般实体的定义 ... 1044 20.4 XML 处理模块 ... 1044 20.5 xml.etree.ElementTree0 码力 | 1927 页 | 9.69 MB | 1 年前3
Python 标准库参考指南 3.8.20 tarfile --- 读写 tar 归档文件 ... 456 # 14 文件格式 471 14.1 csv --- CSV 文件读写 471 14.2 configparser --- 配置文件解析器 477 14.3 netrc --- netrc 文件处理 492 14.4 xdrlib --- 编码与解码 XDR 数据 493 14.5 plistlib --- 生成与解析 Mac OS 2 io --- 处理流的核心工具 559 16.3 time --- 时间的访问和转换 570 16.4 argparse --- 命令行选项、参数和子命令解析器 579 16.5 getopt --- C 风格的命令行选项解析器 608 16.6 logging --- Python 的日志记录工具 610 16.7 logging.config --- 日志记录配置 623 16 # 20 结构化标记处理工具 ... 1039 20.1 html --- 超文本标记语言支持 ... 1039 20.2 html.parser --- 简单的 HTML 和 XHTML 解析器 ... 1040 20.3 html.entities --- HTML 一般实体的定义 ... 1044 20.4 XML 处理模块 ... 1044 20.5 xml.etree.ElementTree0 码力 | 1927 页 | 9.69 MB | 1 年前3
共 199 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20













