Syntax and Semantics ธนวัฒน์ แซ่เอียบ.

Slides:



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

INTRODUCTION TO C LANGUAGE
Introduction to C Introduction to C.
โครงสร้างโปรแกรมภาษา C
โครงสร้างภาษาซี เบื้องต้น
แนวคิดในการเขียนโปรแกรม
Chapter 8 : Logic Modeling & Data Modeling
รายวิชา ง40206 โครงสร้างข้อมูลและขั้นตอนวิธี
บทที่ 2 ภาษาปาลคาลเบื้องต้น.
การทำงานแบบเลือกทำ (Selection)
ไวยากรณ์ของภาษาการทำโปรแกรม (2) (Syntax of programming languages)
ปฎิบัติการที่ ห้า.
Department of Computer Business
Intermediate Representation (รูปแบบการแทนในระยะกลาง)
โครงสร้างการควบคุมการทำงานของโปรแกรม Program control structures
รหัสระหว่างกลาง (Intermediate code)
Functional Programming
Functional programming part II
ภาษาคอมพิวเตอร์ กฎเกณฑ์เกี่ยวกับคำศัพท์ ไวยากรณ์ และ หลักภาษาในการเขียนคำสั่งงานให้คอมพิวเตอร์ทำงานอย่างใดอย่างหนึ่งให้กับเราได้ มีหลากหลายชนิดต่างๆ กัน.
C Programming Lecture no. 4 กราบเรียนท่านอาจารย์ และสวัสดีเพื่อนๆ
Structure Programming
Structure Programming
ชนิดของข้อมูลและตัวดำเนินการ
การแก้ปัญหาด้วยคอมพิวเตอร์
บทที่ 3 พื้นฐานการเขียนโปรแกรม Visual Basic
ภาษา SQL (Structured Query Language)
วิชา การออกแบบและพัฒนาซอฟต์แวร์
ฟังก์ชั่น function.
ภาษาปาสคาล ผู้สร้าง Dr.Niklaus Wirth ปี 2513
คำสั่งเงื่อนไขและการควบคุม
ปฏิบัติการครั้งที่ 9 ฟังก์ชัน.
โปรแกรมย่อย : Pascal Procedure
Lecture no. 4: Structure Programming
คำสั่งแบบมีเงื่อนไข IF Statement
บทที่ 3 ตัวดำเนินการ และ นิพจน์
Lex & Yacc โดย...นายชัชวาลย์ ฮาสุวรรณกิจ.
หน่วยที่ 4: คำสั่งควบคุมโปรแกรม (Control Flow Command)
ไวยากรณ์ของภาษาการทำโปรแกรม (1) (Syntax of programming languages)
คำสั่งควบคุมการทำงาน
1 หลักการภาษาชุดคำสั่ง อ. บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 9 มิถุนายน 2556 Transition & Parse Tree มหาวิทยาลัยเนชั่น.
Chapter 6 Decision Statement
โครงสร้างควบคุมการทำงาน
การเขียนผังงาน จุดประสงค์ 1.อธิบายความของผังงานได้
ทบทวน กันก่อน .....กระบวนการแปลโปรแกรม
Week 2 Variables.
Computer Programming for Engineers
คำสั่งควบคุมขั้นตอน Flow control statements
Recursion การเรียกซ้ำ
หลักการเขียนโปรแกรม ( )
โปรแกรมฐานข้อมูลที่นิยมใช้
หลักสูตรอบรมครู คอมพิวเตอร์ หลักสูตรอบรมครู คอมพิวเตอร์ หลักสูตรที่ ๑ ทักษะการโปรแกรม เบื้องต้น วันที่สาม.
Control Flow.
In-Class Exercises Discrete Mathematics
Chapter 04 Flowchart ผู้สอน อ.ยืนยง กันทะเนตร
บทที่ 2 แนวคิดในการเขียนโปรแกรม. ขั้นตอนการ พัฒนาโปรแกรม ในการพัฒนาโปรแกรมมีขั้นตอนหลัก 5 ขั้นตอน ซึ่งไม่ว่าจะทำการพัฒนาโปรแกรม ครั้งใดจะต้องปฏิบัติตามขั้นตอนเหล่านี้
Recursive Method.
สาขาวิชาเทคโนโลยี สารสนเทศ คณะเทคโนโลยีสารสนเทศ และการสื่อสาร.
โครงสร้าง ภาษาซี.
ความรู้พื้นฐานเกี่ยวกับการโปรแกรมคอมพิวเตอร์
แนะนำการเขียนโปรแกรมภาษา C Introduction to C Programming Language
Introduction ธนวัฒน์ แซ่เอียบ.
บทที่ 6 พจนานุกรมข้อมูล และ คำอธิบายกระบวนการ
บทที่ 6 Context Free Grammar และการแจกแจงประโยค.
Function ธนวัฒน์ แซ่ เอียบ. What is a function ฟังก์ชันในภาษา C เป็นโปรแกรมที่ถูกออกแบบมาเพื่อ ใช้แก้ปัญหางานใดงานหนึ่งโดยเฉพาะ ฟังก์ชันจะเปลี่ยน input.
PHP เบื้องต้น.
Programming Languages ธนวัฒน์ แซ่เอียบ โฮมเพจรายวิชา
Introduction to Computer Organization and Architecture Flow of Control ภาษาเครื่อง สายงานของการ ควบคุม.
Operators & Expression ธนวัฒน์ แซ่ เอียบ. Arithmetic Operators OperationOperatorExample Value of Sum before Value of sum after Multiply *sum = sum * 2;
Language Design Principles and Programming Processing
ใบสำเนางานนำเสนอ:

Syntax and Semantics ธนวัฒน์ แซ่เอียบ

Introduction ภาษาจำเป็นต้องอธิบายให้กับผู้คนจำนวนมากสามารถเข้าใจคำอธิบายที่ภาษานั้นจัดเตรียมไว้ให้ ALGOL 60 และ ALGOL 68 เป็นภาษาแรกที่ใช้รูปแบบที่สั้นกระชับในการอธิบายรูปแบบภาษา จากคำอธิบายเหล่านี้จะต่อช่วยให้โปรแกรมเมอร์สามารถนำไปเขียน expressions statements และโครงสร้างของโปรแกรมทั้งหมดได้ รวมทั้งผลกระทบที่เกิดขึ้นเมื่อโปรแกรมปฏิบัติงาน การเรียนภาษาที่ใช้ในการเขียนโปรแกรม เหมือนกับการเรียนภาษาตามธรรมชาติ สามารถแบ่งออกได้ 2 ส่วนคือ syntax และ semantics

Syntax Syntax คือรูปแบบของ expressions statement และ program units ไวยกรณ์ของภาษาบอกได้ 2 สิ่งคือ อะไรคือส่วนที่ถูกต้อง อะไรคือความสัมพันธ์ระหว่างส่วนที่ถูกต้อง ตัวอย่าง if statement ของภาษา C if (i>0) printf(“Finish”);

Syntax The lowest level syntactic units are called lexemes The description of lexemes can be given by a lexical specification Lexemes include its identifiers, literals, operators, and special words if (i>0) sum = sum + 4;

Syntax A token of a language is a category of its lexemes An identifier is a token that can have lexemes or instance, such as sum and total In some cases, a token has only a single possible lexemes plus_op, the token for the arithmetic operator symbol +, has just one possible lexemes

Syntax พิจารณา statement ของภาษา C ดังต่อไปนี้ Index = 2 * count + 17; Q. Lexemes มีอะไรบ้างและแต่ละ lexemes คือ tokens อะไร (tokens มีดังต่อไปนี้ equal_sign, mult_op, semicolon, int_literal, identifier, plus_op) Lexemes Tokens

Syntax Syntax informally Example: “Everything between “/*” and “+/” is a comment and should be ignored.” Code: /*Store the result in y.*/ x = 3; */ y = x * 17.2; => Syntax formally

Semantics Semantics คือความหมายของ expressions statement และ program units เหล่านี้

Syntax Formally กลไกที่ใช้อธิบายไวยกรณ์ของภาษาที่ใช้ในการเขียนโปรแกรมเรียกว่า grammars Fundamentals A metalanguage คือภาษาซึ่งใช้อธิบายภาษาอื่นเช่น BNF BNF ใช้ abstractions ในโครงสร้างของไวยกรณ์ เช่น assignment statement ของภาษา C ใช้ abstraction คือ <assign> กำหนดได้จาก <assign> -> <var> = <expression>

BNF สัญลักษณ์ทางซ้ายของลูกศรเรียกว่า left-hand side (LHS) คือ abstraction ที่จะนำมานิยาม ข้อความทางขวามือเรียกว่า right-hand side (RHS) ประกอบด้วยการผสมระหว่าง tokens, lexemes, การอ้างถึง abstraction อื่น ทั้งหมดนี้เรียกว่า rule หรือ production (ซึ่ง <var> และ <expression> ต้องนิยามเพื่อทำให้ <assign> สมบูรณ์)

BNF Abstraction สามารถมีรูปแบบไวยากรณ์ได้มากกว่าหนึ่งรูปแบบ การนิยามหลายๆการนิยามสามารถเขียนได้โดยใช้สัญลักษณ์ | ตัวอย่าง if statement ของภาษา Pascal สามารถเขียนได้ดังนี้ <if_stmt> -> if <logic_expr> then <stmt> <if_stmt> -> if <logic_expr> then <stmt> else <stmt> หรือเขียนด้วยรูปแบบ | if <logic_expr> then <stmt> else <stmt>

BNF รายการที่มีความยาวไม่คงที่ทางคณิตศาสตร์สามารถเขียนโดยใช้ ellipsis (…) เช่น 1, 2, … BNF ไม่สามารถมี ellipsis ทางเลือกคือการใช้ recursion แทน <ident_list> -> identifier | identifier , <ident_list> นิยาม <ident_list> เป็นไปได้ทั้ง identifier ตัวเดียว หรือ identifier ตามด้วย comma และตามด้วย <ident_list> อื่นๆ ถ้านิยาม identifier -> 1 | 2 | 3 แล้ว <ident_list> จะเป็นรายการใดได้บ้าง

BNF BNF คือเครื่องมือสำหรับใช้นิยามภาษา สามารถนำกฎต่างๆที่มีมาใช้สร้างเป็น sentences กระบวนการสร้าง sentence เรียกว่า derivation Grammar ของภาษาส่วนใหม่เริ่มต้นด้วยการนิยาม <program> เป็นอันดับแรก

Exercise Grammar ของภาษาหนึ่ง <program> -> begin <stmt_list> end <stmt_list> -> <stmt> | <stmt> ; <stmt_list> <stmt> -> <var> = <expression> <var> -> A | B | C <expression> -> <var> + <var> | <var> - <var> | <var> ให้เขียนตัวอย่าง derivation จาก grammar ที่กำหนดให้

Exercise Grammar ของ Assignment Statement <assign> -> <id> = <expr> <id> -> A | B | C <expr> -> <id> + <expr> | <id> * <expr> | ( <expr> ) | <id> ให้เขียน derivation เพื่อให้ได้ statement ดังต่อไปนี้ A = B * ( A+C)

ที่มา Concepts of programming languages : Sebesta, Robert W.