首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在lexical.Scanner类中实例化JavaTokenParsers?

如何在lexical.Scanner类中实例化JavaTokenParsers?
EN

Stack Overflow用户
提问于 2015-06-22 20:57:49
回答 1查看 334关注 0票数 1

我正在编写一个解析器,它继承自JavaTokenParsers,因为我有如下函数:

代码语言:javascript
复制
 import scala.util.parsing.combinator.lexical._
 import scala.util.parsing._
 import scala.util.parsing.combinator.RegexParsers;
 import scala.util.parsing.combinator.syntactical.StdTokenParsers
 import scala.util.parsing.combinator.token.StdTokens
 import scala.util.parsing.combinator.lexical.StdLexical
 import scala.util.parsing.combinator.lexical.Scanners
 import scala.util.parsing.combinator.lexical.Lexical
 import scala.util.parsing.input._
 import scala.util.parsing.combinator.syntactical._
 import scala.util.parsing.combinator.token
 import scala.util.parsing.combinator._

 class ParseExp extends JavaTokenParsers{
  //some code for parsing 
  def parse(s:String) = {
     val tokens = new lexical.Scanner(s)
     phrase(expr)(tokens)
   }
}

我得到了以下错误:

代码语言:javascript
复制
type Scanner is not a member of package scala.util.parsing.combinator.lexical
[error]         val tokens = new lexical.Scanner(s)
[error]                                  ^

为什么在导入所有包时出现此错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-22 21:20:09

JavaTokenParsers不实现Scanners特性。因此,您也需要从这个特性(或扩展它的特性)扩展,才能访问这个类。

除非您的expr解析器接受Reader作为参数(而不是从它的apply方法中),否则,如果我没有弄错,那么您需要覆盖元素的类型和输入类型。

另外,有什么理由需要Reader[Token]吗?

如果您不需要一个Reader[Token],并且由于您用一个简单的字符串提供输入,

代码语言:javascript
复制
phrase(expr)(new CharSequenceReader(s))

应该行得通。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30989689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档