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

Download Report

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

1
ไวยากรณ์ของภาษาการทาโปรแกรม (2)
(SYNTAX OF PROGRAMMING LANGUAGES)
Extended BNF
2


เริม่ มีการปรับปรุงรูปแบบ BNF ให้สามารถเขียนได้งา่ ยขึน้ เรียกว่ารูปแบบ
EBNF (Extended BNF) หรือ EBNF
ประเด็นสาคัญของการปรับปรุงคือ ……………………………โดยใช้
สัญลักษณ์เพิม่ เข้ามาดังนี้
Extended BNF
3

…………………………….…….อยูภ่ ายในเครื่ องหมาย [ ]
 หมายถึง
ลาดับของสัญลักษณ์ซึ่งเป็ นทางเลือก ซึ่งอาจจะเขียนหรือไม่ก็ได้
<if-STMT> → if ‘(’ <expr> ‘)’ <stmt> [ else <stmt>]

……………………………….. อยูภ่ ายในเครื่ องหมาย ( ) และเขียน
แยกกันโดยใช้ |
 หมายถึง ใช้บ่งบอกตัวเลือกที่เป็ นไปได้ท้งั หมด
ซึ่งจะต้องเลือกว่าเป็ นตัวใด
ตัวหนึ่ งที่อยูภ่ ายในเครื่องหมาย ( ) เท่านั้น
<term> → <term> ( + | - ) <constant>
Extended BNF
4

………………………. อยูภ่ ายในเครื่ องหมาย { }
 หมายถึงสิ่ งที่อยูใ่ นวงเล็บเกิดขึ้นซ้ าๆ กันได้หลายๆ ครั้ง
 สาหรับกฎที่มีการเรี ยกตัวเองซ้ า สามารถใช้ { } เพื่อทาให้การเรี ยก
ตัวเองซ้ าหมดไป
<identifier> → <letter> { <letter> | <digit> }*
 สามารถเพิ่มเติมสัญลักษณ์บอกการเกิดซ้ า
หมายถึง สิ่ งที่อยูใ่ นวงเล็บเกิดขึ้นซ้ าๆ กันได้ …………………………….
 {…}+ หมายถึง สิ่ งที่อยูใ่ นวงเล็บเกิดขึ้นซ้ าๆ กันได้ …………………………….
 {…}*
ตัวอย่าง BNF
5



BNF
<expr>  <expr> + <term>
| <expr> - <term>
| <term>
<term>  <term> * <factor>
| <term> / <factor>
| <factor>
นิพจน์คอื เทอมเดีย่ วๆ เพียงเทอมเดียว (เช่น Y, 345) หรือ เป็ นเทอมทีซ่ บั ซ้อนขึน้ โดยนา
หลายๆ เทอมมา บวก ลบ คูณ หาร กันได้ (เช่น Y + 345 / 2 * Z)
เทอม คือ แฟคเตอร์หนึ่งแฟคเตอร์ หรือ หลายแฟคเตอร์มาคูณ หรือหารกัน
ตัวอย่าง BNF แปลงไปเป็ น EBNF
6

EBNF
จงแปลงไวยากรณ์ BNF นี้ ให้กลายเป็ น EBNF
7
<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
8
Syntax Chart (Diagram)
9



แผนภูมิไวยากรณ์ ใช้ในการอธิบายไวยากรณ์ของภาษาคอมพิวเตอร์ โดย
เริ่มต้นใช้ในการอธิบายภาษา Pascal โดยใช้รปู ภาพอธิบายโครงสร้างภาษา
สัญลักษณ์นอนเทอร์มินอล จะถูกเขียนอยูใ่ น……………………
สัญลักษณ์เทอร์มินอล จะถูกเขียนอยูใ่ น……………………….
BNF : arithmetic expressions
10
<expression > ::= <expression >+<term >
| <expression >- <term >
| <term >
<term >
::= <term >* <factor >
| <term >/ <factor >
| <factor >
<factor >
::= number
| name
| ‘(’ <expression > ‘)’
Syntax Chart : arithmetic expressions
11
Context-Free Grammars
12

Context-Free Grammars
 Developed
by Noam Chomsky in
the mid-1950s
 Language
generators, meant to
describe the syntax of natural
languages
Context Free Grammar
13
ให้ ………………………………หรื อ Context-Free-Grammar
ประกอบด้ วย 4 เซตจำกัด คือ
 V คื อ .....................................................................................
 T คื อ .....................................................................................
 P คื อ .....................................................................................
 S คื อ .....................................................................................

Context Free Grammar
14
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> ::= +|-
Context Free Grammar
15
พิจารณา ประโยค 1 – 5 ว่ าเป็ นสมาชิกของ Grammar หรือไม่
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)?