字句解析(テスト) 10 describe("tokenizeを呼んだ時") { it("文字列が入力された場合文字列のリストが生成される") { assertEquals(listOf("(", "+", "1", "1", ")"), tokenize("(+ 1 1)")) } it("入れ子のカッコの場合") { assertEquals(listOf("(", "+", "1", "(", "*", "3", "10", ")", ")"), tokenize("(+ 1 (* 3 10))")) } context("S式として不正な場合でもトークン化は正常に終わること") { it("左括弧が無い") { assertEquals(listOf("+", "1", "1", ")"), tokenize("+ 1 1)")) } it("右括弧が無い") { assertEquals(listOf("(", "+", "1", "1"), tokenize("(+ 1 1")) } it("カッコの対応が不正") { assertEquals(listOf("(", "+", "1", "*", "3", "10", ")", ")"), tokenize("(+ 1 * 3 10))")) } } }