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 MethodParameter(MethodName methodNameAST, ProcNameRaw.ProcParameter raw) { MethodNameAST = methodNameAST; ParameterRaw = raw; MethodContext = this.MethodNameAST.MethodAST.MethodContext; FileContext = this.MethodNameAST.MethodAST.ASTClass.FileContext; }
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); }
public ConstructorParameter(ProcConstructor constructorAST, ProcNameRaw.ProcParameter raw) { ConstructorAST = constructorAST; ParameterRaw = raw; }