Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 99 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
99
Dung lượng
1,67 MB
Nội dung
TR NG I H C KHOA H C T NHIÊN KHOA CÔNG NGH THÔNG TIN B MÔN CÔNG NGH PH N M M D NG NG C DUY PHAN QUANG HI U CÂY CÚ PHÁP TR U T VÀ NG (AST) NG D NG TRONG WEB IDE KHÓA LU N T T NGHI P C TP HCM, 2013 NHÂN CNTT TR NG I H C KHOA H C T NHIÊN KHOA CÔNG NGH THÔNG TIN B MÔN CÔNG NGH PH N M M D NG NG C DUY - 0912057 PHAN QUANG HI U - 0912148 CÂY CÚ PHÁP TR U T VÀ NG (AST) NG D NG TRONG WEB IDE KHÓA LU N T T NGHI P C GIÁO VIÊN H NHÂN CNTT NG D N PGS.TS TR N AN TH KHÓA 2009 – 2013 NH N XÉT C A GIÁO VIÊN H NG D N ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… TP H Chí Minh, ngày … tháng …… n m 2013 Giáo viên h i ng d n NH N XÉT C A GIÁO VIÊN PH N BI N ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… Khóa lu n đáp ng yêu c u c a Khóa lu n c nhân CNTT TP H Chí Minh, ngày … tháng …… n m 2013 Giáo viên ph n bi n ii L IC M N Chúng em xin chân thành c m n Khoa Công ngh Thông tin, tr ng ih c Khoa h c T nhiên TP H Chí Minh t o u ki n cho chúng em th c hi n đ tài khóa lu n t t nghi p Chúng em xin g i l i c m n sâu s c đ n PGS.TS Tr n tr c ti p h an Th , ng i ng d n t n tình ch b o chúng em su t th i gian th c hi n đ tài Th y truy n đ t cho chúng em nhi u ki n th c quan tr ng c ng nh đ nh h ng đ chúng em có th hoàn thành khóa lu n Chúng em xin chân thành c m n quý Th y Cô Khoa cho chúng em nh ng ki n th c quý báu su t th i gian khóa h c, cho chúng em m t n n t ng lý thuy t v ng ch c nh ng k thu t c b n thi t y u c m n anh ng Hoàng H i, anh Tr n Thanh H i anh c bi t chúng em mu n Nguyên Kha giúp đ t n tình trình th c hi n đ tài Chúng xin chân thành c m n b m , anh ch em t t c ng i thân gia đình t o m i u ki n t t nh t, đ ng viên khích l chúng trình h c t p nói chung trình làm khóa lu n t t nghi p nói riêng M c dù chúng em c g ng hoàn thành lu n v n ph m vi kh n ng cho phép, nh ng ch c ch n s không tránh kh i nh ng thi u sót, kính mong s c m thông t n tình ch b o c a quý Th y Cô b n Tp H Chí Minh, tháng n m 2013 Nhóm sinh viên D i ng Ng c Duy – Phan Quang Hi u Khoa Công Ngh Thông Tin B môn Công Ngh Ph n M m C NG CHI TI T Tên đ tài: Tìm hi u cú pháp tr u t Giáo viên h ng ng d ng ng d n: PGS.TS Tr n an Th Th i gian th c hi n: T ngày 01/12/2012 đ n 25/06/2013 Sinh viên th c hi n: 0912057 – D ng Ng c Duy 0912148 – Phan Quang Hi u Lo i đ tài: Nghiên c u lý thuy t Áp d ng lý thuy t v i tìm hi u công ngh đ xây d ng ng d ng minh h a N i dung đ tài: N i dung yêu c u đ tài Tìm hi u v c u trúc, tính ch t c a cú pháp tr u t ng Nghiên c u t ng h p hi n tr ng công c ng d ng cú pháp tr u t ng môi tr desktop môi tr ng phát tri n tích h p môi tr ng truy n th ng ng web Xây d ng mô hình cho tính n ng ng d ng cú pháp tr u t ng đ h tr vi c so n th o mã ngu n web C th nh c mã ngu n, báo l i mã ngu n th i gian th c, tái c u trúc mã ngu n, phân tích t nh mã ngu n ii Xây d ng công c minh h a tính n ng áp d ng cú pháp tr u t môi tr Ph ng ng web ng pháp th c hi n Phát tri n d a h th ng web IDE có s n Phát tri n h th ng d a thành ph n mi n phí mã ngu n m Th c hi n báo cáo ti n đ h ng tu n v i giáo viên h Tài li u hóa b ng d n c th c hi n, tài li u tham kh o kh o sát làm c s cho khóa lu n K t qu khóa lu n: Xây d ng thành công mô hình công c minh h a ch c n ng s d ng cú pháp tr u t ng h th ng hi n t i Báo cáo t ng h p lý thuy t v cú pháp tr u t h ng phát tri n t ng ng d ng c a ng lai K ho ch th c hi n: 01/12/2012 – 31/12/2012: Liên h giáo viên h ng d n, nh n tìm hi u đ tài 01/01/2012 – 31/01/2012: Tìm hi u công ngh ki n trúc h th ng hi n t i o Tu n 1, : Tìm hi u v công ngh web th i gian th c o Tu n 3, 4: Tìm hi u ki n trúc h th ng hi n t i server, client cách th c liên l c gi a chúng 01/02/2013 – 31/03/2013: Xây d ng mô hình m u o Tu n 1: Tìm hi u th vi n chuy n đ i mã ngu n thành cú pháp tr u t ng c a JDT; iii o Tu n 2, 3: Tìm hi u th vi n Javascript chuy n đ i mã ngu n thành cú pháp tr u t ng o Tu n 4: Tìm hi u cài đ t Clang lên máy ch hi n t i ; o Tu n 5: Tìm hi u th vi n Clang đ th c hi n vi c nh c mã ngu n; o Tu n 6, 7, 8: Xây d ng mô hình nh c mã ngu n th nghi m 01/04/2013 – 01/06/2013: Phát tri n ng d ng minh h a o Tu n 1, 2, 3: Xây d ng thêm thành ph n c a máy ch web; o Tu n 4, 5, 6: Xây d ng thêm thành ph n x lý trình t; o Tu n 7, 8, 9: Xây d ng thêm thành ph n giao di n 01/06/2013 – 25/06/2013: T ng h p k t qu vi t báo cáo Xác nh n c a GVHD Ngày 20 tháng n m 2013 Nhóm sinh viên th c hi n Tr n an Th D iv ng Ng c Duy Phan Quang Hi u M CL C L I C M N i M CL C .v DANH M C THU T NG VÀ CÁC T VI T T T ix DANH M C CÁC HÌNH xi TÓM T T KHÓA LU N xiv CH NG M U 1.1 Vai trò, ý ngh a c a môi tr 1.2 Môi tr ng phát tri n tích h p ng phát tri n tích h p web tính ti n d ng cho ng i dùng2 1.3 M c tiêu nghiên c u 1.4 it ng nghiên c u 1.5 Ph m vi đ tài .3 1.6 C u trúc báo cáo khóa lu n CH NG QUÁ TRÌNH BIÊN D CH MÃ NGU N 2.1 Trình biên d ch .5 2.2 Chi ti t ba gian đo n đ u c a trình phân tích 2.2.1 Phân tích t v ng (lexical analysis) 2.2.2 Phân tích cú pháp (syntax analysis) .9 2.2.3 Phân tích ng ngh a (semantic analysis) 11 CH NG CÂY CÚ PHÁP TR U T NG 12 3.1 Khái ni m 12 3.2 c tr ng c a cú pháp tr u t ng .13 3.3 Các công c chuy n đ i mã ngu n thành AST 15 v 3.4 ng d ng 15 3.4.1 Nh c mã ngu n 15 3.4.2 Phát hi n l i mã ngu n th i gian th c .15 3.4.3 Cây phác th o mã ngu n th i gian th c 17 3.4.4 Tìm ki m mã ngu n (search code) 17 3.4.5 T i u hóa mã ngu n (code optimizer) .17 3.4.6 S đ l p đ i t ng (class diagram) 18 3.4.7 Tái c u trúc mã ngu n (refactoring) 18 CH NG NG D NG NH C MÃ NGU N D A TRÊN AST 19 4.1 T ng quan công c nh c mã ngu n .19 4.1.1 Các công c nh c mã ngu n desktop 19 4.1.2 Các công c nh c mã ngu n môi tr ng web 20 4.2 Nh ng khái ni m v ngôn ng l p trình liên quan đ n nh c mã ngu n 21 4.2.1 Th c th , đ nh danh 21 4.2.2 Ph m vi môi tr ng tham chi u 21 4.2.3 Kh n ng truy c p (accessibility) 23 4.2.4 K th a ngôn ng h ng đ i t ng (inheritance) 23 4.3 Vai trò c a AST 24 4.3.1 L y thông tin c u trúc c a mã ngu n 24 4.3.2 Tìm nút hi n t i c a v trí nh c 24 4.3.3 Tìm ph m vi c a v trí nh c .24 4.4 Nh ng lo i đ i t ng dùng đ nh c cho ng i dùng 24 4.4.1 T khóa c a ngôn ng l p trình 24 4.4.2 Mã ngu n m u 26 vi B c đ u th nghi m cho th y ng d ng có kh n ng ho t đ ng t t v i nhi u trình t web khác c ng nh m t s máy tính b ng n tho i thông minh Công c nh n đ c ph n h i tích c c, đóng góp nh ng ý ki n đ c i thi n ch c n ng giao di n c a công c : Cách t ng tác ph i g n gi ng v i IDE có C th nh tính n ng t o t p tin theo m t m u có s n giành riêng cho t ng ngôn ng , h tr tính n ng tái c u trúc mã ngu n; H tr tính n ng build debug: Phiên b n th c hi n d a m t phiên b n c nên tính n ng ch a đ c tích h p vào h th ng th nghi m; H tr thêm nhi u ngôn ng l p trình Hình 5-19 Giao di n công c máy tính b ng Nenus 67 CH NG 6.K T QU VÀ H Ch NG PHÁT TRI N ng s trình bày k t qu đ t đ d a vào cú pháp tr u t c ph ng Các k t qu đ t đ t s đ ng h ng phát tri n c đánh giá l i so v i m c tiêu ban đ u đ 6.1 K t qu khóa lu n 6.1.1 Ki n th c tìm hi u đ c Trong trình th c hi n khóa lu n: Ki n th c v cú pháp tr u t ng m i liên h v i trình biên d ch mã ngu n: o Quá trình biên d ch, phân tích mã ngu n; o C u trúc c a cú pháp tr u t ng; o M i liên h gi a mã ngu n cú pháp tr u t o M ts ng d ng c a cú pháp tr u t ng; ng Ki n th c v công c h tr nh c mã ngu n: o Các trình nh c mã ngu n h u hành khác nhau; o Ch c n ng h tr nh c mã ngu n môi tr tích h p môi tr ng phát tri n ng desktop truy n th ng môi tr o Giao ti p máy gi a môi tr ng web; ng phát tri n tích h p công c h tr nh c mã ngu n c a Java – JDT h tr , C/C++ – Clang h tr Ki n th c phát tri n ng d ng web: o Ngôn ng l p trình JavaScript máy ch trình t web; o Ph ng pháp l p trình h ng s ki n k t h p nh p xu t b t đ ng b v i JavaScript; o Các k thu t xây d ng web th i gian th c: Ajax long-polling, WebSocket; o Mô hình MVC cho ng d ng trình t web Th c hành k thu t phát tri n ph n m m 68 o Các k n ng phân tích, thi t k ph n m m cách s d ng lo i s đ ph c v trình th c hi n khóa lu n; o Tái s d ng thành ph n có s n t n d ng ph n mã ngu n m ho c mi n phí 6.1.2 So sánh m c tiêu ban đ u k t qu đ t đ M c tiêu ban đ u c K t qu đ t đ c LÝ THUY T Tìm hi u cú pháp tr u t ng ng d ng t yêu c u Hi u đ tr u t c cú pháp ng, c ng nh trình x lý t o cú pháp tr u t t ng Bi t đ c ng d ng c a cú pháp tr u ng hi n tr ng c a ng d ng môi tr ng desktop web CÔNG C MINH H A Công c minh h a môi tr h tr ng web t yêu c u, có kh n ng đ a g i vi c so n th o mã ngu n b ng ý cho ng ngôn ng Java C/C++ i dùng l a ch n m t cách tr c quan mã ngu n t ng ng Ngoài có tính n ng h tr khác nh báo l i mã ngu n th i gian th c hi n th phác th o mã ngu n th i gian th c H tr đ hai lo i ngôn ng c l p trình Java C/C++ B ng 6-1 B ng so sánh m c tiêu ban đ u k t qu đ t đ So sánh v i m c tiêu ban đ u, công c th c hi n đ c c ch c n ng c b n c a m t công c h tr cho vi c so n th o mã ngu n b ng ngôn ng Java C/C++ Công c có kh n ng đ ngh g i ý cho ng i dùng, hi n th l i v cú pháp phác th o mã ngu n m t cách tr c quan mã ngu n t 69 ng ng th i gian th c Các tính n ng đ c thêm vào môi tr nh m m c đích t o thêm tính ti n d ng cho ng Công c t ng phát tri n tích h p web i dùng ng thích v i t t c trình t chu n desktop bao g m: Internet Explorer (phiên b n tr lên), Mozilla Firefox, Google Chrome, Apple Safari, Opera… Do đ c xây d ng n n t ng web, đa s tính n ng c a h th ng c ng có kh n ng ch y đ c c thi t b di đ ng nh n tho i thông minh máy tính b ng h tr trình t web Nh t n d ng đ đ c k t qu c a khóa lu n tr c nên công c đ c tích h p c th c hi n nhanh h n so v i vi c ph i xây d ng l i t đ u Tuy nhiên t n nhi u th i gian cho vi c tìm hi u, h tr cho hai ngôn ng l p trình Java C/C++ nên công c hi n t i ch cung c p ng d ng c b n c a cú pháp tr u t ng, ng d ng khác ch a đ nh t cho ng c xây d ng đ y đ đ mang l i s ti n d ng i dùng Các tính n ng phát tri n h tr t t cho ng i dùng s d ng trình t web cho desktop Các thi t b di đ ng s gi i h n v kích th c c a thi t b nh p li u nên m t s tính n ng s không đ ng i dùng 6.2 H c h tr t t cho ng phát tri n ng d ng c a Cây cú pháp tr u t ng r t đa d ng, nh c mã ngu n ch m t nh ng ng d ng c a Công c h tr nh c mã ngu n m t thành ph n môi tr ng phát tri n tích h p môi tr ng web Các h ng phát tri n đ a đ c p v công c h tr nh c mã ngu n c ng nh kh n ng tích h p phát tri n tính n ng khác nh m t o nhi u l i ích cho ng 6.2.1 H p nh t v i môi tr ng phát tri n tích h p web Công c xây d ng đ minh h a đ n m 2013 c a h th ng môi tr khóa lu n An i dùng c phát tri n đ c l p phiên b n tháng ng phát tri n tích h p web (s n ph m c a ng Hoàng H i Tr n Thanh H i (1) & khóa lu n Nguy n ình V nh Nguyên Kha (2)) Trong th i gian h th ng có v n ti p t c phát tri n song song tách bi t v i khóa lu n t t nghi p c a Do 70 t ng lai công c c n đ c h p nh t v i môi tr ng phát tri n tích h p web có thành m t s n ph m hoàn ch nh; 6.2.2 C i ti n công c phân tích mã ngu n Vi c s d ng th vi n h tr bên ngoài; sau vi t thêm, ch nh s a đ phù h p v i m c tiêu c a khóa lu n có th ch a bao ph h t t t c tr ng h p có th x y c n t i u t c đ , c i ti n công c phân tích mã ngu n Vi c phát tri n không d ng l i, mu n phát tri n ph tr u t ng pháp xây d ng cú pháp ng có kh n ng thay đ i theo so v i mã ngu n hi n t i mà không c n ph i d ng l i t đ u (4), theo dõi tr ng thái c a cú pháp tr u t phát hi n l i có th x y đ c nh báo cho ng i dùng, t đ ng s a l i đ n gi n có yêu c u, ph c h i l i tr ng thái n đ nh tr 6.2.3 Kh n ng ph c v s l Trên môi tr ng l n ng ng web r t nhi u ng c i dùng i dùng s d ng m t th i m, kh n ng m r ng c a h th ng c n đ máy ch đ ng, có d đoán đ c u tiên Hi n t i thành ph n c a c t ng h p thành m t kh i m t máy đ n l , kh n ng ph c v m t s l ng l n ng i dùng m t lúc: c n tách bi t ho t đ ng c a máy ch web ti n trình ng d ng c a ng i dùng, c ng nh th c hi n cân b ng t i gi a máy ch h th ng Các phiên làm vi c c a ng iđ c cân b ng t i nh ng h th ng th c thi (worker) riêng bi t, máy ch web th c hi n vi c chuy n ti p gi a trình t h th ng th c thi Bên c nh đó, t i máy th c thi công ngh o hóa t ng ph n đ c áp d ng đ t ng kh n ng đ c l p c ng nh b o m t c a h th ng; 6.2.4 H tr nhi u ngôn ng n n t ng Hi n t i công c ch m i h tr ng d ng Java C/C++, v i s đ c l p v n n t ng c a web, lý thuy t kh n ng m r ng c a công c đ h tr nhi u ngôn ng h n hoàn toàn kh thi v i s b sung module v i giao di n đ c xây d ng Tuy nhiên ph m vi khóa lu n, không đ th i gian đ th nghi m th c t vi c h tr nhi u ngôn ng khác nhau, b công c n n 71 t ng khác Bên c nh C/C++, Java ngôn ng l p trình khác nh C#, VB.NET, Python, Ruby… r t ph bi n đ xây d ng ng d ng đ xây d ng m t môi tr ng phát tri n tích h p hoàn ch nh cho phép th c hi n toàn b pha c a trình phát tri n ph n m m môi tr 72 ng web TÀI LI U THAM KH O [1] [2] Aho Alfred V., Sethi Ravi., and Ullman., Jeffrey D., Compilers: Principles, Techniques and Tools, 2006 Robert W Sebesta, “Concepts of Progarming Languages”, 10th Edition [3] Tim A Wagner and Susan L Graham, “Incremental Analysis of Real Programming Languages” [4] Romain Robbes and Michele Lanza, “Improving Code Completion with Program History” [5] Marcel Bruch, Martin Monperrus, and Mira Mezini, “Learning from Examples to Improve Code Completion Systems” [6] Ziv Bar-Yossef and Naama Kraus, “Context-Sensitive Query AutoCompletion” [7] ng Hoàng H i and Tr n Thanh H i, "Xây d ng phát tri n ng d ng h tr so n th o, biên d ch th c thi ch ng trình môi tr ng Web”, 2011 [8] Nguyên Kha and Nguy n ình V nh An, “Xây d ng công c web h tr tìm l i ng d ng C/C++”, 2012 [9] Greg Little and Robert C Miller, “Code Completion using Keyword Queries in Java [10] Martin Stubenschrott, “A context sensitive code completion system for the C and C++ programming languages.” [11] The Java® Language Specification Java SE Edition, 2013 [12] Eclipse Java development tools [Online] http://www.eclipse.org/jdt/ [13] Node.js About - Node.js [Online] http://nodejs.org/about/ [14] “Lu t s 50/2005/QH11 Lu t s h u trí tu ” [15] “Lu t s 36/2009/QH12 c a Qu c h i: Lu t s a đ i, b sung m t s u 73 c a Lu t s h u trí tu ” [16] Smith, Brian Cantwell, Massachusetts Institute of Technology Dept of Electrical Engineering and Computer Science, “Procedural reflection in programming languages” 74 PH L C A.1 Cài đ t công c h tr A.1.1 Biên d ch LLVM Clang A.1.1.1 Yêu c u h th ng H u hành h Unix, c th h u hành nhân Linux; ã cài đ t s n m t s ng d ng h tr nh GNU Make, GCC, SVN, Python A.1.1.2 Các b c chu n b mã ngu n LLVM Clang u tiên ta c n xác đ nh n i đ l u tr mã ngu n đ c l y t kho l u tr c a LLVM Clang Gi s n i l u tr mã ngu n llvm /root L y mã ngu n LLVM S d ng l nh cd môi tr ng dòng l nh đ đ n th m c l u tr mã ngu n llvm svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm L y mã ngu n Clang cd llvm/tools svn co http://llvm.org/svn/llvm-project/cfe/trunk Clang cd / L y mã ngu n công c m r ng cho Clang cd llvm/tools/Clang/tools svn co http://llvm.org/svn/llvm-project/Clang-toolsextra/trunk extra cd / / / L y mã ngu n Compiler-RT cd llvm/projects svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt cd / / A.1.1.3 Biên d ch LLVM Clang 75 K t qu trình biên d ch LLVM Clang n m m t th m c khác v i th m c ch a mã ngu n đ c chu n b C th th m c build n m th m c root, n m c p v i th m c llvm mkdir build cd build /llvm/configure make K t qu c a vi c biên d ch LLVM Clang s đ th m c /root/build/Debug+Asserts/bin nguyên ta biên d ch LLVM Clang ch đ c t p tin th c thi n m debug đ ch đ release c làm đ ti t ki m tài c vi c l nh /llvm/configure s thay th b ng l nh /llvm/configure enable-optimized -disable-assertions Các t p tin th c thi ch đ release đ c l u tr th m c root/build/Release/bin A.1.2 Script biên d ch LLVM Clang t đ ng đ n gi n hóa cho trình biên d ch l i LLVM Clang nhóm vi t đo n script đ biên d ch m t cách t đ ng #!/bin/bash CURDIR=$(pwd)/ LLVMDIR=${CURDIR}/llvm CLANGDIR=${LLVMDIR}/tools/Clang BUILDDIR=${CURDIR}/build mkdir ${BUILDDIR} if [ ! -d ${LLVMDIR} ] then mkdir ${LLVMDIR} fi cd ${LLVMDIR} if [ ! -d svn ] then echo Checking out LLVM source svn co http://llvm.org/svn/llvm-project/llvm/trunk else 76 echo Updating LLVM source svn update fi if [ ! -d ${CLANGDIR} ] then mkdir ${CLANGDIR} fi cd ${CLANGDIR} if [ ! -d svn ] then echo Checking out Clang source svn co http://llvm.org/svn/llvm-project/cfe/trunk else echo Updating Clang source svn update fi if [ ! -d ${BUILDDIR} ] then mkdir ${BUILDDIR} fi cd ${BUILDDIR} ${LLVMDIR}/configure enable-optimized disable-assertions echo Building LLVM with Clang make A.2 B ng kh o sát A.2.1 B ng kh o sát 77 78 79 80 81 [...]... chi ti t c u trúc và ng d ng c a cây cú pháp tr u t ng c ng nh gi i thi u m t s công c chuy n đ i mã ngu n thành cây cú pháp tr u t ng 3.1 Khái ni m Cây cú pháp tr u t ng – Abstract Syntax Tree (AST) là m t cây đ i di n cho c u trúc ng c u trúc ng pháp tr u t ng c a mã ngu n đ c vi t b ng m t ngôn ng l p trình M i nút M i nút c a cây bi u th m t c u trúc đang có trong mã ngu n Cú pháp là “tr u t ng”... th ti p t c x lý ph n còn l i c a chu i đ u vào 9 c các U VÀO: chu i các token U RA: AST 2.2.2.2 X lý l i cú pháp Ph n l n vi c phát hi n và ph c h i l i trong m t trình bi n d ch t p trung vào giai đ an phân tích cú pháp Vì th , b x lý l i (error handler) trong quá trình phân tích cú pháp ph i đ t m c đích sau: Ghi nh n và thông báo l i m t cách rõ ràng và chính xác; Ph c h i l i m t cách nhanh... thành “.2” 2.2.2 Phân tích cú pháp (syntax analysis) 2.2.2.1 Vai trò c a b phân tích cú pháp B phân tích cú pháp nh n chu i các token t b phân tích t v ng và xác nh n r ng chu i này có th đ ra cây cú pháp tr u t c sinh ra t v n ph m c a ngôn ng ngu n b ng cách t o ng cho chu i B phân tích cú pháp c ng có c ch ghi nh n các l i cú pháp theo m t ph l i th ng th c linh ho t và có kh n ng ph c h i đ ng... n tích h p trên web đã có đã đ y đ các tính n ng chính, nh ng nh n th y t m quan tr ng c a vi c c n ph i n ng cao tính ti n d ng, tr giúp cho ng i dùng là nh ng l p trình viên có th s d ng công c này m t cách d dàng và tho i mái h n Do đó, chúng tôi quy t đ nh nghiên c u đ tài Tìm hi u cây cú pháp tr u t ng (AST) và ng d ng trong web IDE M c tiêu c a đ tài bao g m: Tìm hi u cây cú pháp tr u t ng,... trên web trong lu n v n c a hai sinh viên khóa 2008, Nguy n Nguyên Kha Môi tr ình V nh An và ng phát tri n tích h p trên web đang có đã đ nh ng tính n ng quan tr ng nh ng l i ch a có nh ng tính n ng mang l i s ti n d ng cho ng i dùng trong quá trình so n th o mã ngu n Trong ph m vi c a khóa lu n, chúng tôi s tìm hi u cây cú pháp tr u t ng d ng cây cú pháp tr u t ng, ng đ xây d ng công c trên web có... r ng nó không đ i di n cho t t c các chi ti t xu t hi n trong cú pháp th c pháp th c Hình Hình 3-1 là m t AST th hi n cho đo n mã ngu n Java d while (b != 0) if (a > b) a = a – b else b = b – a 13 i đây: Hình 3-1 Hình nh c a m t cây cú pháp tr u t 3.2 c tr ng c a cây cú pháp tr u t c tr ng c a AST th hi n rõ ng ng m c đ bi u th c, các nút bên trong th hi n các toán t (operator), các nút con c a nó... đ n giai đo n phân tích cú pháp, kh n ng ph c h i l i kém, t c đ th c thi ch m v i mã ngu n l n B ng 3-1 Các công c chuy n đ i mã ngu n thành AST Vai trò c a AST: Khi k t thúc giai đo n phân tích cú pháp ta s nh n đ AST cùng v i các l i t v ng và cú pháp Sau khi duy t AST ng ngh a thì ta s thu đ c giai đo n phân tích c thêm l i ng ngh a và m t ph n l i logic c a mã ngu n tùy vào m c đ h tr c a trình... mà không c n có nh ng bi n pháp ph c h i l i Nh ng nó s không báo toàn b nh ng l i ng ngh a trong mã ngu n Ví d nh khi nó g p m t bi n x ch a khai báo b 11 x lý l i ch báo l i x ch a khai báo, còn nh ng câu l nh ho c bi u th c liên quan đ n x b x lý l i s b qua không ki m tra n a 12 CH NG 3 CÂY CÚ PHÁP TR U T Nh đã trình bày ch phân tích cú pháp và đ Trong ch ng 2 cây cú pháp tr u t NG ng là s n ph... l i trong th i gian th c có th kh khi 3.4.3 Cây phác th o mã ngu n th i gian th c Cây phác th o hi n th danh sách các l p, thu c tính c a l p, hàm, th t c, ki u d li u c u trúc trong mã ngu n theo phân c p và th t trong mã ngu n g n v i các thao tác thêm, xóa, s a Khi mã ngu n thay đ i khi cây phác th o c p nh t l i g n nh ngay l p t c Vai trò c a AST: duy t cây AST sau quá trình phân tích cú pháp. .. xóa và thay đ i token c n thi t đ chuy n x thành y là nh nh t Nói chung, hi n nay k thu t này v n còn d ng nghiên c u lý thuy t 2.2.3 Phân tích ng ngh a (semantic analysis) B phân tích ng ngh a s d ng cây cú pháp và các thông tin trong các b ng bi u t ng đ ki m tra các ch ng trình mã ngu n cho phù h p ng ngh a v i ngôn ng đ nh ngh a Nó c ng thu th p các lo i thông tin và l u nó vào m t trong hai cây cú