tailieunhanh - Hướng dẫn tạo bộ phân tích từ vựng cho ngôn ngữ Pascal

Cách dễ dàng và nhanh chóng nhất để xây dựng bộ phân tích từ vựng cho 1 ngôn ngữ nào đó là dùng ngôn ngữ Lex (Lexical Analyzer Generator). File Lex chứa các biểu thức chính quy, mỗi biểu thức chính quy miêu tả 1 token cụ thể của ngôn ngữ, định dạng tổng quát của file Lex như sau: %{ //các lệnh định nghĩa viết bằng C hay C++ %} %% //các biểu thức chính quy nhận dạng các token %% //các đoạn code C hay C++ miêu tả ứng dụng Sau đây là file Lex đọc file mã. | Hướng dẫn tạo bộ phân tích từ vựng cho ngôn ngữ Pascal Xin hướng dẫn tạo bộ phân tích từ vựng cho ngôn ngữ Pascal tức là chương trình đọc tệp .pas và in kết quả phân tích từ vựng ra màn hình. Cách dễ dàng và nhanh chóng nhất để xây dựng bộ phân tích từ vựng cho 1 ngôn ngữ nào đó là dùng ngôn ngữ Lex Lexical Analyzer Generator . File Lex chứa các biểu thức chính quy mỗi biểu thức chính quy miêu tả 1 token cụ thể của ngôn ngữ định dạng tổng quát của file Lex như sau các lệnh định nghĩa viết bằng C hay C . các biểu thức chính quy nhận dạng các token các đoạn code C hay C miêu tả ứng dụng Sau đây là file Lex đọc file mã nguồn pascal rồi xuất ra danh sách các token tương ứng include định nghĩa các biến cần dùng unsigned char ch unsigned yline 1 char buff 2048 hàm dò chuỗi chú thích void scan_comment unsigned char ch while ch input 0 ch if ch n yline if ch return fprintf stderr EOF duoc tim thay trong luc do chu thich hang d n yline exit 1 hàm dò hằng chuỗi void scan_string unsigned char ch pret int i 0 while ch input 0 ch if ch n yline if i 2047 fprintf stderr Chuoi qua dai d n yline exit 1 buff i ch buff i 0 if ch return fprintf stderr EOF duoc tim thay trong luc do chuoi hang d n yline exit 1 . scan_comment . scan_string printf string s buff printf addop - printf subop printf mulop printf divop printf lessop printf thanop printf lparent printf rparent printf comma printf pcomma printf toodot printf assign printf equal . printf dot - 0-9 0-9 printf iconst s yytext 0-9 . 0-9 - 0-9 . 0-9 0-9 . 0-9 eE - 0-9 - 0-9 . 0-9 eE - 0-9 printf rconst s yytext pP rR oO gG rR aA mM printf program uU sS eE sS printf uses vV aA rR printf var tT yY pp eE printf type bB eE gG iI nN printf begin eE nN dD printf end fF uU nN cC tT iI oO nN printf function pP rR oO cC eE dD uU rR eE printf procedure il fF printf if tT hH eE nN . printf then eE lL sS eE printf else dD oO printf do rR eE pP eE aA tT printf repeat uU nN tT iI lL printf until a-zA-Z a-zA-Z0-9 _ printf ident s yytext t

TỪ KHÓA LIÊN QUAN