Exemplo n.º 1
0
 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);
 }
Exemplo n.º 2
0
 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);
 }