- ต่อจาก part ที่ 18 ทดสอบการทำงานของ Parser เพื่อแจ้ง error ในส่วนการตรวจสอบ syntax ด้วย grammar ที่ผลิตการประกาศตัวแปร
pro7beginner.blogspot.com ยินดีต้อนรับผู้รักในการเขียนโปรแกรมทุกท่าน ที่กำลังหัดเดิน ที่ยังไม่รู้ว่าจะเริ่มต้นเขียนโปรแกรมสักภาษาหนึ่งได้อย่างไร ลองอ่านบทความเหล่านี้ และรู้จักเพื่อนคนนี้นะ (อ้อ รบกวนให้ลิงค์หรือเครดิตกลับมาที่บล็อกนี้ด้วยนะ ขอบคุณครับ)
วันพฤหัสบดีที่ 29 พฤษภาคม พ.ศ. 2557
ทบทวน Compiler ด้วยกันนะ part 18-1
- ต่อจาก part ที่ 18 ทดสอบการทำงานของ Parser เพื่อแจ้ง error ในส่วนการตรวจสอบ syntax ด้วย grammar ที่ผลิตการประกาศตัวแปร
ทบทวน Compiler ด้วยกันนะ part 18
- grammar ส่วนตรวจสอบไวยากรณ์
***หมายเหตุ
- เขียน found ผิดเป็น fount ขออภัยด้วยครับ
ทบทวน Compiler ด้วยกันนะ part 17
- อ่านไฟล์ด้วยคลาส StreamReader สำหรับภาษา C# และคลาส FileReader สำหรับภาษา Java พร้อมเตรียมพื้นที่ลงโค้ด
ทบทวน Compiler ด้วยกันนะ part 16
- เตรียม grammar สำหรับเขียน compiler ทั้งในส่วน การประกาศตัวแปร การเรียกฟังก์ชัน การใช้ for และนิพจน์คำนวณอย่างมีลำดับ
ทบทวน Compiler ด้วยกันนะ part 15-2
- เสนอแนะวิธีการวาง LBL กับ JUMP สำหรับ grammar ของ loop for (โจทย์ในชั้นเรียน) เทียบกับคำสั่งภาษาเครื่องสมมติ (Code Generator)
ทบทวน Compiler ด้วยกันนะ part 15-1
- การวาง LBL ร่วมกับ JUMP เพื่อสร้าง Intermediate code ของ if, if-else และ nested if
ทบทวน Compiler ด้วยกันนะ part 14
- จากโปรแกรมที่สามารถกระทำการบวกหรือการคูณอย่างมีลำดับชั้นความสำคัญ เราเปลี่ยนการบวกหรือคูณที่นำมาซึ่งผลลัพธ์นั้นเป็น Intermediate code ในรูปแบบ
[ operator, operand1, operand2, result ]
ทบทวน Compiler ด้วยกันนะ part 13
- เขียน grammar แสดงลำดับความสำคัญของเครื่องหมายคูณซึ่งมากกว่าเครื่องหมายบวก
- เขียนโปรแกรม Parser จาก grammar ข้างต้น เพื่อหาผลลัพธ์ของ 1 + 2 * 3 ย่อมมีค่าเท่ากับ 7 โดยใช้ภาษา C#
ทบทวน Compiler ด้วยกันนะ part 12
- เขียนโปรแกรมหาผลรวมของเลขจำนวนเต็มบวกที่กำหนดให้โดยกระบวนการ Parser
- read() ล่วงหน้าทุกครั้งก่อนจะเริ่มต้นทำงานเมธอดแรกของ grammar
- เมื่อพบ terminal ให้ read() เสมอ เพื่อที่ Token ที่เรากำลังพิจารณาอยู่นั้นเปลี่ยนเป็นคำถัดไป
ทบทวน Compiler ด้วยกันนะ part 11
- อธิบาย ATG (Attribute Grammar) ของการบวกตัวเลขจำนวนเต็มบวกกี่จำนวนก็ได้ เมื่อ
- syn แทนการ Synthesized
- in แทนการ Inherited
- อ่านเพิ่มเติม การเขียน Semantic (พร้อม Source Code)
ทบทวน Compiler ด้วยกันนะ part 10
- แก้ความกำกวมของไวยากรณ์ อันได้แก่ Left Recursion และ Left Factoring
ทบทวน Compiler ด้วยกันนะ part 9
- รู้จักกับ grammar และการสร้าง grammar จาก source code
- เมื่อกำหนดให้อักษรพิมพ์ใหญ่แทน non-terminal ส่วนอักษรพิมพ์เล็กแทน terminal โดยที่ non-terminal สามารถแยก (สร้าง) ตัวเองเป็น non-terminal และ terminal อีกเท่าใดก็ได้ ต่างจาก terminal ที่ไม่สามารถแยก (สร้าง) ตัวเองได้อีก
- ใช้ non-terminal และ terminal ข้างต้นออกแบบ grammar ของการประกาศตัวแปรอย่างทั่วไป
ทบทวน Compiler ด้วยกันนะ part 8-2
- ต่อเนื่องจาก MiniCompiler (CT414) with C# and Java part 08-01 ครับ
ทบทวน Compiler ด้วยกันนะ part 8-1
- สร้างคลาส Token เก็บชื่อคำและประเภทของคำ
- สร้างคลาส TokenStream เก็บคลาส Token อีกทีหนึ่ง
- ไม่สร้าง SymbolTable เพราะชื่อคำและประเภทของคำใช้ชนิดเป็นสตริง
ทบทวน Compiler ด้วยกันนะ part 8
- แยกคำออกเป็นประเภทต่างๆต่อเนื่องจาก part ที่แล้ว
- เปรียบเทียบสตริงจะใช้เมธอด equals หรือ Equals เพราะสตริงถูกจัดเก็บในหน่วยความจำในรูปแบบเฉพาะที่ต่างจากชนิดข้อมูลอื่นๆ
- เปรียบเทียบอักษรหรือตัวเลข โดยเครื่องหมาย ==
วันพุธที่ 28 พฤษภาคม พ.ศ. 2557
ทบทวน Compiler ด้วยกันนะ part 7
- เริ่มต้นการวางคลาสที่ใช้ในการตัดคำ ใช้วิเคราะห์แกรมม่า ใช้สังเคราะห์โค้ดภาษาเครื่อง ที่ตั้งชื่อว่า MyLexical, MyParser, MyCodeGen ตามลำดับ
- ส่งสตริงโค้ดต้นฉบับ (Source Code) ให้กับออบเจ็กต์ MyLexical เพื่อเตรียมนำไปตัดคำ
- สั่งให้ออบเจ็กต์ MyLexical เรียกเมธอด Do เพื่อตัดคำ โดยเริ่มจากอ่านตัวอักษร (Character) ทีละหนึ่งตัวอักษรแล้วรวมกันเป็นคำ (Word) ก่อนจะแสดงผลออกมาว่าถูกแยกเป็น Keyword Integer Operator หรือ Separator
ทบทวน Compiler ด้วยกันนะ part 6
- แนะนำการใช้เมธอด a.get(int index) สำหรับภาษา Java และ a[int index] สำหรับภาษา C# เมื่อต้องการข้อมูลจากโครงสร้าง ArrayList ที่ชื่อ a
- ความแตกต่างระหว่าง Generic Type กับ Object Type เมื่อ Generic Type ลดการแปลงข้อมูลได้มากกว่าแบบ Object Type
ทบทวน Compiler ด้วยกันนะ part 5
- แนะนำโครงสร้างข้อมูล ArrayList ขั้นต้น สำหรับภาษา Java และ C#
***หมายเหตุ
- ขออภัยที่ part นี้มีเสียงรบกวนมากไปหน่อย
- และได้ปรับเสียงพูดให้ดังขึ้นแล้วครับ
ทบทวน Compiler ด้วยกันนะ part 4
- ดึงข้อมูลจากเมธอทโดยใช้คีย์ ref สำหรับ C#
- หรือดึงข้อมูลจากเมธอทโดยใช้การสร้างออบเจ็กต์ใหม่แล้ว Pass by Value แทนการ Pass by Reference ซึ่งใช้ได้ทั้ง Java และ C#
ทบทวน Compiler ด้วยกันนะ part 3
- อธิบายการใช้งานเมธอด toString หรือ ToString เพื่อแสดงรายละเอียดของคำ
- เขียนโปรแกรมเพิ่มและแสดงคำอย่างง่ายๆ
วันศุกร์ที่ 16 พฤษภาคม พ.ศ. 2557
ชวนคุยภาษาจาวา part 1 : พี่นรินทร
สมัครสมาชิก:
บทความ (Atom)