模块 HsLexer通行证1a 哪里 进口 HsLex公司 ( 哈斯克尔·莱克斯 ) 进口 Hs标记 进口 列表 ( mapAccumL(地图累计毫升) ) 违约 ( 国际 ) -- 标记、添加位置信息和删除空白: lexer密码1 = 滤波器 ( 非白色 . 有限状态试验 ) . lexerPass0 哪里 非白色 t吨 = t吨 /= 空白 && t吨 /= 评论开始 -- 标记并添加位置信息: lexerPass0 = 添加位置 . 哈斯克尔·莱克斯 哪里 添加位置 = snd公司 . mapAccumL(地图累计毫升) 销售时点情报系统 startPos(启动位置) 销售时点情报系统 第页 ( t吨 , 第页 ) = ( 下一个位置 第页 秒 ,( t吨 ,( 第页 , 秒 ))) 哪里 秒 = 颠倒 第页 -- 第一列被指定为列1,而不是0。 启动位置 = ( 1 , 1 ) 下一个位置 = 折叠 下一个位置1 下一个位置1 ( 年 , x个 ) c(c) = 案例 c(c) 属于 -- 字符newline、return、linefeed和formfeed都以开头 -- 一条新线。 “\n” -> ( 年 + 1 , 1 ) “\CR” -> ( 年 + 1 , 1 ) “\LF” -> ( 年 + 1 , 1 ) '\FF' -> ( 年 + 1 , 1 ) -- 制表位间距为8个字符。 -- 制表符会导致插入足够的空格以对齐 -- 当前位置与下一个制表位。 -- +(不在报告中)第一个制表位是第1列。 “\t” -> ( 年 , x个 + 8 - ( x个 - 1 ) ` 国防部 ` 8 ) _ -> ( 年 , x个 + 1 )