gpt4 book ai didi

unit-testing - 对 Scala 词法分析器进行单元测试

转载 作者:行者123 更新时间:2023-12-01 02:47:50 26 4
gpt4 key购买 nike

我正在研究使用 Scala 解析器组合器编写的解释器。我的解释器将词法分析和解析分为两个阶段。我想为我的词法分析器编写单元测试以确保它产生正确的输出。

现在,我正在使用辅助方法方法进行单元测试,我已将其包含在下面。该方法将程序的源代码作为参数并返回一个 Token 对象列表。使用单元测试框架 (ScalaTest),然后我可以对生成的 token 列表进行模式匹配。

当前方法的问题:

  • 它需要在我的词法分析器中使用辅助方法来帮助进行单元测试
  • 它使用一个while循环
  • 它诉诸于手动构建和使用扫描仪

  • 似乎应该有更好的方法将程序的源代码转换为 token 列表。

    我当前的工作版本(至少是相关部分):
    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
    }
    }

    最佳答案

    的确,它不是很讨人喜欢。但是,下面的方法不行吗?

    // From the unit test
    val lexer = new MyLexer
    val scanner = new lexer.Scanner(input)
    val result = Stream.iterate(scanner)(_.rest).takeWhile(!_.atEnd).map(_.first) // .toList optional

    关于unit-testing - 对 Scala 词法分析器进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6480745/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com