1 / 15

ไวยากรณ์ของภาษาการทำโปรแกรม ( 2 ) (Syntax of programming languages)

ไวยากรณ์ของภาษาการทำโปรแกรม ( 2 ) (Syntax of programming languages). Extended BNF. เริ่มมีการปรับปรุงรูปแบบ BNF ให้สามารถเขียนได้ง่ายขึ้น เรียกว่ารูปแบบ EBNF ( Extended BNF ) หรือ EBNF ประเด็นสำคัญของการปรับปรุงคือ …………………………… โดยใช้สัญลักษณ์เพิ่มเข้ามาดังนี้. Extended BNF.

shaun
Download Presentation

ไวยากรณ์ของภาษาการทำโปรแกรม ( 2 ) (Syntax of programming languages)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ไวยากรณ์ของภาษาการทำโปรแกรม (2)(Syntax of programming languages)

  2. Extended BNF • เริ่มมีการปรับปรุงรูปแบบ BNF ให้สามารถเขียนได้ง่ายขึ้น เรียกว่ารูปแบบ EBNF (Extended BNF)หรือ EBNF • ประเด็นสำคัญของการปรับปรุงคือ ……………………………โดยใช้สัญลักษณ์เพิ่มเข้ามาดังนี้

  3. Extended BNF • …………………………….…….อยู่ภายในเครื่องหมาย [ ] • หมายถึง ลำดับของสัญลักษณ์ซึ่งเป็นทางเลือก ซึ่งอาจจะเขียนหรือไม่ก็ได้ <if-STMT>→ if ‘(’ <expr> ‘)’ <stmt> [ else <stmt>] • ……………………………….. อยู่ภายในเครื่องหมาย ( ) และเขียนแยกกันโดยใช้ | • หมายถึง ใช้บ่งบอกตัวเลือกที่เป็นไปได้ทั้งหมด ซึ่งจะต้องเลือกว่าเป็นตัวใดตัวหนึ่งที่อยู่ภายในเครื่องหมาย ( ) เท่านั้น <term> → <term> ( + | - ) <constant>

  4. Extended BNF • ………………………. อยู่ภายในเครื่องหมาย { } • หมายถึงสิ่งที่อยู่ในวงเล็บเกิดขึ้นซ้ำๆ กันได้หลายๆ ครั้ง • สำหรับกฎที่มีการเรียกตัวเองซ้ำ สามารถใช้ { } เพื่อทำให้การเรียกตัวเองซ้ำหมดไป <identifier> → <letter> { <letter> | <digit> }* • สามารถเพิ่มเติมสัญลักษณ์บอกการเกิดซ้ำ • {…}* หมายถึงสิ่งที่อยู่ในวงเล็บเกิดขึ้นซ้ำๆ กันได้ ……………………………. • {…}+ หมายถึงสิ่งที่อยู่ในวงเล็บเกิดขึ้นซ้ำๆ กันได้ …………………………….

  5. ตัวอย่าง BNF • BNF <expr>  <expr> + <term> | <expr> - <term> | <term> <term>  <term> * <factor> | <term> / <factor> | <factor> • นิพจน์คือ เทอมเดี่ยวๆ เพียงเทอมเดียว (เช่น Y, 345) หรือ เป็นเทอมที่ซับซ้อนขึ้นโดยนำหลายๆ เทอมมา บวก ลบ คูณ หาร กันได้ (เช่น Y + 345 / 2 * Z) • เทอม คือ แฟคเตอร์หนึ่งแฟคเตอร์ หรือ หลายแฟคเตอร์มาคูณ หรือหารกัน

  6. ตัวอย่าง BNF แปลงไปเป็น EBNF • EBNF

  7. จงแปลงไวยากรณ์ 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

  8. จงแปลงไวยากรณ์ BNF นี้ให้กลายเป็น EBNF

  9. Syntax Chart (Diagram) • แผนภูมิไวยากรณ์ ใช้ในการอธิบายไวยากรณ์ของภาษาคอมพิวเตอร์ โดยเริ่มต้นใช้ในการอธิบายภาษา Pascal โดยใช้รูปภาพอธิบายโครงสร้างภาษา • สัญลักษณ์นอนเทอร์มินอล จะถูกเขียนอยู่ใน…………………… • สัญลักษณ์เทอร์มินอล จะถูกเขียนอยู่ใน……………………….

  10. BNF : arithmetic expressions <expression > ::= <expression >+<term > | <expression >- <term > | <term > <term > ::= <term >* <factor > | <term >/ <factor > | <factor > <factor > ::= number | name | ‘(’ <expression > ‘)’

  11. Syntax Chart : arithmetic expressions

  12. Context-Free Grammars • Context-Free Grammars • Developed by Noam Chomsky in the mid-1950s • Language generators, meant to describe the syntax of natural languages

  13. Context Free Grammar • ให้ ………………………………หรือ Context-Free-Grammar ประกอบด้วย 4 เซตจำกัด คือ • Vคือ ..................................................................................... • Tคือ ..................................................................................... • Pคือ ..................................................................................... • Sคือ .....................................................................................

  14. 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> ::= +|-

  15. 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 หรือไม่

More Related