Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chapter 3 Describing Syntax and Semantics Sections 1-3.

Similar presentations


Presentation on theme: "Chapter 3 Describing Syntax and Semantics Sections 1-3."— Presentation transcript:

1 Chapter 3 Describing Syntax and Semantics Sections 1-3

2 Copyright © 2007 Addison-Wesley. All rights reserved. 1–2 Introduction Syntax: the form or structure of the expressions, statements, and program units Semantics: the meaning of the expressions, statements, and program units Pragmatics: Syntax and semantics provide a language’s definition – Users of a language definition Other language designers Implementers Programmers (the users of the language)

3 Copyright © 2007 Addison-Wesley. All rights reserved. 1–3 Language Theory Chomsky identified four classes of language –Types 2 and 3 useful for programming language specification Backus (on ALGOL58 committee) developed notation for specifying programming languages Regular3 Context-free2 Context-sensitive1 Unrestricted0 CharacteristicsTyp e

4 Copyright © 2007 Addison-Wesley. All rights reserved. 1–4 Terminology A metalanguage is a language used to describe another language A sentence is a string of characters over some alphabet A language is a set of sentences –a language is specified by a set of rules 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 Copyright © 2007 Addison-Wesley. All rights reserved. 1–5 Two approaches to Language Definition Recognizers –Read a string and decide whether it follows the rules for the language –Example: syntax analysis part of a compiler (Chapter 4) Generators –A device that generates sentences of a language (BNF) –More useful for specifying the language than for checking a string

6 Copyright © 2007 Addison-Wesley. All rights reserved. 1–6 Formal Methods of Describing Syntax Backus-Naur Form and Context-Free Grammars –Most widely known method for describing programming language syntax –Developed as part of the process for specifying ALGOL –Define a class of languages called context- free languages Extended BNF –Improves readability and writability of BNF

7 Copyright © 2007 Addison-Wesley. All rights reserved. 1–7 BNF Fundamentals Non-terminals: BNF abstractions used to represent classes of syntactic structures Terminals: lexemes and tokens Grammar: a collection of rules –Examples of BNF rules: → identifier | identifier, → if then

8 Copyright © 2007 Addison-Wesley. All rights reserved. 1–8 BNF Rules A rule has a left-hand side (LHS) and a right-hand side (RHS), and consists of terminal and nonterminal symbols In a context-free grammar, there can only be one symbol on the LHS A grammar is a finite nonempty set of rules An abstraction (or nonterminal symbol) can have more than one RHS  | begin end

9 Copyright © 2007 Addison-Wesley. All rights reserved. 1–9 Describing Lists Syntactic lists are described using recursion -> |, -> |, -> |, -> |

10 Copyright © 2007 Addison-Wesley. All rights reserved.

11 1–11 Derivations BNF is a generative device –Use a grammar to generate sentences that belong to the language the grammar describes A derivation is a repeated application of rules, starting with the start symbol and ending with a sentence (all terminal symbols)

12 Copyright © 2007 Addison-Wesley. All rights reserved. 1–12 Derivation 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 A derivation may be neither leftmost nor rightmost

13 Copyright © 2007 Addison-Wesley. All rights reserved. 1–13 An Example Grammar -> -> | ; -> = -> a | b | c | d -> + | - -> | const

14 Copyright © 2007 Addison-Wesley. All rights reserved. 1–14 An Example Derivation => => => = => a = => a = + => a = b + => a = b + const

15 Copyright © 2007 Addison-Wesley. All rights reserved. 1–15 Parse Tree A hierarchical representation of a derivation const a = b +

16 Copyright © 2007 Addison-Wesley. All rights reserved.

17

18 1–18 Ambiguity in Grammars A grammar is ambiguous if and only if it generates a sentential form that has two or more distinct parse trees

19 Copyright © 2007 Addison-Wesley. All rights reserved. 1–19 An Ambiguous Expression Grammar  | const  / | - const --//

20 Copyright © 2007 Addison-Wesley. All rights reserved. 1–20 An Unambiguous Expression Grammar If we use the parse tree to indicate precedence levels of the operators, we cannot have ambiguity  - |  / const | const const / -

21 Copyright © 2007 Addison-Wesley. All rights reserved. 1–21 Associativity of Operators Operator associativity can also be indicated by a grammar -> + | const (ambiguous) -> + const | const (unambiguous) const + +

22 Copyright © 2007 Addison-Wesley. All rights reserved. 1–22 Extended BNF Optional parts are placed in brackets [ ] -> ident ([ ]) Alternative parts of RHSs are placed inside parentheses and separated via vertical bars → (+|-) const Repetitions (0 or more) are placed inside braces { } → letter {letter|digit}

23 Copyright © 2007 Addison-Wesley. All rights reserved. 1–23 BNF and EBNF BNF  + | - |  * | / | EBNF  {(+ | -) }  {(* | /) }

24 Copyright © 2007 Addison-Wesley. All rights reserved. Static Semantics Context-free grammars (CFGs) cannot describe all of the syntax of programming languages For example –the requirement that a variable be declared before it can be used is impossible to express in a grammar –information about variable and expression types could be included in a grammar but only at the cost of great complexity

25 Copyright © 2007 Addison-Wesley. All rights reserved.


Download ppt "Chapter 3 Describing Syntax and Semantics Sections 1-3."

Similar presentations


Ads by Google