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); }
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); }