vì vậy tôi có một cái gì đó như thế này:làm thế nào để làm cho scala phân tích cú pháp không
class MyParser extends JavaTokenParsers {
var m = new HashMap[String,String]
def store = ("var" ~> ident "=") ~ ident ^^ {
case k ~ v => m += k -> v
}
def stored_val = ident ^^ {
case k => m(k)
}
}
Và vấn đề của tôi được rằng những gì tôi thực sự muốn làm là có phân tích cú pháp stored_val thất bại để phân tích cú pháp khác có cơ hội để phù hợp với đầu vào. Nhưng những gì xảy ra bây giờ là bản đồ ném khi nó không thể tìm thấy giá trị.
tôi đã cố gắng thực hiện stored_val như thế này:
def stored_val = ident => {
case k => if (m.contains(k)) m(k) else failure("identifier not found")
}
Nhưng vấn đề với điều đó là sự thất bại trả Parser [Không có gì] mà là một loại khác với String.
Tôi có cùng một vấn đề chính xác và muốn xóa trình phân tích cú pháp một cách rõ ràng. Làm thế nào là thất bại nghĩa vụ phải được sử dụng nếu loại không có gì của nó là không tương thích với bất cứ điều gì? – hotzen