我有一个数据类型
data Time = Time {hour :: Int,
minute :: Int
}
Run Code Online (Sandbox Code Playgroud)
我为其定义了Show的实例
instance Show Time where
show (Time hour minute) = (if hour > 10
then (show hour)
else ("0" ++ show hour))
++ ":" ++
(if minute > 10
then (show minute)
else ("0" ++ show minute))
Run Code Online (Sandbox Code Playgroud)
以格式打印出时间07:09.
现在,Show和之间应该是对称的Read,所以在阅读(但不是真正的(我认为)理解)这个和这个,并阅读文档后,我想出了以下代码:
instance Read Time where
readsPrec _ input =
let hourPart = takeWhile (/= ':')
minutePart = tail …Run Code Online (Sandbox Code Playgroud) 我在这里得到了这段代码,它是一个用Haskell构造的命令式编程语言编写的程序,所以问题是"如何为这种语言实现词法分析器和解析器",该程序被定义为一个序列其中有6种类型的语句:":=","goto","write","stop","if goto"和"int"
我有点迷失在这里,我读过有关词法分析器和解析器的内容,但是没有找到任何示例如何实现它们,如果你能给我一段代码我会很感激,所以我可以尝试自己做,或者至少链接有用的信息