1 Syntax In Text: Chapter 3. 2 Chapter 3: Syntax and Semantics Outline Syntax: Recognizer vs. generator BNF EBNF.

Slides:



Advertisements
Similar presentations
ICE1341 Programming Languages Spring 2005 Lecture #5 Lecture #5 In-Young Ko iko.AT. icu.ac.kr iko.AT. icu.ac.kr Information and Communications University.
Advertisements

ICE1341 Programming Languages Spring 2005 Lecture #4 Lecture #4 In-Young Ko iko.AT. icu.ac.kr iko.AT. icu.ac.kr Information and Communications University.
Copyright © 2006 The McGraw-Hill Companies, Inc. Programming Languages 2nd edition Tucker and Noonan Chapter 2 Syntax A language that is simple to parse.
ISBN Chapter 3 Describing Syntax and Semantics.
Describing Syntax and Semantics
Concepts of Programming Languages 1 Describing Syntax and Semantics Brahim Hnich Högskola I Gävle
ISBN Chapter 3 More Syntax –BNF –Derivations –Practice.
CS 330 Programming Languages 09 / 13 / 2007 Instructor: Michael Eckmann.
Chapter 3 Describing Syntax and Semantics Sections 1-3.
Chapter 3 Describing Syntax and Semantics Sections 1-3.
Slide 1 Chapter 2-b Syntax, Semantics. Slide 2 Syntax, Semantics - Definition The syntax of a programming language is the form of its expressions, statements.
1 CSE305 Programming Languages Syntax What is it? How is it specified? Who uses it? Why is it needed?
ISBN Chapter 3 Describing Syntax and Semantics.
1 Note As usual, these notes are based on the Sebesta text. The tree diagrams in these slides are from the lecture slides provided in the instructor resources.
Chapter 3 Describing Syntax and Semantics Sections 1-3.
1 Introduction: syntax and semantics Syntax: a formal description of the structure of programs in a given language. Semantics: a formal description of.
Dr. Muhammed Al-Mulhem 1ICS ICS 535 Design and Implementation of Programming Languages Part 1 Fundamentals (Chapter 4) Compilers and Syntax.
ISBN Chapter 3 Describing Syntax and Semantics.
ISBN Chapter 3 Describing Syntax and Semantics.
S YNTAX. Outline Programming Language Specification Lexical Structure of PLs Syntactic Structure of PLs Context-Free Grammar / BNF Parse Trees Abstract.
(2.1) Grammars  Definitions  Grammars  Backus-Naur Form  Derivation – terminology – trees  Grammars and ambiguity  Simple example  Grammar hierarchies.
Describing Syntax and Semantics
1 Syntax and Semantics The Purpose of Syntax Problem of Describing Syntax Formal Methods of Describing Syntax Derivations and Parse Trees Sebesta Chapter.
Chpater 3. Outline The definition of Syntax The Definition of Semantic Most Common Methods of Describing Syntax.
ISBN Chapter 3 Describing Syntax and Semantics.
Describing Syntax and Semantics
CS 355 – PROGRAMMING LANGUAGES Dr. X. Topics Introduction The General Problem of Describing Syntax Formal Methods of Describing Syntax.
Winter 2007SEG2101 Chapter 71 Chapter 7 Introduction to Languages and Compiler.
Copyright © 1998 by Addison Wesley Longman, Inc. 1 Chapter 3 Syntax - the form or structure of the expressions, statements, and program units Semantics.
1 Chapter 3 Describing Syntax and Semantics. 3.1 Introduction Providing a concise yet understandable description of a programming language is difficult.
ISBN Chapter 3 Describing Syntax and Semantics.
CS Describing Syntax CS 3360 Spring 2012 Sec Adapted from Addison Wesley’s lecture notes (Copyright © 2004 Pearson Addison Wesley)
Grammars CPSC 5135.
Chapter Describing Syntax and Semantics. Chapter 3 Topics 1-2 Introduction The General Problem of Describing Syntax Formal Methods of Describing.
Chapter 3 Part I Describing Syntax and Semantics.
3-1 Chapter 3: Describing Syntax and Semantics Introduction Terminology Formal Methods of Describing Syntax Attribute Grammars – Static Semantics Describing.
C H A P T E R TWO Syntax and Semantic.
ISBN Chapter 3 Describing Syntax and Semantics.
ISBN Chapter 3 Describing Syntax and Semantics.
TextBook Concepts of Programming Languages, Robert W. Sebesta, (10th edition), Addison-Wesley Publishing Company CSCI18 - Concepts of Programming languages.
Muhammad Idrees Lecturer University of Lahore 1. Outline Introduction The General Problem of Describing Syntax Formal Methods of Describing Syntax Attribute.
The College of Saint Rose CIS 433 – Programming Languages David Goldschmidt, Ph.D. from Concepts of Programming Languages, 9th edition by Robert W. Sebesta,
CPS 506 Comparative Programming Languages Syntax Specification.
ISBN Chapter 3 Describing Syntax and Semantics.
Chapter 3 Describing Syntax and Semantics. Copyright © 2012 Addison-Wesley. All rights reserved. 1-2 Chapter 3 Topics Introduction The General Problem.
Chapter 3 Describing Syntax and Semantics. Chapter 3: Describing Syntax and Semantics - Introduction - The General Problem of Describing Syntax - Formal.
C HAPTER 3 Describing Syntax and Semantics. T OPICS Introduction The General Problem of Describing Syntax Formal Methods of Describing Syntax Attribute.
Chapter 3 Describing Syntax and Semantics
CMSC 331, Some material © 1998 by Addison Wesley Longman, Inc. 1 Chapter 3 Chapter 3 (a) Syntax.
ISBN Chapter 3 Describing Syntax and Semantics.
Chapter 3 © 2002 by Addison Wesley Longman, Inc Introduction - Who must use language definitions? 1. Other language designers 2. Implementors 3.
Syntax and Semantics Form and Meaning of Programming Languages Copyright © by Curt Hill.
Describing Syntax and Semantics Session 2 Course : T Programming Language Concept Year : February 2011.
Chapter 3 Describing Syntax and Semantics. Copyright © 2012 Addison-Wesley. All rights reserved.1-2 Chapter 3 Topics Introduction The General Problem.
ISBN Chapter 3 Describing Syntax and Semantics.
C H A P T E R T W O Syntax and Semantic. 2 Introduction Who must use language definitions? Other language designers Implementors Programmers (the users.
1 CS Programming Languages Class 04 September 5, 2000.
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.3-1 Language Specification and Translation Lecture 8.
Copyright © 2006 Addison-Wesley. All rights reserved.1-1 ICS 410: Programming Languages Chapter 3 : Describing Syntax and Semantics Syntax.
Chapter 3 – Describing Syntax CSCE 343. Syntax vs. Semantics Syntax: The form or structure of the expressions, statements, and program units. Semantics:
Describing Syntax and Semantics Chapter 3: Describing Syntax and Semantics Lectures # 6.
Chapter 3: Describing Syntax and Semantics
Chapter 3 – Describing Syntax
Describing Syntax and Semantics
Describing Syntax and Semantics
Chapter 3 – Describing Syntax
Concepts of Programming Languages
CS 363 Comparative Programming Languages
Chapter 3 Describing Syntax and Semantics.
Describing Syntax and Semantics
Presentation transcript:

1 Syntax In Text: Chapter 3

2 Chapter 3: Syntax and Semantics Outline Syntax: Recognizer vs. generator BNF EBNF

3 Chapter 3: Syntax and Semantics Basic Definitions Syntax—the form or structure of the expressions, statements, and program units Semantics—the meaning of the expressions, statements, and program units Why write a language definition; who will use it? Other language designers Implementors (compiler writers) Programmers (the users of the language)

4 Chapter 3: Syntax and Semantics What is a “Language”? A sentence is a string of characters over some alphabet A language is a set of sentences A lexeme is the lowest level syntactic unit of a language (e.g., *, sum, begin) A token is a category of lexemes (e.g., identifier)

5 Chapter 3: Syntax and Semantics Recognizers vs. Generators We don’t want to use English to describe a language (too long, tedious, imprecise), so … There are two formal approaches to describing syntax: Recognizers Given a string, a recognizer for a language L tells whether or not the string is in L (ex: Compiler) Generators A generator for L will produce an arbitrary string in L on demand. (ex: Grammar, BNF) Recognition and generation are useful for different things, but are closely related

6 Chapter 3: Syntax and Semantics Grammars Developed by Noam Chomsky in the mid-1950s 4-level hierarchy (0-3) Language generators, meant to describe the syntax of natural languages Context-free grammars define a class of languages called context-free languages (level 2)

7 Chapter 3: Syntax and Semantics Backus-Naur Form Invented by John Backus and Peter Naur to describe syntax of Algol 58/60 BNF is equivalent to context-free grammars A metalanguage: a language used to describe another language

8 Chapter 3: Syntax and Semantics BNF Nonterminals In BNF, abstractions are used to represent classes of syntactic structures—they act like syntactic variables (also called nonterminal symbols) -> while do This is a rule; it describes the structure of a while statement

9 Chapter 3: Syntax and Semantics BNF Rules A rule has a left-hand side (LHS) and a right-hand side (RHS), and consists of terminal and nonterminal symbols A grammar is a finite nonempty set of rules An abstraction (or nonterminal symbol) can have more than one RHS: -> | begin end Syntactic lists are described using recursion: -> ident | ident,

10 Chapter 3: Syntax and Semantics An Example Grammar -> | ; -> = -> a | b | c | d -> + | - -> | const

11 Chapter 3: Syntax and Semantics Derivations A derivation is a repeated application of rules, starting with the start symbol and ending with a sentence (all terminal symbols): => => = => a = => a = + => a = b + => a = b + const

12 Chapter 3: Syntax and Semantics Sentential Forms Every string of symbols in the derivation is a sentential form A sentence is a sentential form that has only terminal symbols A leftmost derivation is one in which the leftmost nonterminal in each sentential form is the one that is expanded next in the derivation A rightmost derivation works right to left instead Some derivations are neither leftmost nor rightmost

13 Chapter 3: Syntax and Semantics Parse Trees A parse tree is a hierarchical representation of a derivation A grammar is ambiguous iff it generates a sentential form that has two or more distinct parse trees = a + const b

14 Chapter 3: Syntax and Semantics Ambigous Grammars An ambiguous expression grammar: -> | const -> / | - const - const / const

15 Chapter 3: Syntax and Semantics Indicating Precedence If we use the parse tree to indicate precedence levels of the operators, we cannot have ambiguity: -> - | -> / const | cons - / const const const => - => const - => const - / const => const - const / const

16 Chapter 3: Syntax and Semantics Operator Associativity Operator associativity can also be indicated by a grammar -> + | const (ambiguous) -> + const | const (unambiguous) + const const

17 Chapter 3: Syntax and Semantics Extended BNF (EBNF) Optional parts are placed in brackets ([]) -> ident [ ( ) ] Put alternative parts of RHS in parentheses and separate them with vertical bars -> (+ | -) const Put repetitions (0 or more) in braces ({}) -> letter {letter | digit}

18 Chapter 3: Syntax and Semantics BNF and EBNF Side by Side BNF: -> + | - | -> * | / | EBNF: -> {(+ | -) } -> {(* | /)

19 Chapter 3: Syntax and Semantics Recursive Descent Parsing Parsing is the process of tracing or constructing a parse tree for a given input string Parsers usually do not analyze lexemes; that is done by a lexical analyzer, which is called by the parser A recursive descent parser traces out a parse tree in top-down order; it is a top-down parser Each nonterminal in the grammar has a subprogram associated with it; the subprogram parses all sentential forms that the nonterminal can generate The recursive descent parsing subprograms are built directly from the grammar rules Recursive descent parsers, like other top-down parsers, cannot be built from left-recursive grammars

20 Chapter 3: Syntax and Semantics Recursive Descent Example Example: For the grammar: -> {(* | /) } Simple recursive descent parsing subprogram: void term() { factor(); /* parse the first factor*/ while (next_token == ast_code || next_token == slash_code) { lexical(); /* get next token */ factor(); /* parse the next factor */ }