PDA

View Full Version : Hướng dẫn viết 1 compiler dơn giản !



netcollec
18-04-2005, 22:15
Em đang tìm tài liệu để viết 1 trình biên dịch đơn giản thực hiện công việc sau : dịch các chương trình gồn phép gán và repeat như của PASCAL . ai có tài liệu , chương trình mẫu hay website nào liên quan giúp em với ! cảm ơn nhiều !

htbn_hoang
19-04-2005, 09:15
Chào, để viết trình biên dịch,,bạn nên đọc cuốn "Trình biên dịch" trước, bạn sẽ hiểu được cơ chế làm việc của một trình biên dịch. Để chuyển một tập tin văn bản sang tập tin exe, bạn cần những kiến thức liên quan đến exe và lập trình Assembly. Tuy nhiên có một cách đơn giản hơn, bạn có thể làm chương trình lập trình cho phép gõ Tiếng Việt chẳng hạn, sau đó bạn chuyển tập tin đó sang tập tin của trình biên dịch tương ứng (chẳng hạn tập tin .pas hay .cpp của Pascal hay C) và dùng trình biên dich tương ứng để dịch tập tin đó (nếu dùng Borland C/C++ 3.1 thì trình biên dịch là bcc.exe)
Thân.

t2l3k4
23-04-2005, 21:10
xời ơi, vậy chẳng phải là ăn cắp rùi sao
xài tpc.exe hoặc javac.exe chứ gì

chẳng qua làm vậy để trực quan hơn thui, cũng là ăn cắp hà, ko nên đâu

whitepenguin
25-04-2005, 09:46
Tất cả code đều được chuyển về ngôn ngữ assembly ,và từ đó chuyển thành mả máy ,bác đọc cuốn art of Assembly đi ,phần cuối nó có chỉ về 1 trình compiler làm việc và hoạt động như thế nào đó ,àh mà bác có biết Opcode chưa ,bác có biết viết 1 lệnh assembly (mov ax,bx chẳng hạn) -->Opcode chưa ?? ,nếu chưa biết thì phải học ,CPU có cả trăm chỉ thị !!! ,học cấu trúc của exe và cách hoạt động của hệ điều hành DOS,tất cả nhưng cái này phải biết trườc khi bắt tay vào làm việc với compiler

themummy
09-05-2005, 10:48
tui nghĩ tốt nhất là nên kiếm một compiler của một hãng đã có sẵn trên thị trường. Nó sẽ không gây rắc rối cho bạn sau này khi biên dịch một chương trình do bạn viết...

neverstop
10-05-2005, 05:36
mình cũng đang quan tâm về trình biên dịch. mình đã học qua asm rồi. nhưng để viết được 1 trình biên dịch thì ko dễ dàng. mình có 1 cuốn nói về phần này, viết trình biên dịch bằng C. nhưng chưa hiểu rõ. bạn nào biết thì chỉ giúp mình cái.

tinman
10-05-2005, 06:28
Nếu biết PASCAL: http://compilers.iecc.com/crenshaw/ hay http://www.freepascal.org/

Nêu biết JAVA: http://www.antlr.org/ http://www.antlr.org/doc/getting-started.html
hay là https://javacc.dev.java.net/

Nếu biết C/C++: http://www.scifac.ru.ac.za/coco/

Ví dụ đơn giản dùng ANTLR, nếu không thích dùng java thì có thể dùng ANTLR để tạo ra C/C++ compiler codes.

http://www.cs.usfca.edu/~parrt/course/652/lectures/antlr.html

Ví dụ 1 compiler Pascal nhỏ, dùng ANTLR với C/C++ output option.

http://www.imada.sdu.dk/~morling/

neverstop
12-05-2005, 20:44
mình tiếng Anh không khá lắm, đọc ko lĩnh hội được nhiều. bạn có tài liệu nào viết cho C nói về cái này không (viết dễ hiểu chút chút, tiếng Việt thì càng tốt) chia sẻ cho tớ cái. mail của mình rilwis@yahoo.com

whitepenguin
28-06-2005, 18:04
oe oe ,nếu đóc tiếng việt thì ko có đâu ---> hãy đọc Art of Assembly (1000 Tr),mà cho dù biên dịch bằng C hay asm gì thì cũng phải thành 01110011100.. mà thui ,vấn đề là làm sao biến mấy câu lệnh trên C hay asm thành mấy cái con số đó hô hô hô ,và học cấu trúc của EXE file ,ví dụ như đầu vào của exe file là MZ hehehe ,tiếp đó là các thông tin cần thiết ,có cả vùng PSP mấy cái này ọng rành chưa ,nếu chưa thì đừng mơ hô hô ,sau vùng PSP của Exe sẽ là 1000101100... ->các Opcode

Zero
01-07-2005, 23:29
Bạn có thể đọc Trình biên dịch nguyên lý kỹ thuật và công cụ (2 tập) bộ này được dịch rất tốt (hiếm gặp ở VN ^_^). Tuy nhiên sách kô nói nhiều về sinh mã máy, kiến thức cô đọng và súc tích.

Compiler là 1 lĩnh vực rất phức tạp bạn nên suy nghĩ kĩ còn rất nhiều thứ thực tế hơn để học.

tuy phong
04-11-2005, 06:18
mình cũng đang quan tâm về trình biên dịch. mình đã học qua asm rồi. nhưng để viết được 1 trình biên dịch thì ko dễ dàng. mình có 1 cuốn nói về phần này, viết trình biên dịch bằng C. nhưng chưa hiểu rõ. bạn nào biết thì chỉ giúp mình cái.
Vậy thì bạn phải send cho mình thì mình mới giúp được chứ, send qua mail huynguyen8505@yahoo.com

puppy
03-01-2006, 14:33
Trình biên dịch viết bằng ngôn ngữ gì cũng được đâu nhất thiết phải viết bằng assembly. Tui thấy viết C++ là tốt nhât. Nói chung bạn nên kiếm sách về trình biên dịch để đọc (Hình như tiếng việt chả có cuốn nào hay cả) rồi sau đó bạn hiện thực bằng 1 ngôn ngữ bất kỳ.

Các bước nói chung có thể bao gồm như sau (Học lâu quá wên rồi :). Tui nhớ tới 7 bước sao nhớ còn co 5 bước à. Bạn mua sách xem lai. Sách này có bán ở thư quán khoan CNTT trường DHBK HCM đó ).

1. Phân tích từ vựng (Tách từ vựng trong file cần biên dịch thành các token).
2. Phân tích cú pháp (Kiểm tra xem có đúng cú pháp hay hông)
3. Phân tích ngữ nghĩa
4. Sinh mã trung gian
4. Tối ưu mã trung gian
5. Sinh mã đối tượng (Cái này la file exe rồi)

Nói chung là như vây. Bạn kiếm sách đọc thì có thể viết được nhưng rất là khó khăn. Tốt nhất chả nên viết làm gì. Xài của người khác viết rồi cho gọn.