Ejemplo n.º 1
0
        //private bool IsImportPackageNamePart(LexToken token)
        //{
        //    return token.IsKind(TokenKindKeyword.Ident)
        //        || token.IsKind(TokenKindSymbol.DIV)
        //        || token.IsKind(TokenKindSymbol.Comma);
        //}

        private SectionImportRaw.PackageRaw ParsePackageName(TokenTape tape)
        {
            SectionImportRaw.PackageRaw pname = new SectionImportRaw.PackageRaw();
            if (tape.HasCurrent)
            {
                if (tape.Current.IsKind(TokenKindKeyword.Ident))
                {
                    pname.Parts.Add((LexTokenText)tape.Current);
                    tape.MoveNext();
                    if (tape.HasCurrent)
                    {
                        if (tape.Current.IsKind(TokenKindSymbol.DIV))
                        {
                            ParsePackageNameBackPart(tape, pname);
                        }
                    }
                }
                else
                {
                    tape.error(string.Format("'{0}'不是正确的开发包名称", tape.Current.Text));
                    return(null);
                }
            }
            else
            {
                tape.error(string.Format("'{0}'没有开发包名称", tape.Current.Text));
                return(null);
            }
            return(pname);
        }
Ejemplo n.º 2
0
 private void ParsePackageNameBackPart(TokenTape tape, SectionImportRaw.PackageRaw pname)
 {
     while (tape.HasCurrent && tape.Current.IsKind(TokenKindSymbol.DIV))
     {
         tape.MoveNext();
         if (tape.Current.IsKind(TokenKindKeyword.Ident))
         {
             pname.Parts.Add((LexTokenText)tape.Current);
             tape.MoveNext();
         }
         else
         {
             tape.error(string.Format("'{0}'没有开发包名称", tape.Current.Text));
         }
     }
 }
Ejemplo n.º 3
0
        private List <SectionImportRaw.PackageRaw> ParsePackageList()
        {
            List <SectionImportRaw.PackageRaw> list = new List <SectionImportRaw.PackageRaw>();

            while (tape.HasCurrent && !tape.Current.IsKind(TokenKindSymbol.EOF))
            {
                if (tape.Current.IsKind(TokenKindKeyword.Ident))
                {
                    SectionImportRaw.PackageRaw pname = ParsePackageName(tape);
                    if (pname != null)
                    {
                        list.Add(pname);
                    }
                }
                else if (tape.Current.IsKind(TokenKindSymbol.Comma))
                {
                    tape.MoveNext();
                }
                else
                {
                    tape.error(string.Format("'{0}'不是正确的导入名称", tape.Current.Text));
                    tape.MoveNext();
                }
                //else if (tape.CurrentKind == TokenKind.NewLine)
                //{
                //    SkipNewLine();
                //}
                //else
                //{
                //    tape.error(string.Format("'{0}'不是正确的导入名称", tape.Current.GetText()));
                //    tape.MoveNext();
                //}
            }
            //if (tape.CurrentKind == TokenKindSymbol.Semi)
            //{
            //    tape.MoveNext();
            //}
            //SkipNewLine();
            //tape.Match(TokenKind.Semi);
            return(list);
        }