วันพุธที่ 27 ตุลาคม พ.ศ. 2553

Compiler : คลาส TokenStream (ภาษา Java)

คลาส TokenStream
เพื่อนๆคงคุ้นเคยแล้วกับ Token Stream แล้วมันคืออะไร ?
    Token Stream คือแหล่งเก็บ Tokens ที่ได้มาจาก Source Code โดยกระบวนการ Lexical สมมติเรามี Source Code เป็น "int" "a" "=" "10" + "10" ";" (สตริงทั้งหมด) ผลจึงเป็น

ด้วยเหตุผลเรื่องหน่วยความจำ เราสามารถเก็บสตริงทั้งหมดให้อยู่ในรูปตัวเลขแทน โดยนำ Symbol Table และตาราง Token Type มาช่วย

ผลลัพธ์จึงเปลี่ยนเป็น

ฉะนั้นหากต้องการเปลี่ยนจากหมายเลขเป็นสตริงเช่นเดิม ก็เพียงนำไปเทียบกับ Symbol Table และตาราง Token Type ข้างต้น

(รูปหมายเลข 156)
- สร้างคลาส TokenStream

(รูปหมายเลข 157)
- บรรทัดที่ 5 ประกาศแอตทริบิวต์ชื่อ tokenStream พร้อมให้ค่าออบเจ็คก์ของคลาส LinkedList โดยบังคับ Generic เป็นคลาส Token
- บรรทัดที่ 7 สร้างเมธอดชื่อ add สำหรับบริการเพิ่ม Token โดยรับ tokenNameIndex และ tokenTypeIndex ซึ่งมีชนิดเป็น int ทั้งคู่

(รูปหมายเลข 158)
- บรรทัดที่ 12 สร้างเมธอดชื่อ size สำหรับคืนจำนวน Token ทั้งหมดที่มี
- บรรทัดที่ 16 สร้างเมธอดชื่อ get สำหรับร้องขอ Token ที่เก็บไว้กับ tokenStream โดยระบุด้วยหมายเลขลำดับที่เรียกว่า index
เช่น ใส่ 0 ผลคือออบเจ็กค์ของคลาส Token เป็น (0, 100) ซึ่งหมายถึง ("int", "Keywords")
- บรรทัดที่ 24 สร้างเมธอดชื่อ display สำหรับแสดง Token ทั้งหมดที่เก็บไว้ โดยเรียกเมธอด toString ของคลาส Token

อ่านเนื้อหาที่เกี่ยวข้อง ก่อนหน้า หรือ ถัดไป

ไม่มีความคิดเห็น:

แสดงความคิดเห็น