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