1. Trang chủ
  2. » Luận Văn - Báo Cáo

CÂY CÚ PHÁP TRỪU TƯỢNG AST VÀ ỨNG DỤNG TRONG WEB IDE

99 420 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

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ú

Ngày đăng: 23/07/2016, 16:43

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w