private ProcNameRaw.NameBracket ParseProcBracket() { ProcNameRaw.NameBracket result = new ProcNameRaw.NameBracket(); //result.FileContext = this.fileMY.FileContext; result.LeftBracketToken = (LexTokenSymbol)tape.Current; tape.MoveNext(); //tape.Match(TokenKindSymbol.LBS); while (!tape.Current.IsKind(TokenKindSymbol.RBS)) { if (tape.Current.IsKind(TokenKindKeyword.Ident)) { ProcNameRaw.ProcParameter arg = ParseProcArg(); if (arg != null) { result.Parameters.Add(arg); } //arg.ArgToken = tape.Current; //tape.MoveNext(); } else if (tape.Current.IsKind(TokenKindSymbol.Comma)) { tape.MoveNext(); } else { tape.error("定义过程的括号中不应该出现"); tape.MoveNext(); } } result.RightBracketToken = (LexTokenSymbol)tape.Current; tape.MoveNext(); //tape.Match(TokenKindSymbol.RBS); return(result); }
public ProcConstructor(ClassAST classAST, SectionProcRaw raw) { RetZType = ZLangBasicTypes.ZVOID; ASTClass = classAST; Raw = raw; NameBracketRaw = Raw.NamePart.GetNameBracket(); ConstructorContext = new ContextConstructor(ASTClass.ClassContext); ConstructorParameterList = new List <ConstructorParameter>(); foreach (var item in NameBracketRaw.Parameters) { ConstructorParameter cp = new ConstructorParameter(this, item); ConstructorParameterList.Add(cp); } Body = new StmtBlock(this, Raw.Body); }