ฉันกำลังค้นหาคำจำกัดความที่ชัดเจนของสิ่งที่ "tokenizer", "parser" และ "lexer" คืออะไรและเกี่ยวข้องกันอย่างไร (เช่น parser ใช้ tokenizer หรือในทางกลับกัน)? ฉันต้องสร้างโปรแกรมจะผ่านไฟล์ต้นฉบับ c / h เพื่อแยกการประกาศข้อมูลและคำจำกัดความ
ฉันกำลังมองหาตัวอย่างและสามารถหาข้อมูลได้บ้าง แต่ฉันพยายามดิ้นรนเพื่อเข้าใจแนวคิดพื้นฐานเช่นกฎไวยากรณ์การแยกวิเคราะห์ต้นไม้และต้นไม้ไวยากรณ์ที่เป็นนามธรรมและวิธีที่พวกเขามีความสัมพันธ์ซึ่งกันและกัน ในที่สุดแนวคิดเหล่านี้จำเป็นต้องเก็บไว้ในโปรแกรมจริง แต่ 1) สิ่งที่พวกเขาดูเหมือน 2) มีการใช้งานทั่วไป
ฉันดูวิกิพีเดียในหัวข้อและโปรแกรมเหล่านี้เช่น Lex และ Yacc แต่ไม่เคยผ่านชั้นเรียนคอมไพเลอร์ (หลัก EE) ฉันพบว่ามันยากที่จะเข้าใจว่าเกิดอะไรขึ้น