首页 > 代码库 > 利用Scala解析器组合子编写乘除法解析器
利用Scala解析器组合子编写乘除法解析器
import scala.util.parsing.combinator.JavaTokenParsers object ParserCombinator extends JavaTokenParsers { def main(args:Array[String]){ val multiply:Parser[Double] = floatingPointNumber ~ rep( ("*" | "/") ~ floatingPointNumber ^^ { case "*" ~ (factor:String) => left:Double => left * factor.toDouble case "/" ~ (factor:String) => left:Double => left / factor.toDouble } ) ^^ { case (seed:String) ~ (fnList:List[Double=>Double]) => fnList.foldLeft(seed.toDouble)((left, fn) => fn(left)) } val result = this.parseAll(multiply, "2*4/8*5") if(result.successful){ println(result.get) } } }
本文出自 “Frank” 博客,请务必保留此出处http://zengfanhong.blog.51cto.com/8894077/1600167
利用Scala解析器组合子编写乘除法解析器
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。