我正在使用Scala解析器组合编写一个解释器。我的解释器将词法分析和语法分析分为两个阶段。我想为我的词法分析器编写单元测试,以确保它能够生成正确的输出。
目前,我正在使用下面的帮助方法进行单元测试。该方法将程序源代码作为参数,并返回Token对象的列表。使用单元测试框架(ScalaTest),我可以对生成的Token列表进行模式匹配。
当前方法存在的问题:
我的当前工作版本(至少是相关部分):
目前,我正在使用下面的帮助方法进行单元测试。该方法将程序源代码作为参数,并返回Token对象的列表。使用单元测试框架(ScalaTest),我可以对生成的Token列表进行模式匹配。
当前方法存在的问题:
- 它需要在我的词法分析器中使用帮助方法来辅助单元测试
- 它使用了while循环
- 它采用手动构造并使用Scanner的方式
我的当前工作版本(至少是相关部分):
class MyLexer extends StdLexical {
def lex(input:String): List[Token] = {
var scanner = new Scanner(input)
val result = new mutable.ListBuffer[Token]()
while (!scanner.atEnd) {
result.append(scanner.first)
scanner = scanner.rest
}
return result.toList
}
}