Viết chương trình phân tích cú pháp, tạo và hiển thị cây cú pháp của một biểu thức chính quy

20 833 1
Viết chương trình phân tích cú pháp, tạo và hiển thị cây cú pháp của một biểu thức chính quy

Đ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

Khoa Khoa học máy tính ĐỒ ÁN AUTOMAT Viết chương trình phân tíchpháp, tạo hiển thị cây pháp của một biểu thức chính quy. MỤC LỤC: Phần mở đầu Phần I.Cơ sở lí thuyết. Phần II.Chương trình. Phần III.Phần code chính của chương trình. Phần IV.Tài liệu tham khảo. Phần mở đầu • Mục đích của việc giải quyết bài toán được giao: Hiểu được định nghĩa về biểu thức chính qui.Phương pháp phân tích biểu thức chính qui. • Để thực hiện đò án Viết chương trình phân tíchpháp, tạo hiển thị câypháp của một biểu thức chính quy ta cần phải:  Thực hiện xử lí chuỗi nhập vào.Xác định xem biểu thức có phải biểu thức chính qui không.  Định dạng lại biểu thức.  Đưa biểu thức về dạng hậu tố.  Biểu diễn biểu thức chính qui dưới dạng cây nhị phân. Phần I.Cơ sở lí thuyết I.Định nghĩa biểu thức chính qui: Định nghĩa: Biểu thức chính quy được định nghĩa một cách đệ quy như sau: 1. ε là biểu thức chính quy. L(ε)={ε}. ∅ là biểu thức chính quy. L(∅)={∅}. nếu a∈∑, a là biểu thức chính quy. L(a)={a}. 2. Nếu r, s là các biểu thức chính quy thì:  ((r)) là biểu thức chính quy. L((r))=L(r);  r+s là biểu thức chính quy. L(r+s)=L(r)∪L(s);  r.s là biểu thức chính quy. L(r.s)=L(r).L(s);  r* là biểu thức chính quy. L(r*)=L(r)*. 3. Biểu thức chính quy chỉ định nghĩa như trong 1 2. II.Tính chất của biểu thức chính qui: 1.Phép hợp: • r + ∅ = ∅ + r = r • r + r = r • r + s = s + r • (r + s) + t = r + (s + t) = r + s + t 2.Phép bao đóng: • e* = e • ∅* = ∅ • r*r* = r* • (r*)* = r* • r* = e + r + r 2 + … + r k + … • r* = e + r + • (e + r) + = (e + r)* = r* • r*r = r r* = r + 3. Phép nối kết: • re = er = r • r∅ = ∅r = ∅ • (r + s) t = rt + st • r (s + t) = rs + rt 4. Tổng hợp: • (r* + s*)* = (r*s*)* = (r + s)* • (rs)*r = r(sr)* • (r*s)* r* = (r + s)* 5. Thứ tự ưu tiên của phép toán: * (bao đóng), . (phép nối kết), + (phép hợp). Ví dụ: Biểu thức chính quy cho ngôn ngữ gồm các xâu nhị phân mà không có hai số 0 hay hai số 1 liên nhau. (01) * +(10) * +0(10) * +1(01) * hoặc là: (ε+1)(01) * (ε+0) Thứ tự ưu tiên của phép toán: *, . , + Do đó: 01 * + 1 được hiểu như sau: (0(1) * ) + 1 (Biểu thức dạng hậu tố). Phần II.Chương trình 1.Cấu trúc chương trình: Chương trình được viết bằng ngôn ngữ c# trên ứng dụng WindowsForm của chương trình visual studio 2008. Chương trình được viết trên 2 Form, class.  frm_KhoiDong:Hiển thị thông tin đồ án.  frm_ChuongTrinhChinh:Thực hiện các công việc được phải làm.  Các class hỗ trợ cho việc thực hiện chương trình. -KiemTraRE:Kiểm tra biểu thức chính qui nhập vào. -RE:Định dạng biểu thức chính qui đưa biểu thức chính qui về dạng hậu tố. -State,map,CacLoi,ThongTinBanDau hỗ trợ cho các class KiemTraRE,RE. 2.Sơ đồ khối thuật toán: False Hiển thị cây Nhập vào biểu thức chính qui True Đưa về dạng hậu tốĐịnh dạng biểu thức 3.Giao diện chương trình: Khởi động Chương trình chính Kết quả Phần III.Phần code chính của chương trình using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Text.RegularExpressions; using System.IO; namespace Automata { public partial class frm_ChuongTrinhChinh : Form { RE BieuThucChinhQui = new RE(); Bitmap NoiVe; Graphics g; VeNut[] HinhCay; Point[] ViTriNut; [...]... Sts.ReadToEnd(); Sts.Close(); fs.Close(); txt_RE.Text = tempstr; } } private void btn_Compile_Click(object sender, EventArgs e) { if (txt_RE.Text.Length == 0) { MessageBox.Show("Bạn phải nhập vào một Biểu Thức Chính Quy. ", "Lỗi!", MessageBoxButtons.OK, MessageBoxIcon.Error); txt_RE.Select(); return; } try { CacLoi errCode = BieuThucChinhQui.CompileWithStats(this.txt_RE.Text, txt_RE,txt_BanDau,txt_SauDinhDang,txt_Hauto); . đò án Viết chương trình phân tích cú pháp, tạo và hiển thị cây cú pháp của một biểu thức chính quy ta cần phải:  Thực hiện xử lí chuỗi nhập vào.Xác định xem biểu thức có phải biểu thức chính. AUTOMAT Viết chương trình phân tích cú pháp, tạo và hiển thị cây cú pháp của một biểu thức chính quy. MỤC LỤC: Phần mở đầu Phần I.Cơ sở lí thuyết. Phần II .Chương trình. Phần III.Phần code chính của. là biểu thức chính quy. L((r))=L(r);  r+s là biểu thức chính quy. L(r+s)=L(r)∪L(s);  r.s là biểu thức chính quy. L(r.s)=L(r).L(s);  r* là biểu thức chính quy. L(r*)=L(r)*. 3. Biểu thức chính

Ngày đăng: 27/03/2014, 11:04

Từ khóa liên quan

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

Tài liệu liên quan