ไวยากรณ์ คือ โครงสร้างของภาษา หรือ รูปแบบการเขียน source code
ถูกสร้างโดย Noam , Backus , Form [BNF]
Token
คือ หน่วยที่เล็กที่สุด หรือหน่วยที่ย่อยที่สุด แบ่งได้อีก 4 อย่าง
1. Reserved word such as if , while
2. Constants such as 42 , "Hello"
3. Special symbols such as "," , "<=" , "+"
4. Identifiers such as x24, putcahar
Regular Expression
คือ หน่วยย่อยสุดของภาษา พูดถึงพวก String หรือ Token
Ex. 1 0 * -> คือ นิยาม
regular expression | regular Language
1 0 ตามด้วย 0 กี่ตัวก็ได้ | 10 , 100 , 1000
Ex. a b * a
regular expression | regular Language
a b ตามด้วย a กี่ตัวก็ได้ | aba , abaa , abaaa
grammar มีปลายทางเสมอ โดยจะจบที่ Token
non - Terminal คือ พวกที่ยังไม่สิ้นสุด
Terminal คือ พวกที่สิ้นสุดเเล้ว Token
========================================================================
รูปแบบของ [BNF]
ตัวอย่างรูปแบบภาษา
จุดเริ่มต้น <> แทน non - Terminal
1. <sentence> : : = <non -phrase> <verb - phrase>
2. <non - phrase> : : = <article> <noun>3. <article> : : = a | the // | เเทน หรือ
4. <noun> : : = girl | dog
5. <verb - phrase> : : = <verb> <non phrase>
6. <verb> : : = sees | pet
ตรวจสอบภาษา Ex. " The girl sees a dog "
วิธีทำ 1. เริ่มจาก sentence
<sentence> => <non -phrase> <verb -phrase>
=> <article> <noun> <verb -phrase>
=> the <noun> <verb -phrase>
=> the girl <verb -phrase>
=> the girl <verb > <noun -phrase>
=> the girl sees <noun -phrase>
=> the girl sees <article> <noun>
=> the girl sees a <noun>
=> the girl sees a dog // ทำจนกว่าจะหมด non - Terminal
เพราะฉะนั้น ถูกต้องหมดตาม grammar
ตัวอย่างรูปแบบภาษา
1. <number> : : = <number> <digit> | <digit>
2. <digit> : : = 0 | 1 | 2 | ... | 9
ตรวจสอบภาษา Ex2. " 2 3 4 "
วิธีทำ <number> => <number> <digit>
=> <number> <digit> <digit>
=> <digit> <digit> <digit>
=> 2 <digit> <digit>
=> 2 3 <digit>
=> 2 3 5
เพราะฉะนั้น ถูกต้องหมดตาม grammar
ตัวอย่างรูปแบบภาษา " คำนวณเลข 1"
1. <exp> : : = <exp> + <exp> | <exp> * <exp> | <<exp>> | <number>
2. <number> : : = <number> <digit> | <digit>
3. <digit> : : = 0 | 1 | 2 | ... | 9
ตรวจสอบภาษา Ex2. " 3+4*5 "
วิธีทำ ตรวจสอบด้วย Parse Tree <exp>
/ | \
<exp> + <exp>
| / | \
<number> <exp> * <exp>
| | |
<digit> <number> <number>
| | |
3 <digit> <digit>
| |
4 5
นิยามในการ บวก เเละ คูณเลข สมมุติ 3+4*5 จะต้อง นำ 4*5 ก่อน เเล้ว ค่อย นำมา +3
อยากจะระบายมากเลยนะครับว่า Regular Expression มันไม่เล็กเหมือนชื่อนะครับ ตอนเรียนกว่าจะเข้าใจนี้แถบคลาน ถามเพื่อนตั้งหลายคน แต่สุดท้ายก็เข้าใจแล้วก็แอบไปตายคาห้องสอบเช่นเดิมนะครับโฮ้ะๆ o(︶︿︶)o ไว้อาลัยสามวิ