Exemple #1
0
        private PackageNameAST ParsePackageName(TokenTape tape)
        {
            PackageNameAST pname = new PackageNameAST();

            //TokenKind currentKind = tape.Current.Kind;
            while (IsPackageNamePart(tape.CurrentKind))
            {
                //currentKind = tape.Current.Kind;
                if (tape.CurrentKind == TokenKind.Ident)
                {
                    pname.Add(tape.Current);
                    tape.MoveNext();
                }
                else if (tape.CurrentKind == TokenKind.DIV)
                {
                    tape.MoveNext();
                }
                //else if (tape.CurrentKind == TokenKind.Semi)
                //{
                //    break;
                //}
                //else if (tape.CurrentKind == TokenKind.NewLine)
                //{
                //    break;
                //}
                //else
                //{
                //    tape.error(string.Format("'{0}'不是正确的开发包名称", tape.Current.GetText()));
                //    tape.MoveNext();
                //}
            }
            return(pname);
        }
Exemple #2
0
        private List <PackageNameAST> ParsePackageList()
        {
            List <PackageNameAST> list = new List <PackageNameAST>();

            while (IsImportPackagePart(tape.Current.Kind))
            {
                if (tape.Current.Kind == TokenKind.Ident)
                {
                    PackageNameAST pname = ParsePackageName(tape);
                    if (pname != null)
                    {
                        list.Add(pname);
                    }
                }
                else if (tape.CurrentKind == TokenKind.Comma)
                {
                    tape.MoveNext();
                }
                //else if (tape.CurrentKind == TokenKind.NewLine)
                //{
                //    SkipNewLine();
                //}
                //else
                //{
                //    tape.error(string.Format("'{0}'不是正确的导入名称", tape.Current.GetText()));
                //    tape.MoveNext();
                //}
            }
            if (tape.CurrentKind == TokenKind.Semi)
            {
                tape.MoveNext();
            }
            SkipNewLine();
            //tape.Match(TokenKind.Semi);
            return(list);
        }