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

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
บทที่ 2 รหัสควบคุมและการคำนวณ
Advertisements

โครงสร้างโปรแกรมภาษา C
ตัวแปรชุด การเขียนโปรแกรมภาษาคอมพิวเตอร์ 1
การเขียนโปรแกรมด้วยคำสั่งเบื้องต้น
การจำลองความคิด รายวิชา ง40102 หลักการแก้ปัญหาและการโปรแกรม
บทที่ 2 ภาษาปาลคาลเบื้องต้น.
การทำงานแบบเลือกทำ (Selection)
BC320 Introduction to Computer Programming
Introduction to C Programming
ไวยากรณ์ของภาษาการทำโปรแกรม (2) (Syntax of programming languages)
Department of Computer Business
การเขียนผังงาน.
โครงสร้างการควบคุมการทำงานของโปรแกรม Program control structures
Data Type part.II.
Functional Programming
Functional programming part II
Functional programming part II
C Programming Lecture no. 4 กราบเรียนท่านอาจารย์ และสวัสดีเพื่อนๆ
ชนิดของข้อมูลและตัวดำเนินการ
ภาควิชาวิศวกรรมคอมพิวเตอร์ มิถุนายน ๒๕๕๒
การแก้ปัญหาด้วยคอมพิวเตอร์
องค์ประกอบของโปรแกรม
Week 6 ประกาศค่าตัวแปร.
บทที่ 3 พื้นฐานการเขียนโปรแกรม Visual Basic
Visual Basic 6 By Samaporn Yendee VB6.
รับและแสดงผลข้อมูล.
PHP LANGUAGE.
หน่วยที่ 1 ระบบคอมพิวเตอร์
Lab 3: คำสั่งพื้นฐานสำหรับการรับและการแสดงผลข้อมูล
Lecture no. 2: Overview of C Programming
หน่วยที่ 2 วิธีการออกแบบโปรแกรม
การจำลองความคิด
Arrays.
Surachai Wachirahatthapong
SCC : Suthida Chaichomchuen
การจัดการข้อมูลด้วยคอมพิวเตอร์
การเขียนโปรแกรมเชิงวัตถุ ด้วยภาษาจาวา
บทที่ 3 ตัวดำเนินการ และ นิพจน์
บทที่ 2 ประเภทข้อมูล (DATA TYPE)
บทที่ 11 การเขียนโปรแกรมภาษาซี
ข้อมูลพื้นฐานและตัวดำเนินการ
อาร์เรย์และข้อความสตริง
ตัวแปร (variable) ตัวแปร เป็นชื่อที่เราตั้งขึ้น เพื่อให้คอมพิวเตอร์เตรียมที่ใน หน่วยความจำไว้สำหรับเก็บข้อมูลที่นำไปประมวลผล การตั้งชื่อตัวแปร ชื่อตัวแปรในภาษา.
ตัวแปร (Variable) คือ ชื่อที่ตั้งขึ้นเพื่อเก็บข้อมูลในหน่วยความจำ สามารถเก็บข้อมูลชนิดใดก็ ได้ ลักษณะที่สำคัญ ค่าที่จัดเก็บ เมื่อปิดโปรแกรมข้อมูลจะหายไป.
การเขียนโปรแกรมภาษาซี
ชนิดของข้อมูล ตัวแปร และตัวดำเนินการ
ตัวแปรกับชนิดของข้อมูล
ประโยคเปิดและตัวบ่งปริมาณ
ง30212 พื้นฐานการเขียนโปรแกรม ศูนย์คอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
ตัวแปรกับชนิดของข้อมูล
Week 2 Variables.
Computer Programming for Engineers
หลักการเขียนโปรแกรม ( )
หลักการเขียนโปรแกรม ( )
Overview of C Programming
ตัวแปร Array แบบ 1 มิติ การเขียนโปรแกรมแบบวนซ้ำ
หลักการเขียนโปรแกรม ( )
การแก้ปัญหาโปรแกรม (Flowchart)
การแสดงผลและการรับข้อมูล (Data Output and Input)
หลักการเขียนโปรแกรม ( )
โครงสร้าง ภาษาซี.
พื้นฐานการเขียนโปรแกรมด้วย C#
บทที่ 2 โครงสร้างของภาษา C.
การกระทำทางคณิตศาสตร์
ตัวแปร และชนิดข้อมูล.
โครงสร้างข้อมูลแบบ สแตก (stack)
Syntax and Semantics ธนวัฒน์ แซ่เอียบ.
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
Computer Program คือ ขั้นตอนการทำงาน ของคอมพิวเตอร์
หลักการทั่วไปเกี่ยวกับการเขียนโปรแกรม
ใบสำเนางานนำเสนอ:

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

ส่วนประกอบพื้นฐานของไวยากรณ์ภาษา เซตของอักขระ (Character set) กำหนดเซตของอักขระที่สามารถใช้ตั้งชื่อต่างๆ อักขระพื้นฐาน ASCII ตัวระบุ (Identifier) หลักการตั้งชื่อชื่อตัวแปร, ชื่อฟังก์ชัน, ค่าคงที่ การใช้ตัวอักษร ตัวเลข underscore ในการตั้งชื่อ สัญลักษณ์ตัวดำเนินการ (Operator symbols) ตัวดำเนินการทางคณิตศาสตร์ ตรรกะ การเปรียบเทียบ ตัวดำเนินการกับ ข้อความ ลำดับความสำคัญในการประมวลผล

ส่วนประกอบพื้นฐานของไวยากรณ์ภาษา คำหลัก และคำสงวน (Keywords and reserved words) คำหลัก เป็นตัวระบุที่กำหนดความหมายไว้เป็นการเฉพาะในภาษานั้นๆ เช่น ………………………………………………………… คำสงวน คือ………………………………………………... ตัวอย่างภาษา Fortran REAL INTEGER INTEGER REAL REAL APPLE REAL = 3 คำใดเป็น keyword และ reserved word?

ส่วนประกอบพื้นฐานของไวยากรณ์ภาษา หมายเหตุ (Comments) อักขระคั่น และสัญลักษณ์จัดกลุ่ม (Delimiters and brackets) กำหนดอักขระพิเศษเพื่อบอกจุดจบ หรือจุดเริ่มต้นข้อความ เช่น .... นิพจน์ (Expression) ส่วนประกอบของข้อความสั่งที่สามารถถูกประมวลผล แล้วส่งผลให้โปรแกรม เปลี่ยนสถานะไปได้ เช่น … ข้อความสั่ง (Statements) ใช้ควบคุมลำดับการทำงานของโปรแกรม เช่น ข้อความสั่งกำหนดค่า, ข้อความสั่ง แบบมีเงื่อนไข, ข้อความสั่งแบบวนรอบ, ข้อความเรียกใช้โปรแกรมย่อย

รูปแบบทางการในการกำหนดไวยากรณ์ของภาษา (Formal methods to syntax definition) ในการอธิบายโครงสร้างของภาษาเราใช้ภาษาที่เรียกว่า …………………………………… ………………………………………..ซึ่งมีความหมายว่าเป็นภาษาที่ใช้อธิบายอีกภาษาหนึ่ง ในการอธิบายภาษาคอมพิวเตอร์นิยมใช้รูปแบบเหล่านี้เป็นภาษาเมตา BNF (Backus-Naur Form) EBNF (Extended Backus-Naur Form) Syntax chart Context Free Grammar

Backus-Naur Form (BNF) Invented by John Backus and Peter Naur to describe Algol 58 พัฒนามาจากทฤษฎีภาษาฟอร์มอล ซึ่งเสนอ แนวทางไว้โดย Noam Chomsky BNF is equivalent to context-free grammars

BNF Grammar ประกอบด้วย 4 ส่วน คือ < T, N, S, P >

BNF Grammar การเขียนโพรดักชัน จะใช้รูปแบบ A   เมื่อ  เป็นสัญลักษณ์จากเซตของ ……………………………… เช่น การเขียนโพรดักชันอธิบายเลขฐานสอง BinaryDigit  Digit BinaryDigit  Digit BinaryDigit Digit  0 Digit  1 หรือสามารถเขียนรวมกันได้ คือ

An Example Grammar #1 <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 Grammar ตัวอย่าง จงเขียนโพรดักชันที่ใช้อธิบายเลขจำนวนเต็ม (Integer) ตัวอย่าง จงเขียนโพรดักชันที่ใช้อธิบายเลขจำนวนจริง(ทศนิยม) (real) ตัวอย่าง จงเขียนโพรดักชันที่ใช้อธิบายตัวแปรหรือตัวระบุ (identifier)

การแปลง (Derivation) ในการพิจารณาว่า………………………………………………………………. ………………………………………..ทำได้โดยใช้วิธีแปลง หรือ……….……. โดยเริ่มทำการแปลงจากโพรดักชันเริ่มต้น (start symbol) แล้วแทนที่นอน เทอร์มินอล ด้วยโพรดักชันต่างๆ ไปเรื่อยๆ จนกระทั่งได้รูปแบบที่เป็น สัญลักษณ์เทอร์มินอลทั้งหมด จึงจะถือว่าสตริงนั้นเขียนได้ถูกต้องตาม ไวยากรณ์ของภาษา ใช้สัญลักษณ์ ……………… ในการกระจายแต่ละลำดับขั้น มีรูปแบบการแปลง 2 ประเภท คือ Leftmost derivation และRightmost derivation

ตัวอย่างการทำ Derivation #1 จงพิจารณาว่า 673.5 เป็นทศนิยม (real) หรือไม่

ตัวอย่างการทำ Derivation #2 จาก BNF Grammars #1 ที่กำหนดให้ในสไลด์ก่อนหน้า จงตรวจสอบว่า a = 5 – a ; d = c + 2 ; เป็นสตริงที่เป็นสมาชิกของไวยากรณ์ดังกล่าวหรือไม่

Parse Tree ในการพิจารณาว่าสตริงหนึ่งๆ จัดอยู่ในกลุ่มไวยากรณ์ของภาษาหรือไม่ นอกจากจะทำได้ได้โดยใช้วิธีแปลง หรือ derive แล้ว ยังสามารถทำได้อีกวิธี หนึ่ง คือการสร้างพาสทรี (Parse tree) หรือบางครั้งเรียกเดริเวชันทรี (Derivation tree)

Parse Tree A hierarchical representation of a derivation 1. ……………………..ของต้นไม้จะเป็น Start symbol ของไวยากรณ์เสมอ 2. …………………………………………จะเท่ากับจำนวนชั้น (=>) ของการทำ derivation เสมอ 3. ……………………………………...ของต้นไม้จะต้องเป็น terminal symbol เสมอ <program> <stmts> <stmt> 3 a <var> = <expr> b <term> +

Parse Tree Example #1 จงเขียน Parse Tree ของตัวอย่างการทำ Derivation #1

ไวยากรณ์กำกวม (Ambiguous grammar) เมื่อรูปแบบของไวยากรณ์กำหนดไว้ไม่ชัดเจนเพียงพอ ทำให้สามารถสร้าง พาสทรี หรือสามารถแปลงไวยากรณ์ไปได้หลายรูปแบบ ไวยากรณ์ที่ดีควรจะมีวิธีการแปลงที่เป็นไปได้เพียงรูปแบบเดียว ตัวอย่าง #3 จงพิจารณาไวยากรณ์ด้านล่างว่ามีความกำกวมหรือไม่ <expr>  <integer> | <expr> - <expr> <integer>  1 | 2 | 3 | 4 | 5

ไวยากรณ์กำกวม (Ambiguous grammar) ตัวอย่าง #3 Hint : ยกตัวอย่างสตริงที่น่าจะทำให้เกิดความกำกวม แล้วเขียน Parse tree

การแก้ไขไวยากรณ์ไม่ให้เกิดความกำกวม compiler เข้าใจความหมายที่ถูกต้องของประโยค เปลี่ยนแปลงไวยากรณ์ให้แปลงได้เพียงด้านเดียว จากตัวอย่าง #3 สามารถแก้ไขไวยากรณ์ได้ดังนี้ <expr>  …………………………………………………………………………… <integer>  1 | 2 | 3 | 4 | 5

กำหนด Grammar ในรูปของ BNF ดังนี้ <expr>  <expr> + <term> | <expr> - <term> | <term> <term>  <term> * <factor> | <term> / <factor> | <factor> <factor>  <var> | <num> | ( <expr> ) <var>  a | b | c | ... | x | y | z <num>  0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ให้เขียนลำดับการแปลงและ Parse Tree ของ ……………………………