Đề cương chương trình dịch

12 454 0
Đề cương chương trình dịch

Đ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

Câu 1: Định nghĩa chương trình dịch, cấu trúc tĩnh cấu trúc độngĐịnh nghĩa chương trình dịch: Chương trình dịch là một chương trình làm nhiệm vụ đọc một chương trình được viết bằng một ngôn ngữ ngôn ngữ nguồn rồi dịch nó thành một chương trình tương đương ở một ngôn ngữ khác ngôn ngữ đích.chương trình dịch còn gọi là chương trình biên dịch. Một phần quan trong trong quá trình dịch là ghi nhận lại các lỗi có trong chương trình nguồn để thông báo lại cho người viết chương trình. Một trình biên dịch Các giai đoạn của chương trình dịch: 1 .Cấu trúc tĩnh của chương trình dịch. Theo cấu trúc tĩnh (cấu trúc logic), chương trình dịch chia là 2 giai đoạn:+ Phân tích (kỳ trước): xác định các từ nào là đúng ? các thành phần của câu lệnh có tuân theo luật cú pháp hay không ?. từ đó hiểu được phải giải thích? Hiểu được dạng trình bày của ngôn ngữ.+ Tổng hợp.( kỳ sau) : tổng hợp các thông tin thu được chuyển thành câu mới trong ngôn ngữ đích sao cho nó có ý nghĩa với câu ban đầu.

ĐỀ CƯƠNG CHƯƠNG TRÌNH DỊCH Họ tên: Giáp Thị Hiền Lớp: sp tink45 Câu 1: Định nghĩa chương trình dịch, cấu trúc tĩnh cấu trúc động Định nghĩa chương trình dịch: - Chương trình dịch là một chương trình làm nhiệm vụ đọc một chương trình được viết bằng một ngôn ngữ- ngôn ngữ nguồn rồi dịch nó thành một chương trình tương đương ở một ngôn ngữ khác ngôn ngữ đích.chương trình dịch còn gọi là chương trình biên dịch. - Một phần quan trong trong quá trình dịch là ghi nhận lại các lỗi có trong chương trình nguồn để thông báo lại cho người viết chương trình. Một trình biên dịch Các giai đoạn của chương trình dịch: 1 .Cấu trúc tĩnh của chương trình dịch. - Theo cấu trúc tĩnh (cấu trúc logic), chương trình dịch chia là 2 giai đoạn: + Phân tích (kỳ trước): xác định các từ nào là đúng ? các thành phần của câu lệnh có tuân theo luật cú pháp hay không ?. từ đó hiểu được phải giải thích? Hiểu được dạng trình bày của ngôn ngữ. + Tổng hợp.( kỳ sau) : tổng hợp các thông tin thu được chuyển thành câu mới trong ngôn ngữ đích sao cho nó có ý nghĩa với câu ban đầu. Trình biên dịch Chương trình nguồn Thông báo lỗi Chương trình đích Các giai đoạn của một chương trình biên dịch “Các giai đoạn phân tích” a. Phân tích từ vựng : là đọc chương trình nguần từ trái qua phải để tách ra thành các thẻ từ (tocken). - Trong quá trình phân tích từ vựng các khoảng trăng (blank) sẽ bị bỏ qua b. Phân tích cú pháp - Thực hiện công việc nhó các token của chương trình nguần thành các cụm từ văn phạm sau đó sẽ biên dịch tổng hợp ra thành phần . - Thông thường các cụm từ văn phạm này được biểu diên bằng cây phân tích cú pháp với: + Ngôn ngữ được ddin bởi luật sinh + Phân tích cú pháp dựa vào luật sinh để xây dưng cây phân tích cú pháp. Cấu trúc phân cấp của một chương trinh thường được diễn tả bởi quy luật đệ quy. c. phân tích ngữ nghĩa: - Kiểm tra xem chương trình nguồn có chứa lỗi về ngữ nghĩa hay không. Phân tích từ vựng Phân tích cú pháp Phân tích ngữ nghĩa Sinh mã trung gian Quản lý lỗi Quản lý bảng ký tự Tối ưu mã Sinh mã đích Chương trình nguồn 2 Chương trình đích - Tập hợp thông tin về các kiểu dữ liệu cho giai đoạn sinh mã về sau. - Sử dụng cấu trúc phân cấp của giai đoạn phân tích cú pháp để xác định các toán tử, toán hạng của các biểu thức câu lệnh . - Một phần quan trong của giai đoạn phân tích ngữ nghĩa là kiểm tra và ép chuyển đổi kiểu. “các giai đoạn tổng hợp” d. Sinh mã trung gian - Sau khi phân tích cấu trúc và ngữ nghĩa, 1 số trình biên dịch sẽ tạo ra một số dạng biểu diễn trung gian của chương trình nguồn - Một chương trình dành cho một máy trừu tượng - Mã trung gian có hai đặc tính quan trọng: + Dễ tạo: + Dễ dàng chuyển đổi thành chương trình đích - Thường sử dụng “mã máy 3 địa chỉ” e. Tối ưu mã: - Giai đoạn tối ưu mã cố gắng tối ưu mã trung gian để thu được mã máy thực hiện nhanh hơn. f. Sinh mã đích: - Giai đoạn cuối cùng của biên dịch là sinh mã đích, thường là mã máy hoặc là hợp ngữ. - Vị trí các vùng nhớ gán cho các biến được chương trình sử dụng. - Sau đó, các lệnh trung gian được dịch lần lượt thành chuỗi các chỉ thị mã máy. g. Quản lý bảng ký tự: - Một nhiệm vụ quan trọng của trình biên dịch là ghi lại các định danh được sử dụng trong chương trình nguồn và thu thập các thông tin về thuộc tính khác nhau của mỗi định danh . - Các thuộc tính cung cấp thông tin về vị trí bộ nhớ được cấp phát cho một định danh, kiểu và phạm vi định danh. - Nếu định danh là tên của một thủ tục thì thuộc tính các tin về số lượng và kiểu của các đối số, phương pháp truyền đối số về kiểu trả về của thủ tục. h. Xủ lý lỗi. - Mỗi giai đoạn có thể gặp nhiều lỗi, tuy nhiên sau khi phát hiện ra lỗi, tùy thuộc vào trình biên dịch mà mà có cách xử lý lỗi khác nhau. - Giai đoạn phân tích cú pháp gặp lỗi khi các token không thể kết hợp với nhau theo đúng cấu trúc ngôn ngữ. - Giai đoạn phân tích từ vựng thường gặp lỗi khi các ký tự không thể ghép thành một token. - Giai đoạn phân tích ngữ nghĩa báo lỗi khi các toán hạng có kiểu không đúng yêu cầu của phép toán hay các kết cấu không có nghĩa đối với thao tác thực hiện mặc dù chúng hoàn toàn đúng về mặt cú pháp. 3 2. Cấu trúc động của chương trình - Cho biết mối quan hệ giữa các thành phần khi nói hoạt động các giai đoạn của chuong trình dịch (phân tích từ vựng, phân tích cú pháp, phân tích ngữ nghĩa, tối ưu, sinh mã) có thể hoạt động theo hai cách lần lượt hoặc đồng thời. - Một số giai đoạn biên dịch thường được cài đặt bằng một lượt duy nhất bao gồm việc đọc một file dữ liệu vào rồi phân tích và cho kết quả ra một file đích. - Người ta thường nhóm một giai đoạn vào một lượt vào hoạt động của các giai đoạn này đan xen lần nhau a. Thiết kế duyệt lần lượt - Một số thành phần của chương trình được thực hiện đồng thời. + Bộ phân tích cú pháp đóng vai trò trung tâm, nó sẽ gọi bộ phân tích từ vựng khi nó cần một từ đó tiếp theo và nó gọi bộ phân tích ngữ nghĩa khi nó muốn chuyển cho một cấu trúc cú pháp đã được phân tích. + Bộ phân tích ngữ nghĩa lại đưa cấu trúc sang phần sinh mã trung gian để sinh ra các mã rồi đưa vào bộ tối ưu và sinh mã. + Sơ đồ Phân tích cú pháp Phân tích từ vựng phân tích ngữ ngĩa Sinh mã trung gian Chương trình nguồn Tối ưu mã Sinh mã Chươntrình đích b. Thiết kế duyệt nhiều lượt. - Các thành phần trong chương trình dịch được thực hiện lật lượt và độc lập với nhau. Qua mỗi phần, kết quả sẽ được lưu lại và làm đầu vào cho bước tiếp theo. - Đơn giản về mặt logic thực hiện (hết giai đoạn này => gđ khác) - Tuy nhiên, chương trình chạy chậm hơn nhiều lần vì phải truy xuất lại kết quả của các giai đoạn trước từ thiết bị lưu trữ ngoài. 4 Câu 2. Mục đích của phân tích từ vựng? Tại sao phải tách rời phân tích từ vựng với phân tích cú pháp? Mục đích. - phân tích từ vựng là giai đoạn đầu của mọi trình biên dịch. Mục đích của phân tích từ vựng là giúp cho nhiệm vụ của các giai đoạn biên dịch tiếp theo dế dàng hơn, hiệu quả hơn trình biên dịch được cải thiện. Lý do phải tách rời phân tích từ vựng với phân tích cú pháp. Ví dụ: bộ phân tích cú pháp không phải xử lý các khoảng trắng hay các lời chú thích vì chúng đã được bộ phân tích từ vựng loại bỏ + Nó làm cho việc thiết kế đơn giản và dễ hiểu hơn. Chẳng hạn bộ phân tích cú pháp sẽ không phải xử lý các khoảng trắng hay các lời chú thích nữa vì chúng đã được bộ phân tích từ vựng loại bỏ. + Hiệu quả của chương trình dịch cũng sẽ được cải thiện, nhờ vào một 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ương trình nguồn và nhóm các token. + Tính đa tương thích của trình biên dịch cũng được cải thiện Đặc tính của bộ ký tự nhập và những khác biệt của từng loại thiết bị có thể giới hạn trong các bước phân tích từ vựng. Dạng biểu diễn của các ký hiệu đặc biệt hoặc là những ký hiệu không chuẩn, chẳng hạn như ký hiệu ( trong pascal có thể được cô lập trong bộ phân tích từ vựng. Câu 3. các chiến lực khắc phục hồi lỗi trong phân tích từ vựng. - Chỉ 1 số ít lỗi được phát hiện tại bước phân tích từ vựng, bởi vì bộ phân tích từ vựng có nhiều cách nhận chương trình nguồn. - Ví dụ: chuỗi fi được nhìn thấy lần đâu tiên trong một chương trình C với ngữ cảnh: fi (a= =f(x)…. - Bộ phân tích từ vựng không thể biết đây là lỗi không viết đúng từ khóa if hay một đinh danh chưa được khai báo. Vì if là một định danh hợp lệ nên bộ phân tích từ vựng phải trả về một token và để giai đoạn khác sau đó xác định lỗi . + Các lỗi mà bộ phân tích từ vựng phát hiện là các lỗi về từ vị không đúng Ví dụ: trong pascal viết nhầm lệnh := thành != Lỗi xẩy ra khi bộ phân tích không thể tìm được một luật thành từ đó nào đúng với phần lại của xâu. - Cách 1: hệ thống ngừng hoạt động và thông báo lỗi cho người sử dụng . - Cách tốt hơn bộ phân tích từ vựng sẽ ghi lại các lỗi này và cố gắng bỏ quả chúng để hệ thống có thể tiếp tục làm việc, nhằm phát hiện đồng thời thêm nhiều lỗi khác. - Tuy nhiên trong 1 vài tình huống phải khắc phục lỗi để phân tích tiếp. 5 - Chiến lược đơn giản nhất là “phương thức hoảng sợ” các kí tự tiếp theo xóa ra khỏi chuỗi nhập còn lại cho đến khi tìm ra một token hoàn chỉnh. - Kỹ thuật này đôi khi cũng gay ra sự nhầm lẫn cho giai đoạn phân tích cú pháp nhưng vẫn có thể sử dụng được; Một số chiến lược khác phục lỗi khác là: + Xóa đi hoặc nhảy qua các kí tự mà bộ phân tích không tìm được từ tố. + Thêm một kí tự bị mất. + Thay thế một kí tự không đúng bằng kí tự đúng. + Chuyển đổi 2 kí kế tiếp nhau. Câu 4. Mục đích nhiệm vụ của phân tích cú pháp, các phương pháp phân tích cú pháp cơ bản. Mục đích nhiệm vụ của 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 xem chuỗi đó có được sinh ra bởi văn phạm của ngôn ngữ nguồn bằng cách tạo ra cây phân tích cú pháp cho chuỗi. - Có cơ chế ghi nhận các lỗi cú pháp theo một phương thức linh hoạt. - Có khả năng phục hồi được các lỗi thường gặp để có thể tiếp tục xử lý phần chuỗi nhập.  Mục đích. Phân tích cú pháp là để tìm ra cấu trúc cú pháp dựa trên văn phạm của một chương trình nguần.  Các phương pháp phân tích cú pháp cơ bản: - Có hai chiên lược phân tích cơ bản: Bộ phân tích từ vựng Bộ phân tích cú phap 6 1. Phân tích từ trên xuống (topdown ) - Là cách tạo ra một cây phân tích cho xâu nhập bắt đầu từ đỉnh vào đi xuống cho đến lá. - Dùng 1 con chỏ chỉ đến xâu vào : kí hiệu trên xâu vào do con trỏ chỉ đến gọi là kí hiệu vào hiện tại. Vị trí đầu tiên của con trỏ là kí hiệu bên trái nhất của xâu vào. - Bắt đầu với cây phân tích chỉ có một nút duy nhất là nút gốc s: - Tiến hành các bước đệ quy như sau: + Nếu nút đang xét là một kí hiệu không kết thúc A thi lấy chọn đầu tiên, kí hiệu là x 1 …x k Lại lấy nút x 1 là nút đang xét. Trường hợp k=0 thì lấy ngay nút bên phải A làm nút đang xét. + Nếu nút đang xét là nút kí hiệu kết thúc a, thì so sánh nó với, kí hiệu vào hiện tại. + Nếu trùng nhau thì lấy nút ngay bên trái a làm nút đang xét và chuyển con trỏ xâu vào sang bên phải một kí hiệu. Nếu a không giống thì quay lại nút do sản xuất trước tạo ra: điều chỉnh lại con trỏ xâu vào nếu cần thiết sau đó lại quay lại nút trước đó và cứ như vậy. 2. phân tích buttom up. - Là phương pháp phân tích bắt đầu từ là cố gắng xây dựng thành cây bằng cách hướng lên - Phân tích butoom-up được gọi là phân tích gạt thu gon. - Cấu tạo: + Dùng 1: bộ đệm để chứa xâu cần phân tích w. + Dùng 1 stack để đẩy các kí tự trên xâu vào + Khởi đầu: đầu đọc trỏ vào kí tự đầu tiên và đánh dấu stack. - Hoạt đông: + Khởi đầu thì satck rỗng, chuỗi w nằm trong bộ đệm + Bộ phân tích lần lượt gạt các kí hiệu đầu vào từ trái sang phải vào ngăn xếp đến khi gạt được một thu gọn thì thu gọn (thay thế vp trên đỉnh ngăn xếp bởi vt của sản xuất đó) + Nếu có nhiều cách thu gọn tại một trạng thái thì lưu lại cho quá trình quay lui. Quá trình cứ thế tiếp tục, nếu dừng lại mà chưa đạt đến trạng thái kết thúc thì quay lại tại bước quay lui gần nhất. + Nếu quá trình đạt đến trạng thái ngăn xếp là $s$ xâu vào là $ thì quá trình kết thúc $ phân tích thành công. + Nếu đã xét tất cả các trường hợp $ không thể quay lui được nữa mà chưa đạt đên trạng thái kết thúc thì dừng lại $ thông báo xâu vào không phân tích được bởi vp đã cho. 3. Phân tích bằng cyk. 4. Phương pháp phân tích LL 5. Phương pháp phân tích LR. Câu 5. Trình bày các lỗi được phát hiện trong phương pháp phân tích LL. 7 - Một lỗi sẽ được tìm thấy trong phân tích dự đóan khi. - Kí hiệu kết thúc trên đỉnh stack không phù hợp với token kế tiếp trong dòng nhập hoặc: - Trên đỉnh stack là kí hiệu chưa kết thúc A, token trong dòng nhập là a nhưng M[A,a] rỗng - Phục hồi lỗi theo phương pháp panic-mode là bỏ qua các kí hiệu trong dòng nhập là cho đến khi gặp một phần tử trong tập hợp token đồng bộ. - Tính hiệu quả của phương pháp này tùy thuộc vào cách chọn tập hợp các token đồng bộ . Một số heuristics có thể là: + Ta có thể đưa tất cả các kí hiệu trong folow(a) vào trong tập hợp token đồng bộ cho kí hiệu chưa kết thúc A. + Follow(A) cũng chưa phải là một tập hợp các token đồng bộ cho A VD: các lệnh của C kết thúc bởi chấm phẩy (dấu ;) nếu lệnh thiếu dấu chấm phẩy thì từ khóa của lệnh kế tiếp sẽ bị bỏ qua. Thông thường các ngôn ngữ có cấu trúc phân cấp. - Vd biểu thức nằm trong một câu lệnh, lệnh nằm trong một khối lệnh chúng ta có thê thêm vào tập hợp của một cấu trúc những ký hiệu mà nó bắt đầu cho một cấu trúc cao hơn. VD: ta có thể thêm các từ khóa bắt đầu cho các lệnh vào tập đồng bộ cho ký hiệu chưa kết thúc sinh ra biểu thức. + Nếu chúng ta thêm các phần tử của first(A) vào tập đồng bộ cho ký hiệu chưa kết thúc thì quá trình phân tích có thể hòa hợp với A nếu 1 ký hiệu trong first(A) xuất hiện trong dòng nhập. + Nếu một ký hiệu không kết thúc có thể sinh ra môt xâu rỗng thì sản xuất suy dẫn ra có thể được sử dụng như ngầm định. Thực hiện điều này thì có thể phát hiện được lỗi nhưng không làm mất được lỗi nên dùng để giảm số lượng các kí hiệu không kết thúc phải xem xét trong lúc phải khắc phục lỗi. + Nếu 1 ký hiệu kết thúc nằm trên đỉnh ngăn xếp không đúng thì loại bỏ ký hiệu kết thúc này dựa ra một thông báo vào tiếp tục phân tích=> tạo nên tập đồng bộ của một từ tố co chứa tất các từ tố khác. Câu 6. Mục đích, ý nghĩa bộ xử lý lỗi trong phân tích cú pháp và các chiến lược phục hồi lỗi? • Mục đích ý nghĩa bộ xử lý lỗi trong phân tích 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 đoạn phân tích cú pháp. Vì thế bộ xử lý lỗi 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 chóng để có thể xác định các lỗi tiếp theo. + Không làm chậm tiến trình của một chương trinh đúng. • Các chiến lược phục hồi lỗi. - Phục hồi lỗi là kỹ thuật vượt qua các lỗi để tiếp tục quá trình dịch. - Phục hồi kiểu “trừng phạt” 8 + Là phương pháp đơn giản nhất cho cài đặt, có thể dùng cho hầu hết các phương pháp phân tích. + Khi 1 lỗi được phát hiện thị bộ phân tích cú pháp bỏ qua từng kí hiệu một cho đến khi tìm thấy một tập hợp được chỉ định của các token đồng bộ. + Các token đồng bộ thường đã được xác đinh trước. - Khôi phục cụm từ: + Khi phát hiện một lỗi bộ phân tích cú pháp cố gắng phân tích cục bộ trên phần còn lại của dòng nhập. - Nó có thể thay thế phần đầu của phần còn lại này bằng một xâu nào đó cho phép bộ phân tích làm việc tiếp. - vd: thay dấu(,) bởi(;) xóa một dấu(,) lạ hoặc thêm vào một dấu(;) - Chiến lược dùng các luật sinh sửa lỗi + Thêm vào vp của ngôn ngữ luật sinh hay sinh ra các cấu trúc lỗi và sử dụng văn phạm này để xây dựng bộ phân tích cú pháp. + Nếu bộ phân tích dùng một luật lỗi chúng ta có thể sinh ra bộ đoán lỗi thích hợp để chỉ ra cấu trúc lỗi được nhận biết trong dòng nhập. - Chiến lược hiệu chỉnh toàn cục: + Một cách lý tưởng là tạo ra một số thay đổi trong khi xử lý một lỗi có những giải thuật để lựa chọn được chuỗi thay đổi nhỏ nhất để đạt được sự hiệu chỉnh toàn cục là nhỏ nhất. - Các thuật toán này thường tốn thời gian và bộ nhớ nên chỉ được quan tâm về mặt lý thuyết. câu 7. định nghĩa dữa cú pháp của biểu thức trung vị với thuộc tính là hậu vị của biểu thức? - Sử dụng văn phạm phi ngữ cảnh để đặc tả cấu trúc cú pháp của nguyên liệu, liên kết mỗi ký hiệu văn phạm với một thuộc tính. - Một luật sinh với một tập quy tắc ngữ nghĩa để tính gá trị các thuộc tính đi kèm với những kí hiệu có trong luật sinh. - Phiên dịch là phép ánh xa từ nhập -> xuất - Dạng xuất của chuỗi nhập x được xác định như sau: + Xác định cây phân tích cho chuỗi x. + Giả sử nút(n) trong cây phân tích được gán nhãn là kí hiệu văn phạm x. viết là x.a biểu thị giá trị thuộc tính a đi kèm với luật sinh x được dùng tại nút n. - Cây phân tích cú pháp có chú thích các giá trị thuộc tính ở mỗi nút được gọi là cây phân tích chú thích. Câu 8. trình bày nhiệm vụ của bộ phân tích ngữ nghĩa, hệ thống các kiểu và việc kiểm tra kiểu trong phân tích ngữ nghĩa. - Nhiệm vụ: Một chương trình dịch phải kiểm tra xem chương trình nguồn có theo các quy định về cú pháp và ngữ nghĩa của ngôn ngữ nguồn hay không? - Có hai cách kiểm tra: + Kiểm tra tĩnh được thực hiện trong thời gian biên dịch chương trình nguồn. 9 + Kiểm tra động được thực hiện trong thời gian thực thi chương trình đích. • Kiểm tra tĩnh: - Kiểm tra kiểu: Kiểm tra về tính đúng đắn của các kiểu toán hạng trong biểu thức ví dụ: cộng một xâu với số nguyên. - Kiểm tra dòng điều khiển: các câu lệnh làm thay đổi dòng điều khiển từ một khối phải có vài nơi để chuyển điều khiển tới đó. Vd: lệnh break phải nằm trong một vòng lặp. - Kiểm tra tính nhất quán: có những ngữ cảnh mà trong đó một đối tượng được định nghĩa chỉ đúng một lần vd: trong pascal: một tên phải được khai báo một lần, các nhận trong lệnh case phải khác nhau. - Kiểm tra quan hệ tên: Đôi khi một tên phải xuất hiện từ 2 lần trở lên. Vd : trong assembly, 1 chương trình chỉ có một tên mà chúng phải xuất hiện ở đầu và ở cuối chương trình • Hệ thống và kiểm tra kiểu. 1. Kiểu biểu thức: - Kiểu của một cấu trúc ngôn ngữ được biểu diễn bởi “biểu thức kiểu” - Một biểu thức kiểu có thể là: + Kiểu cơ sở. + Kiểu hợp thành: được xây dựng từ các kiểu cơ sở theo một số toán tử nào đó • Kiểu cơ sở: + boolean, char, integer, real; + type-eror: một kiểu cơ bản đặc biệt dùng để trả về một cấu trúc bị lỗi kiểu. + void : 1 kiểu cở bản đặc biệt khác, biểu thị các cấu trúc không cần xác định kiểu như câu lệnh. + Kiểu biểu thức có thể được đặt tên khác, một kiểu tên cũng là kiểu biểu thức. + Kiểu hợp thành: một toán tử xây dựng kiểu áp dụng vào một kiểu biểu thức là một kiểu biểu thức toán tử này bào gồm: + Mảng(aray): nếu t là một biểu thức kiểu thì array(I,t) là một biểu thức kiểu đối với một mảng có tập chỉ số I và các phần tử có kiểu T Vd: trong pascal:khai báo var a:aray[1 10] of integer; Sẽ xác định kiểu của a là aray[1 10], integer) - Tích đề các của biểu thức là một biểu thức. nếu t1 và t2 là kiểu biểu thức thì t1 và t2 là biểu thức. - Bản ghi: kiểu của bản ghi chính là biểu thức kiểu được xác định từ các kiều của các chương trình hợp của nó. - Con trỏ: giả sử t là một biểu thưc thì pointer(t) là một biểu thị của một biểu thức kiểu xác định kiểu cho con của một đối tượng kiểu t 10 [...]... ngôn ngữ lập trình, nó được thể hiện bởi một bộ luật cú pháp để mô tả cấu trúc của một chương trình, các câu lệnh bao gồm: + Các khai báo + Biểu thức số học, biểu thức logic + Các lệnh: gán, gọi hàm, vào ra… + Câu lệnh điều khiển if + Câu lệnh lặp for, while + Chương trình con: hàm và thủ tục - Ngữ nghĩa: + Việc kiểm tra ngữ nghĩa của một chương trình là một phần ko thể thiếu của chương trình dịch + Ngữ... + Ngữ nghĩa của 1 chương trình liên quan đến:  Kiểu, phạm vi của hằng và biến  Phân biệt và sử dụng đúng tên hằng, hàm, biến + Chương trình dịch phải kiểm tra được tính đúng đắn trong sử dụng đại lượng này VD: kiểm tra không cho gán giá trị hằng, kiểm tra tính đúng đắn trong gán kiểu, kiểm tra phạm vi 11 * Các đặc trưng trên đều ảnh hưởng đến quá trình xây dựng một chương trình dịch cụ thể là: -... tích từ vựng - Cú pháp: + Nhiệm vụ trước tiên là phải biết được bộ luật cú pháp của ngôn ngữ mà mình định xây dựng chương trình + Chương trình phải phân tích chương trình nguồn thành các cấu trúc cú pháp của ngôn ngữ, từ đó để kiểm tra tính đúng đắn về mặt ngữ pháp của chương trình nguồn vấn đề này thuộc công việc của modul phân tích cú pháp 12 ... trong chương trình nguần - Bộ kiểm tra kiểu: làm nhiệm vụ thực thi của các luật trong hệ thống kiểu - Kiểu hệ thống thực chất chỉ là các định nghĩa cú pháp điều khiển → Kĩ thuật: cú pháp điều khiển và lược đồ dịch - Các kiểu hệ thống khác nhau có thể được dùng trong chương trình dịch khác nhau hay trong các bộ xử lý khác nhau của cùng ngôn ngữ Câu 10: Những đặc trưng cơ bản của ngôn ngữ lập trình. .. thống khác nhau có thể được dùng trong chương trình dịch khác nhau hay trong các bộ xử lý khác nhau của cùng ngôn ngữ Câu 10: Những đặc trưng cơ bản của ngôn ngữ lập trình - Từ vựng + trong ngôn ngữ lập trình từ vựng được xây dựng dựa trên bộ chữ gồm có:  chữ cái: A…Z, a z  chữ số: 0…9  Khái niệm toán học: +, -, /, (, ), =, >,

Ngày đăng: 28/08/2015, 21:20

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan