180 likes | 643 Views
ไวยากรณ์ของภาษาการทำโปรแกรม ( 2 ) (Syntax of programming languages). Extended BNF. เริ่มมีการปรับปรุงรูปแบบ BNF ให้สามารถเขียนได้ง่ายขึ้น เรียกว่ารูปแบบ EBNF ( Extended BNF ) หรือ EBNF ประเด็นสำคัญของการปรับปรุงคือ …………………………… โดยใช้สัญลักษณ์เพิ่มเข้ามาดังนี้. Extended BNF.
E N D
ไวยากรณ์ของภาษาการทำโปรแกรม (2)(Syntax of programming languages)
Extended BNF • เริ่มมีการปรับปรุงรูปแบบ BNF ให้สามารถเขียนได้ง่ายขึ้น เรียกว่ารูปแบบ EBNF (Extended BNF)หรือ EBNF • ประเด็นสำคัญของการปรับปรุงคือ ……………………………โดยใช้สัญลักษณ์เพิ่มเข้ามาดังนี้
Extended BNF • …………………………….…….อยู่ภายในเครื่องหมาย [ ] • หมายถึง ลำดับของสัญลักษณ์ซึ่งเป็นทางเลือก ซึ่งอาจจะเขียนหรือไม่ก็ได้ <if-STMT>→ if ‘(’ <expr> ‘)’ <stmt> [ else <stmt>] • ……………………………….. อยู่ภายในเครื่องหมาย ( ) และเขียนแยกกันโดยใช้ | • หมายถึง ใช้บ่งบอกตัวเลือกที่เป็นไปได้ทั้งหมด ซึ่งจะต้องเลือกว่าเป็นตัวใดตัวหนึ่งที่อยู่ภายในเครื่องหมาย ( ) เท่านั้น <term> → <term> ( + | - ) <constant>
Extended BNF • ………………………. อยู่ภายในเครื่องหมาย { } • หมายถึงสิ่งที่อยู่ในวงเล็บเกิดขึ้นซ้ำๆ กันได้หลายๆ ครั้ง • สำหรับกฎที่มีการเรียกตัวเองซ้ำ สามารถใช้ { } เพื่อทำให้การเรียกตัวเองซ้ำหมดไป <identifier> → <letter> { <letter> | <digit> }* • สามารถเพิ่มเติมสัญลักษณ์บอกการเกิดซ้ำ • {…}* หมายถึงสิ่งที่อยู่ในวงเล็บเกิดขึ้นซ้ำๆ กันได้ ……………………………. • {…}+ หมายถึงสิ่งที่อยู่ในวงเล็บเกิดขึ้นซ้ำๆ กันได้ …………………………….
ตัวอย่าง BNF • BNF <expr> <expr> + <term> | <expr> - <term> | <term> <term> <term> * <factor> | <term> / <factor> | <factor> • นิพจน์คือ เทอมเดี่ยวๆ เพียงเทอมเดียว (เช่น Y, 345) หรือ เป็นเทอมที่ซับซ้อนขึ้นโดยนำหลายๆ เทอมมา บวก ลบ คูณ หาร กันได้ (เช่น Y + 345 / 2 * Z) • เทอม คือ แฟคเตอร์หนึ่งแฟคเตอร์ หรือ หลายแฟคเตอร์มาคูณ หรือหารกัน
ตัวอย่าง BNF แปลงไปเป็น EBNF • EBNF
จงแปลงไวยากรณ์ BNF นี้ให้กลายเป็น EBNF <program> <stmts> <stmts> <stmt> ; | <stmt> ; <stmts> <stmt> <var> = <expr> <var> a | b | c | d <expr> <term> + <term> | <term> - <term> <term> <var> | <const> <const> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
จงแปลงไวยากรณ์ BNF นี้ให้กลายเป็น EBNF
Syntax Chart (Diagram) • แผนภูมิไวยากรณ์ ใช้ในการอธิบายไวยากรณ์ของภาษาคอมพิวเตอร์ โดยเริ่มต้นใช้ในการอธิบายภาษา Pascal โดยใช้รูปภาพอธิบายโครงสร้างภาษา • สัญลักษณ์นอนเทอร์มินอล จะถูกเขียนอยู่ใน…………………… • สัญลักษณ์เทอร์มินอล จะถูกเขียนอยู่ใน……………………….
BNF : arithmetic expressions <expression > ::= <expression >+<term > | <expression >- <term > | <term > <term > ::= <term >* <factor > | <term >/ <factor > | <factor > <factor > ::= number | name | ‘(’ <expression > ‘)’
Context-Free Grammars • Context-Free Grammars • Developed by Noam Chomsky in the mid-1950s • Language generators, meant to describe the syntax of natural languages
Context Free Grammar • ให้ ………………………………หรือ Context-Free-Grammar ประกอบด้วย 4 เซตจำกัด คือ • Vคือ ..................................................................................... • Tคือ ..................................................................................... • Pคือ ..................................................................................... • Sคือ .....................................................................................
Context Free Grammar LET G(V,T,S,P) V = T = S = P = <comp> ::= <expr>=<expr> <expr> ::= <num>|<num><op><num> <num> ::= <digit>|<num><digit> <digit> ::= 1|2|3|4|5|6|7|8|9 <op> ::= +|-
Q1: Is 1 Î L(G)? Q2: Is 1+1 Î L(G)? Q3: Is 1+1=3 Î L(G)? Q4: Is 1-2=-1 Î L(G)? Q5: Is 10-2-3=5 Î L(G)? Context Free Grammar พิจารณา ประโยค 1 – 5 ว่าเป็นสมาชิกของ Grammar หรือไม่