Trình biên dịch : Nguyên Lý - Kỹ thuật - Công cụ part 7

Tất cả các trình biên dịch đều hoặc là biên dịch cùng bản hoặc là biên dịch chéo bản. Một trình biên dịch có thể sản xuất ra mã chủ định để chạy trên cùng một kiểu máy tính và một kiểu hệ điều hành như là chạy trên trên máy mà trình biên dịch tự nó tiến hành được gọi là một trình biên dịch cùng bản. | PHẦN KẾT NÓI CÁC KỸ THUẬT 83 p lookup lexbuf if p 0 p insert lexbuf ID tokenval p return symtable p .token else if t EOF return DONE else tokenval NONE return t f parser. c Ainclude int lookahead parse o phân tích cú pháp và dịch danh sách biểu thức lookahead lexan while lookahead DONE expr match expr 0 int t term while 1 switch lookahead case case 1- t lookahead match lookahead term emit t NONE continue default return 84 MỘT TRÌNH BIÊN DỊCH MỘT LƯỢT ĐƠN GIĂN term 0 int t factor while 1 switch lookahead case 1 case 1 case DIV case MOD t lookahead match lookahead factor emit t NONE continue default return factor switch lookahead case match 1 expt match break case NUM emit NUM tokenval match NUM break case ID emit ID tokenval match ID break default error syntax error match t int t if lookahead t lookahead lexan else error syntax error PHẮN KÉT NỐI CÁC KỲ THUẬT 85 eiũitter. c i t t t i i iHi iH include eraitft tval tạo ra kết quả int t tval switch t case case case case printf c n t break case DIV printf DIV n break case MOD printf MOD n break case NUM printf d n tval break case ID printf s n symtable tval .lexptr break default printf token d tokenval d n t tval symbol c include define STRMAX 999 kích thước mãng lexemes define SYMMAX 100 kích thước báng sỵmtable char lexemes STRMAX int lastchar - -1 vị trí được dùng cuôí cùng trong lexemes struct entry symtable SYMMAX int lastentry 0 vị trí được dùng cuối cùng trong symtable int lookup s trà về vị trí cua mục ghi cho s char s mt p for p lastentry p 0 p p-l if strcmp symtable p .lexptr s 0 return p return 0

Không thể tạo bản xem trước, hãy bấm tải xuống
TÀI LIỆU MỚI ĐĂNG
Đã phát hiện trình chặn quảng cáo AdBlock
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.