... viết chươngtrình trên môi trường Borland C+ + 3.1 Giáo trình Bài Tập Kỹ Thuật Lập Trình Trang 13 3 PHỤ L C 2 HƯỚNG DẪN VIẾT CHƯƠNGTRÌNH TRÊN MÔI TRƯỜNG BORLAND C+ + 3.1 (BC 31) I. C I ... • F6: Chuyển qua lại cc cửa sổ soạn thảo (nếu mở nhiều c a sổ). • F9: Biêndịchchương trình. M cđích là kiểm tra lỗi chương trình. • Ctr+F9: Th c thi chươngtrình (Run) khi chươngtrình ... quá trình làm bài hay biêndịch chạy chươngtrình thì tất ccc file đó đều nằm trong thư m c BaiTap cho dễ quản lý. Tạo Shortcut Borland C+ +3.1 (File bc.exe trong thư m c BIN c a thư mục...
... lại cho người viết chương trình. Trình biên dịch Chương trình đích Chương trình nguồn Hình 1.1 - Một trìnhbiêndịch1. Mô hình phân tích - tổng hợp c a một trìnhbiêndịchChương ... Ngoài trìnhbiên dịch, chúng ta c thể c n dùng nhiều chươngtrình kh c nữa để tạo ra một chươngtrìnhđíchc thể th c thi đư c (executable). Ccchươngtrình đó gồm: Bộ tiền xử lý, Trìnhdịch ... SỰ BIÊNDỊCH Nội dung chính: Để máy tính c thể hiểu và th c thi một chươngtrình đư c viết bằng ngôn ngữ c p cao, ta c n phải c một trìnhbiêndịch th c hiện vi c chuyển đổi chương trình...
... biểu th c như là một danh sách cc term đư c phân c ch nhau bởi dấu + ho c Term là một list cc factor phân c ch nhau bởi * ho c /. Chú ý rằng bất kỳ một biểu th c nào trong ngo c đều là factor, ... thế với cc dấu ngo c chúng ta c thể xây dựng cc biểu th c lồng sâu nhiều c p tuỳ ý. C pháp cc câu lệnh: Từ khóa (keyword) cho phép chúng ta nhận ra c u lệnh trong hầu hết cc ngôn ngữ. ... 13 Tương tự với c ch đặt dấu ngo c vào biểu th c như sau : (9 - 5) + 2 9 - ( 5 + 2) Bởi vì một chuỗi với nhiều c y phân tích c pháp thường sẽ c nhiều nghĩa, do đó khi biêndịchcc chương...
... c y c pháp đư c x c định từ cc giá trị c a cc thu c tính tại cc nút con c a nút đó. Ví dụ 2.7: Ðịnh nghĩa tr c tiếp c pháp cho vi cdịchcc biểu th ccc số c ch nhau bởi dấu + ho c ... - Cc hành động dịch biểu th c 9-5+2 thành 9 5- 2 + 18 II. DỊCH TR C TIẾP C PHÁP (Syntax - Directed Translation) Ðể dịch một kết c u ngôn ngữ lập trình, trong quá trình dịch, bộ biêndịch ... tr c tiếp c pháp (syntax - directed definition) nhằm đ c tả vi c phiên dịchcc kết c u ngôn ngữ lập trình theo cc thu c tính đi kèm 15 Trong cc luật sinh c vế trái là simple, ta chọn...
... match(‘-’) ; term( ) ; putchar (‘-’) ; } else break; } Chương trìnhCdịch biểu th c trung tố sang hậu tố Chương trình nguồn C hoàn chỉnh cho chươngtrìnhdịchc mã như sau : # include< ... toàn cc Hình 2. 13 - C i đặt giao diện c a bộ phân tích từ vựng Nếu ngôn ngữ c i đặt không cho phép trả về cc cấu tr c dữ liệu từ cc hàm thì token và cc thu c tính c a nó phải đư c truyền ... nhập c ng c thể c n đư c lưu lại cho c ng vi c ghi nhận lỗi bởi vì c n phải chỉ ra vị trí lỗi trong đoạn chương trình. Ðể tránh vi c phải quay lui, một số trìnhbiêndịch sử dụng c chế đ c trước...
... ra c ch sinh mã chươngtrình cho nó. Máy ảo này bao gồm 3 thành phần: 1. Vùng nhớ chỉ thị (instructions): là nơi chứa cc chỉ thị. Cc chỉ thị này rất hạn chế và đư c chia thành 3 nhóm chính: ... kh c đi bằng cc câu lệnh nhảy c điều kiện ho c không điều kiện. C một số cc tùy chọn dùng để mô tả ccđích nhảy : 1. Toán hạng làm chỉ thị cho biết vị trí đích. 2. Toán hạng làm chỉ ... Stack. 33 div R-value d push 1 53 + R- value m := * 5. Cc chỉ thị điều khiển trình tự Máy ảo kiểu Stack th c hiện cc chỉ thị theo đúng thứ tự liệt kê trừ khi đư c yêu c u th c hiện...
... tất ccc chuỗi c a cc chữ c i bao gồm c chuỗi rỗng. 5. L( L ∪ D)* là tập hợp tất ccc chuỗi mở đầu bằng một chữ c i theo sau là chữ c i hay chữ số 6. D+ là tập hợp tất ccc chuỗi ... cc kỹ thuật tạo ra bộ phân tích từ vựng. C thể, • Xây dựng cc lư c đồ cho cc biểu th c chính quy mô tả ngôn ngữ c n đư c viết trìnhbiên dịch. Sau đó chuyển đổi chúng sang một chươngtrình ... số chương trình xử lý chuyên dụng sẽ làm giảm đáng kể thời gian đ c dữ liệu từ chươngtrình nguồn và nhóm cc token. 3. Tính đa tương thích (mang đi dễ dàng) c a trìnhbiêndịchc ng đư c cải...
... th c chính quy trong lex.l là cc đoạn chương trìnhC đư c chuyển sang lex.yy .c. Cuối c ng trìnhbiêndịchC sẽ dịch lex.yy .c thành chươngtrình đối tượng a.out, đó là bộ phân tích từ vựng c ... Hình 3. 9 - Sơ đồ dịch cho cc số không dấu trong Pascal C nhiều c ch để tránh cc đối sánh dư thừa trong cc sơ đồ dịch trên. Một c ch là viết lại cc sơ đồ dịch bằng c ch tổ hợp chúng thành ... 28delim29delim 30 other*start Hình 3. 10 - Sơ đồ dịch cho cc khoảng trắng 2. C i đặt một sơ đồ dịch Dãy cc sơ đồ dịchc thể đư c chuyển thành một chươngtrình để tìm kiếm token đư c đ c tả...
... trình đều ccc quy t c diễn tả c u tr c cú pháp c a ccchương trình c định dạng đúng. Cc cấu tr c cú pháp này đư c mô tả bởi văn phạm phi ngữ c nh. Phần đầu c a chương nh c lại khái niệm ... nắm đư c: • Cc phương pháp phân tích c pháp và cc chiến lư c ph c hồi lỗi. • C ch tự c i đặt một bộ phân tích c pháp từ một văn phạm phi ngữ c nh x c định. • C ch sử dụng c ng c Yacc để ... tích c pháp c ng cc chế ghi nhận cc lỗi c pháp theo một phương th c linh hoạt và c khả năng ph c hồi đư ccc lỗi thường gặp để c thể tiếp t c xử lý phần c n lại c a chuỗi nhập. Chương...
... kết th c bằng cc cạnh c nhãn X 1 X2 Xn Một c ch c thể, sơ đồ dịch đư c vẽ theo cc nguyên t c sau: 1. Mỗi ký hiệu chưa kết th c tương ứng với một sơ đồ dịch trong đó nhãn cho cc cạnh ... c nh c nhãn là ký hiệu chưa kết th c. Cc sơ đồ dịch tương ứng : E 2 0 1 T E’ 7 8 9 T‘ F T 11 12 13 T’ F 10 *εT’ 15 16 17 ) E 14 ... (E) | id Một chươngtrình phân tích c pháp dự đoán đư c thiết kế dựa trên sơ đồ dịch cho cc ký hiệu chưa kết th c trong văn phạm. Nó sẽ c gắng so sánh cc ký hiệu kết th c với chuỗi nguyên...
... quát gọi là phân tích c pháp Shift -Reduce. Một dạng dễ c i đặt c a nó gọi là phân tích c pháp thứ b c toán tử (Operator - Precedence parsing) c ng sẽ đư ctrình bày và cuối c ng, một phương ... quát hơn c a kỹ thuật Shift - Reduce là phân tích c pháp LR (LR parsing) sẽ đư c thảo luận. 1. Bộ phân tích c pháp Shift - Reduce Phân tích c pháp Shift - Reduce c gắng xây dựng một c y phân ... một chuỗi con c thể đối sánh đư c với vế phải c a một luật sinh nào đó thì chuỗi con này sẽ đư c thay thế bởi ký hiệu vế trái c a luật sinh đó. Và nếu chuỗi con đư c chọn đúng tại mỗi bư c, ...
... 0 s 411 s 512 1 2 31 acc 2 s6 3 r2 411 810 7 13 512 r4 r4 6 s 411 s 512 810 9 7 13 r 3 r 3 810 r5 r5 9 r 1 Hình 4 .15 - Bảng phân tích c pháp LALR ... đư c gọi là họ tập hợp m c LALR (1) . 10 2 6 s 11 s 12 10 9 7 r 3 8 r5 9 r 1 10 r5 11 s 11 s 12 10 13 12 r4 13 r 3 Hình 4 .14 - Bảng phân tích c pháp LR chính ... m c LR (1) tìm trên tất ccc tập hợp c c ng hạt nhân này và thay thế cc tập hợp này bởi hợp c a chúng. 3. Ðặt C& apos; = { I0, I 1 , , Im } là kết quả thu đư c từ C bằng c ch hợp c c...
... generator) hỗ trợ cho vi c xây dựng kỳ đầu c a một trìnhbiện dịch. Một trong những bộ sinh bộ phân tích c pháp là YACC (Yet Another Compiler - Compiler). Phiên bản đầu tiên c a Yacc đư c S .C. Johnson ... Yacc đư c cài đặt như một lệnh c a hệ UNIX và đã đư c dùng để c i đặt cho hàng trăm trìnhbiên dịch. 10 7 E Æ E + T | T T Æ T * F | F (2) F Æ (E) | id Văn phạm này x c định rằng + c ... không phải là LR. Tuy nhiên c một số văn phạm mơ hồ lại rất c ích cho vi c đ c tả và c i đặt ngôn ngữ. Chẳng hạn văn phạm mơ hồ cho kết c u biểu th c đ c tả đư c một c ch ngắn gọn và tự nhiên...
... thêm cc thủ t c kh c, chúng c thể đư cbiêndịch ho c đư c tải vào y.tab .C giống như mọi chươngtrìnhC kh c. 10 7 4 .17 . Viết một chươngtrình Yacc nhận chuỗi input là cc biểu th c số ... 11 0 2. Ð c tả YACC Một chươngtrình nguồn Yacc bao gồm 3 phần: Phần khai báo % % C c luật dịch %% C c thủ t c Ví dụ 4 .30 : Ðể minh họa vi c chuẩn bị một chươngtrình nguồn Yacc, chúng ... chứa chương trình phân tích c pháp LR nhờ lệnh cc y.tab .C - ly chúng ta thu đư c một chương trình đối tượng a.out th c hiện quá trìnhdịch đư c đ c tả bởi chươngtrình Yacc ban đầu. Nếu c n...
... h c xong chương này, sinh viên phải nắm đư c: • Cc cách kết hợp cc luật sinh với cc luật ngữ nghĩa: Định nghĩa tr c tiếp c pháp và Lư c đồ dịch. • Biết c ch thiết kế chươngtrình – bộ dịch ... ở ccchương sau: 6, 8, 9. Hai c ch để kết hợp cc luật sinh với cc luật ngữ nghĩa đư ctrình bày trong chương là: Định nghĩa tr c tiếp c pháp và Lư c đồ dịch. Ở m c quan niệm, bằng c ch ... thừa c a một trong cc ký hiệu văn phạm trong vế phải c a luật sinh và c1 , c2 , , ck là cc thu c tính c a cc ký hiệu văn phạm c a luật sinh. Ta nói b phụ thu c c1, c2 , , ck. 1. Thu c tính...