• 沒有找到結果。

第五章 雛形系統結果

第三節 研究建議

本研究只找出物件導向中,方法呼叫方法的關係,若要考慮物 件導向的完整性,需要再分析類別繼承,方法重製等關係。

B. 建立瀏覽程式碼的主題地圖

本研究的主題地圖使用樹狀與網狀結構來展示。對於程式庫而 言,樹狀結構無法清楚表示程式庫關係。網狀可以較清楚表示,但 是若程式碼太多、太大彼此關係的連線就會太複雜,不易看清楚,

在未來的研究可再思考主題視覺化的部份,怎樣的圖形適合程式庫 的展示。

參考文獻

[1] Khalil Ahmed, 2001, Developing a Topic Map Programming Model, In Knowledge Technologies 2001,

http://www.idealliance.org/papers/xml2001/papers/html/05-04-0 3.html

[2] Tom Archer, 陳力維譯, 2001, 完全剖析 C#, 華彩軟體股份有限公司 [3] Le Grand, B., Soto, M., 2000, Information management – Topic Maps

visualization, XML Europe 2000, Paris, France,

http://www.gca.org/papers/xmleurope2000/papers/s29-03.html [4] Shneiderman, B., 1996, The Eyes Have It: A Task by Data Type

Taxonomy for Information Visualizations, In Proceedings IEEE Visual Languages, Pages 336-343

[5] Grady Booch, James Rumbaugh, Ivar Jacobson, 張裕益譯, 2001, UML 使用手冊, 博碩文化股份有限公司

[6] Lovanto, M. E., Kleyn M. F, 1995, Parser visualizations for developing grammars with yacc. In Proceedings of the 26th Technical Symposium on Computer Science Education, Pages 345-349 [7] Martin Fowler, 2000, Refactoring, Addison-Wesley

[8] Geir Ove Genmo, 2002, Automagic Topic Maps,

http://www.idealliance.org/papers/xmle02/dx_xmle02/index/orga nisation/d0e31428.html

[9] Le GRAND, B., SoTo M., 2002, Visualisation of the Semantic Web:

Topic Maps Visualisation, International Conference on

Information Visualisation, London, UK, IEEE Computer Society, Pages 344-351

[10]Le Grand, B., Soto, M., 2001, XML Topic Maps and Semantic Web Mining, Semantic Web Mining Workshop, ECML/PKDD 2001 conference, Freiburg, Germany

[11]Andrew Haigh, 鄭雯妮譯, 2002, 物件導向程式設計與分析, 美商麥格 羅.希爾國際股份有限公司 臺灣分公司

[12]Jiawei Han, Micheline Kamber, 2001, Data Mining Concepts and Techniques, Academic Press

Pages 45-49

[14]Chouyin Hsu, Duen-Ren Liu, 2002, Towards a Framework for Discovering Project-based Knowledge Maps, In Proceedings of The Second International Conference on Electronic Business, Taipei, Taiwan

[15]Alan Kaplan and Denise Shoup, 2000, CUPV - A Visualization Tool for Generated Parsers,Proceedings of the thirty-first SIGCSE technical symposium on Computer science ducation 2000, Austin, Texas, United States

[16]GRAIG LARMAN , 趙光正譯, 2002, UML 與樣式徹底研究-物件導向分析 與設計以及統一流程入門, 臺灣培生教育出版股份有限公司

[17]Bruls, M., Huizing, K., van Wijk, J. J., 2000, Squarified Threemaps,

http://friendshipvillage2.homestead.com/ThreeMaps.html [18]Davison, M. L., 1992, Multidimensional scaling, Krieger

Publishing Company

[19]Amir Michail, 2000, Data Mining Library Reuse Patterns using generalized Association Rules, In Proceedings of the 22nd International Conference on Software Engineering

[20]Mondeca, 2001, Topic Navigator

http://www.mondeca.com/site/products/products.html

[21]Fred Nickols, 2000, The Knowledge in Knowledge Management, http://home.att.net/~nickols/Knowledge_in_KM.htm

[22]Ontopia, 2001, Ontopia Topic Map Navigator, http://www.ontopia.net/solutions/navigator.html

[23]Roth, G. and Kleiner, A., 1998, Developing organizational memory through learning histories, Organizational Dynamics, Autumn, 1998, Pages 43-59

[24]Kaski, S., Honkela, T., Lagus, K., Kohonen, T., 1997, WEBSOM – self_organizing maps of document collections, In Proc. of Workshop on Self-Organizing Maps 1997 (WSOM'97), Espoo, Finland, June 1997

[25]Will Tracz, 1995, Confessions of a Used Program Saleman:

Institutionalizing Software Reuse, Addison-Wesley

[26]Fu, Y., 1997, Data mining Tasks, techniques and applications, IEEE Potentials, Vol. 16, No. 4, Pages 18-20

[27]http://java.sun.com/j2se/javadoc/

Core Java Javadoc Tool

[28]http://java.sun.com/j2se/1.4/docs/api/index.html

JavaTM 2 Platform, Standard Edition, v 1.4.2 API Specification [29]http://msdn.microsoft.com

Microsoft MSDN Home Page

[30]http://www.cartia.com/products/index.html ThemeScape Product Suite

[31]http://custom.lab.unb.br/pub/plan/c/iecc/file/c++grammar/

James A. Roskind 的 yacc 與 lex 相關資料

[32]http://www.mtl2600.org/articles/article.php3?id_article=6 Introduction Lex and Yacc

[33]http://www.topicmap-design.com/

topicmap-design.com (a site with tools and information about topic maps)

[34]http://www.topicmaps.org/xtm/1.0/

XML Topic Maps (XTM) 1.0 TopicMaps.Org Specification

[35]王冠生,2000,以 UML 為基礎的軟體程序模擬架構,元智大學電機暨資 訊工程研究所

[36]張裕益,2002,UML 理論與實作 - 個案討論與經驗分享,博碩文化股 份有限公司

[37]曾吾洲,2001,資訊地圖:以軟體工程標準為例,元智大學資訊工程研 究所

[38]劉宜妝,2002,資料採礦之應用研究 台灣地區漁市場行情資料庫之關 聯法則分析,國立中興大學行銷學系

附錄 A

%{

/* Copyright (C) 1989-1991 James A. Roskind, All rights reserved.

This lexer description was written by James A. Roskind. Copying of this file, as a whole, is permitted providing this notice is intact and applicable in all complete copies. Direct translations as a whole to other lexer generator input languages (or lexical description languages) is permitted provided that this notice is intact and applicable in all such copies, along with a disclaimer that the contents are a translation. The reproduction of derived files or text, such as modified versions of this file, or the output of scanner generators, is permitted, provided the resulting work includes the copyright notice "Portions Copyright (c) 1989, 1990 James A. Roskind". Derived products must also provide the notice "Portions Copyright (c) 1989, 1990 James A. Roskind" in a manner appropriate to the utility, and in keeping with copyright law (e.g.: EITHER displayed when first invoked/executed; OR displayed continuously on display terminal; OR via placement in the object code in form readable in a printout, with or near the title of the work, or at the end of the file). No royalties, licenses or commissions of any kind are required to copy this file, its translations, or derivative products, when the copies are made in compliance with this notice. Persons or corporations that do make copies in compliance with this notice may charge whatever price is agreeable to a buyer, for such copies or derivative works. THIS FILE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.

James A. Roskind Independent Consultant 516 Latania Palm Drive standard until such time as a better standard is accessible. The only way to get it to become a standard, is to be sure that people know that derivations are based on a specific work. The intent of releasing this Flex input file is to facilitate experimentation with my C++ grammar. The intent of the copyright notice is to allow arbitrary commercial and non-commercial use of this file, as long as reference is given to my standardization effort. Without reference to a specific standard, many alternative grammars would develop. By referring to the standard, the C++ grammar is given publicity, which should lead to further use in compatible products and systems. The benefits of such a standard to commercial products (browsers, beautifiers, translators, compilers, ...) should be obvious to the

aware of the value of acquiring a fairly complete grammar for a language, and the copyright notice (and the resulting affiliation with my work) should not be too high a price to pay. By copyrighting my work, I have some minor control over what this standard is, and I can (hopefully) keep it from degrading without my approval. I will consistently attempt to provide upgraded grammars that are compliant with the current art, and the ANSI C++ Committee recommendation in particular. A developer is never prevented from modifying the grammar or this file to improve it in whatever way is seen fit. There is also no restriction on the sale of copies, or derivative works, providing the request in the copyright notice are satisfied.

If you are not "copying" my work, but are rather only abstracting some of my work, an acknowledgment with references to such a standard would be appreciated. Specifically, agreements with my grammar and its resolution of otherwise ambiguous constructs, should be noted.

Simply put: "make whatever use you would like of the grammar and this file, but include the ``portions Copyright ...'' as a reference to this standard."

*/

/* Last modified 7/4/91, Version 2.0 */

/* File cpp5.l, becomes lex.yy.c after processing by FLEX */

/* This file is a dramatically cut down version of the FLEX input file used in my ANSI C Preprocessor. The executable version of my preprocessor is available on many platforms (shareware), but this is the only source extract that is currently being distributed. If you need a full ANSI C preprocessor, with extensive diagnostic capabilities and customization facilities, please contact me at the addresses given above. Current platforms include IBMPC (DOS/OS2), Sun (SPARC and Motorola), and IBM R/6000. ... end of commercial announcement.

This file is being distributed to facilitate experimentation and use of my C and C++ grammar.

Comment removal must be done during the lexing, as context (such as enclosure in string literals) must be observed. For this cut-down lexer, we will assume that comments have been removed (don't assume this if you are writing a compiler or browser!).

/* For each IDENTIFIER like string that is found, there are several distinct interpretations that can be applied:

1) The preprocessor may interpret the string as a "keyword" in a directive (eg: "pragma" or "include", "defined").

2) The parser may interpret the string as a keyword. (eg: "int").

3) Both parser and preprocessor may interpret the string as a keyword (eg: "if").

Since this file is based on source that actually lexically analyses text for both preprocessing and parsing, macro definitions were used throughout. The macro definitions supplied here have been customized to a C++ parse only, and all preprocessor keywords are passed as

segments are parsed using my grammar. Unfortunately, if you really want to parse major league code, you have to write a symbol table, and maintain appropriate scoping information.

*/

/* Included code before lex code */

/*************** Includes and Defines *****************************/

#include "y.tab.h" /* YACC generated definitions based on C++ grammar */

typedef char * YYSTYPE; /* interface with lexer: should be in header file*/

char * yylval; /* We will always point at the text of the lexeme.

This makes it easy to print out nice trees when YYDEBUG is enabled. (see C++ grammar file and its definition of YYDEBUG_LEXER_TEXT to be "yylval" */

#define WHITE_RETURN(x) /* do nothing */

#define NEW_LINE_RETURN() WHITE_RETURN('\n')

#define PA_KEYWORD_RETURN(x) RETURN_VAL(x) /* standard C PArser Keyword */

#define CPP_KEYWORD_RETURN(x) PA_KEYWORD_RETURN(x) /* C++ keyword */

#define PPPA_KEYWORD_RETURN(x) RETURN_VAL(x) /* both PreProcessor and PArser keyword */

#define PP_KEYWORD_RETURN(x) IDENTIFIER_RETURN()

#define IDENTIFIER_RETURN() RETURN_VAL(isaTYPE(yytext)?TYPEDEFname:IDENTIFIER)

#define PPOP_RETURN(x) RETURN_VAL((int)*yytext) /* PreProcess and Parser operator */

#define NAMED_PPOP_RETURN(x) /* error: PreProcessor ONLY operator; Do nothing */

#define ASCIIOP_RETURN(x) RETURN_VAL((int)*yytext) /* a single character operator */

#define NAMEDOP_RETURN(x) RETURN_VAL(x) /* a multichar operator, with a name */

#define NUMERICAL_RETURN(x) RETURN_VAL(x) /* some sort of constant */

#define LITERAL_RETURN(x) RETURN_VAL(x) /* a string literal */

#define RETURN_VAL(x) yylval = yytext; return(x);

%}

identifier [a-zA-Z_][0-9a-zA-Z_]*

exponent_part [eE][-+]?[0-9]+

fractional_constant ([0-9]*"."[0-9]+)|([0-9]+".")

floating_constant (({fractional_constant}{exponent_part}?)|([0-9]+{exponent_part}))[FfLl]?

integer_suffix_opt ([uU]?[lL]?)|([lL][uU]) decimal_constant [1-9][0-9]*{integer_suffix_opt}

octal_constant "0"[0-7]*{integer_suffix_opt}

hex_constant "0"[xX][0-9a-fA-F]+{integer_suffix_opt}

simple_escape [abfnrtv'"?\\]

octal_escape [0-7]{1,3}

hex_escape "x"[0-9a-fA-F]+

escape_sequence [\\]({simple_escape}|{octal_escape}|{hex_escape})

h_tab [\011]

form_feed [\014]

v_tab [\013]

c_return [\015]

horizontal_white [ ]|{h_tab}

%%

{horizontal_white}+ {

WHITE_RETURN(' ');

}

({v_tab}|{c_return}|{form_feed})+ { WHITE_RETURN(' ');

}

({horizontal_white}|{v_tab}|{c_return}|{form_feed})*"\n" { NEW_LINE_RETURN();

void {PA_KEYWORD_RETURN(VOID);}

{decimal_constant} {NUMERICAL_RETURN(INTEGERconstant);}

{octal_constant} {NUMERICAL_RETURN(OCTALconstant);}

{hex_constant} {NUMERICAL_RETURN(HEXconstant);}

{floating_constant} {NUMERICAL_RETURN(FLOATINGconstant);}

"L"?[']{c_char}+['] {

"->" {NAMEDOP_RETURN(ARROW);}

/* I won't bother to provide any error recovery. I won't even handle unknown characters */

/*******************************************************************/

int isaTYPE(string) char * string;

相關文件