FnArg parseFnArg() { FnArg argt = new FnArg(); if (CurrentKind == TokenKind.Ident) { argt.ArgTypeToken = CurrentToken; MoveNext(); if (CurrentKind == TokenKind.Colon) { MoveNext(); if (CurrentKind == TokenKind.Ident) { argt.ArgNameToken = CurrentToken; MoveNext(); return(argt); } else { error("参数名称不正确"); } } else { error("应该是':'"); } } else { error("参数类型不正确"); MoveNext(); } return(null); }
FnBracket parseFnMuArg() { FnBracket marg = new FnBracket(); marg.LeftBracketToken = CurrentToken; MoveNext(); while (!isBracketEnd(CurrentKind)) { FnArg sarg = parseFnArg(); if (sarg != null) { marg.Args.Add(sarg); } if (CurrentKind == TokenKind.Comma) { MoveNext(); } } if (CurrentKind == TokenKind.RBS) { marg.RightBracketToken = CurrentToken; MoveNext(); } else { error("括号不匹配"); } return(marg); }