private static void ArgumentPart(SlimChainParser cp, out VariantType type, out string name, out TupleLiteral attr, out Element expli) { var ty = VariantType.Var; var n = string.Empty; TupleLiteral a = null; Element ex = null; cp.Transfer(e => a = e, AttributeList) .Opt.Any( icp => icp.Text("var").Self(() => ty = VariantType.Var), icp => icp.Text("let").Self(() => ty = VariantType.Let), icp => icp.Text("const").Self(() => ty = VariantType.Const) ).Lt() .Type(t => n = t.Text, TokenType.LetterStartString).Lt() .If(icp => icp.Type(TokenType.Pair).Lt()) .Then(icp => icp.Transfer(e => ex = e, Prefix)); type = ty; name = n; attr = a; expli = ex; }
private static void EnumFieldPart(SlimChainParser cp, out string name, out TupleLiteral attr) { var n = string.Empty; TupleLiteral a = null; cp.Transfer(e => a = e, AttributeList) .Type(t => n = t.Text, TokenType.LetterStartString).Lt(); name = n; attr = a; }