private List <SectionDim.DimVarAST> ParseDimList() { List <SectionDim.DimVarAST> list = new List <SectionDim.DimVarAST>(); while (tape.CurrentKind != TokenKind.NewLine && tape.CurrentKind != TokenKind.EOF) { if (tape.Current.Kind == TokenKind.Ident) { SectionDim.DimVarAST dimv = ParseDimVar(tape); if (dimv != null) { list.Add(dimv); } } if (tape.CurrentKind == TokenKind.NewLine) { break; } else if (tape.CurrentKind == TokenKind.Comma) { tape.MoveNext(); } else { tape.error(string.Format("'{0}'不是正确的声明", tape.Current.GetText())); tape.MoveNext(); } } return(list); }
private SectionDim.DimVarAST ParseDimVar(TokenTape tape) { SectionDim.DimVarAST dimv = new SectionDim.DimVarAST(); dimv.NameToken = tape.Current; tape.MoveNext(); tape.Match(TokenKind.Assign); dimv.TypeToken = tape.Current; tape.MoveNext(); return(dimv); }