Tôi đang thử nghiệm với các trình kết hợp phân tích cú pháp và tôi thường chạy vào những gì có vẻ như các cuộc truy tìm vô hạn. Đây là lần đầu tiên tôi gặp phải:Trình kết hợp phân tích cú pháp không chấm dứt - cách đăng nhập những gì đang diễn ra?
import util.parsing.combinator.Parsers
import util.parsing.input.CharSequenceReader
class CombinatorParserTest extends Parsers {
type Elem = Char
def notComma = elem("not comma", _ != ',')
def notEndLine = elem("not end line", x => x != '\r' && x != '\n')
def text = rep(notComma | notEndLine)
}
object CombinatorParserTest {
def main(args:Array[String]): Unit = {
val p = new CombinatorParserTest()
val r = p.text(new CharSequenceReader(","))
// does not get here
println(r)
}
}
Làm cách nào tôi có thể in những gì đang diễn ra? Và tại sao điều này không kết thúc?
Tôi nghĩ rằng EOF được giới thiệu nhân tạo, nhưng bạn nói đúng khi nói rằng nó được liên tục phân tích vào nó dường như liên tục được cung cấp khi yêu cầu một ký tự bổ sung khi đầu vào đã ở cuối chuỗi. – huynhjl