Example #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);
 }
Example #2
0
        public MethodParameter(MethodName methodNameAST, ProcNameRaw.ProcParameter raw)
        {
            MethodNameAST = methodNameAST;
            ParameterRaw  = raw;

            MethodContext = this.MethodNameAST.MethodAST.MethodContext;
            FileContext   = this.MethodNameAST.MethodAST.ASTClass.FileContext;
        }
Example #3
0
 private ProcNameRaw.ProcParameter ParseProcArg()
 {
     ProcNameRaw.ProcParameter arg = new ProcNameRaw.ProcParameter();
     //arg.FileContext = this.fileMY.FileContext;
     if (tape.Current.IsKind(TokenKindKeyword.Ident))
     {
         arg.ParameterToken = (LexTokenText)tape.Current;
         tape.MoveNext();
     }
     if (arg.ParameterToken == null)
     {
         return(null);
     }
     return(arg);
 }
Example #4
0
 public ConstructorParameter(ProcConstructor constructorAST, ProcNameRaw.ProcParameter raw)
 {
     ConstructorAST = constructorAST;
     ParameterRaw   = raw;
 }