Parsing 如何在Scala解析器中对文件使用位置标记?

Parsing 如何在Scala解析器中对文件使用位置标记?,parsing,scala,Parsing,Scala,我想使用位置解析器和位置特征获取位置信息。我想将Im解析的文件读入一个字符串(或者我可以转换成字符串的东西),然后解析它,同时保留位置信息。以下是我在“位置”上的发现: …其中不假思索地提到了StreamReader和CharArrayReader。还有其他选择吗?我需要的可能是将我的文件读入可以与CharArrayReader一起使用的内容。如果是这样的话,这是如何工作的?如果没有,我应该怎么做 (仅供参考,StreamReader已退出,因为我想在解析文件之前读取并保存该文件,而不是因为我

我想使用位置解析器和位置特征获取位置信息。我想将Im解析的文件读入一个字符串(或者我可以转换成字符串的东西),然后解析它,同时保留位置信息。以下是我在“位置”上的发现:

…其中不假思索地提到了StreamReader和CharArrayReader。还有其他选择吗?我需要的可能是将我的文件读入可以与CharArrayReader一起使用的内容。如果是这样的话,这是如何工作的?如果没有,我应该怎么做


(仅供参考,StreamReader已退出,因为我想在解析文件之前读取并保存该文件,而不是因为我想浪费内存。)

将您最喜欢的浏览器指向,然后导航到包
scala.util.parsing.input
,您将在其中找到可用的定位读卡器:

  • CharArrayReader
  • CharSequenceReader
  • PagedSeqReader
  • StreamReader
附录

例如,创建其中一个读卡器,
CharArrayReader
,非常简单:

val car = new CharArrayReader("sample input")

现在你有了
阅读器
来为你的解析器提供信息。

是的,这就是我所能得到的。你知道如何使用它们来读取,比如说,带换行符的字符串吗?以这样的方式,他们实际工作(保持职位)?正如我所说,StreamReader可能不适合我的用例,但CharArrayReader可能是正确的(或者CharSequenceReader,我相信这是相同的,但与Seq相反)。当在InputReader上使用mkString读取文件时,这很好。它将保留基于换行符的行号,\n这是我主要关心的问题。事实上,这并不十分挑剔——有很多方法可以做到这一点,而且它们似乎都能奏效。它们只是不容易在REPL中正确设置。我使用了:new-lexical.Scanner(scala.io.Source.fromFile(filename.mkString)