scala 解析
来源:互联网 发布:淘宝客服售前售后要点 编辑:程序博客网 时间:2024/05/22 12:49
在看github的给的快学scala第19章的第一题答案时候,发现给出的代码有错误,现将错误代码与自己给出的修改黏贴如下:
原始代码:https://github.com/BasileDuPlessis/scala-for-the-impatient/blob/master/src/main/scala/com/basile/scala/ch19/Ex01.scala
class ExprParser extends RegexParsers { val number = "[0-9.]+".r def expr: Parser[Double] = term ~ opt(("+" | "-") ~ expr) ^^ { case t ~ None => t case t ~ Some("+" ~ e) => t + e case t ~ Some("-" ~ e) => t - e } def term: Parser[Double] = factor ~ opt(("/" | "*" | "%") ~ term) ^^ { case f ~ None => f case f ~ Some("/" ~ e) => f / e case f ~ Some("*" ~ e) => f * e case f ~ Some("%" ~ e) => f % e } def factor: Parser[Double] = number ^^ {_.toDouble} | "(" ~> expr <~ ")" }
修改后的代码:
class ExprParser extends RegexParsers with PackratParsers{ val number = "[0-9.]+".r def expr: Parser[Double] = opt("+" | "-") ~term ~ rep(("+" | "-") ~term^^{ case "+" ~ t => t case "-" ~ t => -t}) ^^ { case (None|Some("+")) ~ t ~ r => t + r.sum case Some("-") ~ t ~ r => -t + r.sum } def term: Parser[Double] = factor ~ opt(("/" | "*" | "%") ~ term) ^^ { case f ~ None => f case f ~ Some("/" ~ e) => f / e case f ~ Some("*" ~ e) => f * e case f ~ Some("%" ~ e) => f % e } def factor: Parser[Double] = number ^^ {_.toDouble} | "(" ~> expr <~ ")" } val parser = new ExprParser val result = parser.parseAll(parser.expr,"-5-4-5/(1+3%1)-5-4*2") if (result.successful) println(result.get)
0 0
- scala 解析
- Scala冒泡排序解析
- scala 解析json字符串
- Scala归并排序解析
- scala解析xml
- Scala XML解析库
- Scala函数解析
- scala解析一段日志
- Scala解析Json字符串
- scala解析json
- scala解析json日志
- Scala解析XML
- Scala解析Json格式
- scala解析xml
- scala解析JSON串
- scala 下划线解析报错
- Scala集合与Spark解析
- 使用Scala Parser解析JSON
- 阻塞socket学习-整理笔记
- CF Dinner with Emma 616B
- Swift中对闭包的理解
- iOS中的动画-简单介绍
- 【bzoj1257】[CQOI2007]余数之和sum 数论乱搞
- scala 解析
- myeclipse从数据库反射生成实体类和映射文件
- Android添加快捷方式
- 批处理创建cocos
- Tomcat中使用JNDI引用外部资源
- Ubuntu下无法联网的一种解决办法
- How to load Properties file from a static block or static method
- 关于JAVA EE项目在WEB-INF目录下的jsp页面如何访问WebRoot中的CSS和JS文件
- python数字图像处理(3):图像像素的访问与裁剪