private ProcNameRaw ParseProcName() { ProcNameRaw procName = new ProcNameRaw(); while (tape.HasCurrent) { if (tape.Current.IsKind(TokenKindSymbol.LBS)) { var bck = ParseProcBracket(); if (bck != null) { procName.NameTerms.Add(bck); } } else if (tape.Current.IsKind(TokenKindKeyword.Ident)) { ProcNameRaw.NameText pt = new ProcNameRaw.NameText(); pt.TextToken = (LexTokenText)tape.Current; procName.NameTerms.Add(pt); tape.MoveNext(); } else if (tape.Current.IsKind(TokenKindSymbol.Colon)) { break; } else { tape.error("错误的过程名称"); break; } } return(procName); }
public void Analy() { NameParts.Clear(); for (int i = 0; i < NameRaw.NameTerms.Count; i++) { var term = NameRaw.NameTerms[i]; if (term is ProcNameRaw.NameBracket) { var pbrackets = (ProcNameRaw.NameBracket)term; List <MethodParameter> mps = new List <MethodParameter>(); foreach (var item in pbrackets.Parameters) { MethodParameter mp = new MethodParameter(this, item); mp.Analy(); mps.Add(mp); } NameParts.Add(mps); } else if (term is ProcNameRaw.NameText) { ProcNameRaw.NameText t = (ProcNameRaw.NameText)term; string text = t.TextToken.Text; NameParts.Add(text); } else { throw new CCException(); } } }