4
我試圖複製一個簡單的if語句的結構:解析的if/else/if語句
if (paren) { block } [else ({ block } | rec if (paren)) ]
因爲如果(括號)塊,我創建了一個IfBlock AST節點。否則,它會遞歸地填充一個IfElseBlock節點。
我已經嘗試了不少替代結構
let parse_if =
suffixparen .>>. suffixblock |>> IfBlock
//>>? attempt (str "else" >>. ifParser) |>> IfElseBlock
//<|> preturn IfBlock
// .>>? attempt (str "else" >>. ifParser) |>> IfElseBlock
// suffixparen .>>. suffixblock |>> IfBlock
// <|> ifParser |>> IfElseBlock
let inlineIf = str_ws "if" >>. parse_if
do ifParserR := inlineIf
建議?
感謝Laurent。對於記錄,我也試圖結合嘗試和<|>%無與無功。 – hammett 2011-06-14 18:26:37