के साथ एक साधारण लैम्ब्डा कैलकुस पार्सर मैं एफ # के लिए नया हूं और एक बहुत परेशान समस्या है।FParsec
Application := Expression Expression
Expression := "(" "lambda" Name "." Application ")"
| Name
Name := [a-z]+
कि (lambda x. (lambda y. x y)) z
और (lambda x. x) y
जैसी चीजों से मेल खाएंगे: मैं निम्नलिखित व्याकरण पार्स करने के लिए चाहता हूँ।
मेरे समस्या यह है कि दो नियम एक दूसरे पर निर्भर है:
let popen = pchar '('
let pclose = pchar ')'
let pname = many1 letter |>> Seq.toArray |>> System.String |>> NameNode
let plambda = pstring "lambda"
let pdot = pchar '.'
let phead = plambda >>. pname .>> pdot
let pexpression =
popen >>. pname .>>. papplication .>> pclose |>> ExpressionNode
<|> pname
let papplication = pexpression .>>. pexpression
pexpression
papplication
और vicebersa पर निर्भर करता है। मैं उस निर्भरता से कैसे छुटकारा पा सकता हूं?
आह! यही वही है जो मुझे चाहिए था। धन्यवाद :) – gosukiwi