Parsing 球拍';s语法分析:标识符与预期不匹配
我在Racket的Parsing 球拍';s语法分析:标识符与预期不匹配,parsing,scheme,racket,Parsing,Scheme,Racket,我在Racket的语法解析方面遇到了问题。特别是,我收到以下错误消息: unknown: rule: expected one of these identifiers: `model', `line', or `rule' at: rule in: (rule (predicate (symbol "T") "[" (symbol-list (symbol "X")) "]") "<-"
语法解析方面遇到了问题。特别是,我收到以下错误消息:
unknown: rule: expected one of these identifiers: `model', `line', or `rule'
at: rule
in: (rule (predicate (symbol "T") "[" (symbol-list (symbol "X")) "]") "<-" (predicate (symbol "Q") "[" (symbol-list (symbol "X")) "]"))
以下是输入(通过语法->数据传递):
(模型(行(规则)(谓词(符号T)[(符号列表(符号X))]))是否实际定义了规则
?~literal
识别绑定,因此如果没有绑定,它将不起作用。在这种情况下,您将需要~datum
。是否实际定义了规则
?~literal
识别绑定,因此如果没有绑定,它将不起作用。您需要~datutum
在这种情况下,请改为。包括导致错误消息的表达式。实际上,如果可能,请包括整个程序……我已经更新了帖子。问题是,规则
是否实际定义?~literal
识别绑定,因此如果没有绑定,它将不起作用。在这种情况下,您需要使用~datum
@SoraweePorncharoenwase谢谢,这正是问题所在。添加您的评论作为答案,我会接受。包括导致错误消息的表达式。实际上,如果可能,包括整个程序……我已经更新了帖子。问题是,规则
是否确实定义了?~literal
识别绑定,因此如果有“没有绑定,它不会工作。在这种情况下,您需要使用~datum
。@SoraWebornCharoEnwase谢谢,这正是问题所在。添加您的评论作为答案,我将接受它。”。
(define (parse-carl s)
(syntax-parse s
[((~literal model) ~rest x)
(with-syntax ([x (map parse-carl (syntax-e #'x))]) #'x)]
[((~literal line) x) (with-syntax ([x (parse-carl #'x)]) #'x)]
[((~literal rule) p1 "<-" p2) 'ok]))
(model (line (rule (predicate (symbol T) [ (symbol-list (symbol X)) ]) <- (predicate (symbol Q) [ (symbol-list (symbol X)) ])))
(line (rule (predicate (symbol Y) [ (symbol-list (symbol X)) ]) <- (predicate (symbol Q) [ (symbol-list (symbol X)) ])))
(line (rule (predicate (symbol Y) [ (symbol-list (symbol X)) ]) <- (predicate (symbol T) [ (symbol-list (symbol X)) ])))
(line (query (rule (predicate (symbol Y) [ (symbol-list (symbol X)) ]) <- (predicate (symbol T) [ (symbol-list (symbol X)) ])) ?))
)