คลาส 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
อ่านเนื้อหาที่เกี่ยวข้อง ก่อนหน้า หรือ ถัดไป
ไม่มีความคิดเห็น:
แสดงความคิดเห็น