Presentation is loading. Please wait.

Presentation is loading. Please wait.

Copyright © 2006 Addison-Wesley. All rights reserved.1-1 ICS 410: Programming Languages Chapter 3 : Describing Syntax and Semantics Syntax.

Similar presentations


Presentation on theme: "Copyright © 2006 Addison-Wesley. All rights reserved.1-1 ICS 410: Programming Languages Chapter 3 : Describing Syntax and Semantics Syntax."— Presentation transcript:

1 Copyright © 2006 Addison-Wesley. All rights reserved.1-1 ICS 410: Programming Languages Chapter 3 : Describing Syntax and Semantics Syntax

2 Copyright © 2006 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. Syntax and semantics provide a definition for programming languages.

3 Copyright © 2006 Addison-Wesley. All rights reserved.1-3 Terminology 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).

4 Copyright © 2006 Addison-Wesley. All rights reserved.1-4 Formal Methods of Describing Syntax Backus-Naur Form (BNF) –Most widely known method for describing programming language syntax. Extended BNF –Improves readability and writability of BNF

5 Copyright © 2006 Addison-Wesley. All rights reserved.1-5 BNF and Context-Free Grammars Context-Free Grammars –Developed by Noam Chomsky in the mid-1950s –Define a class of languages called context-free languages. Backus-Naur Form (1959) –Invented by John Backus to describe Algol 58 –BNF is equivalent to context-free grammars –BNF is a metalanguage used to describe another language –In BNF, abstractions are used to represent classes of syntactic structures--they act like syntactic variables (also called nonterminal symbols)

6 Copyright © 2006 Addison-Wesley. All rights reserved.1-6 BNF Fundamentals Non-terminals: BNF abstractions Terminals: lexemes and tokens Grammar: a collection of rules –Examples of BNF rules: → identifier | identifier, → if then

7 Copyright © 2006 Addison-Wesley. All rights reserved.1-7 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. A nonterminal symbol can have more than one RHS  | begin end

8 Copyright © 2006 Addison-Wesley. All rights reserved.1-8 Describing Lists Syntactic lists are described using recursion  ident | ident, A derivation is a repeated application of rules, starting with the start symbol and ending with a sentence (all terminal symbols)

9 Copyright © 2006 Addison-Wesley. All rights reserved.1-9 An Example Grammar   | ;  =  a | b | c | d  + | -  | const

10 Copyright © 2006 Addison-Wesley. All rights reserved.1-10 An Example Derivation Consider the derivation for the statement: a = b + const => => => = => a = => a = + => a = b + => a = b + const

11 Copyright © 2006 Addison-Wesley. All rights reserved.1-11 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

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

13 Copyright © 2006 Addison-Wesley. All rights reserved.1-13 Ambiguity in Grammars A grammar is ambiguous if and only if it generates a sentential form that has two or more distinct parse trees

14 Copyright © 2006 Addison-Wesley. All rights reserved.1-14 An Ambiguous Expression Grammar Consider the derivation for const-const/const using the following grammar:  | const  / | - const --//

15 Copyright © 2006 Addison-Wesley. All rights reserved.1-15 An Unambiguous Expression Grammar To avoid ambiguity, rewrite the grammar to indicate the precedence level of operators,  - |  / const| const const-const/const const / -

16 Copyright © 2006 Addison-Wesley. All rights reserved.1-16 Associativity of Operators Operator associativity can also be indicated by a grammar Consider const + const + const and the following grammar: -> + | const(ambiguous) -> + const | const (unambiguous) const + +

17 Copyright © 2006 Addison-Wesley. All rights reserved.1-17 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}

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

19 Copyright © 2006 Addison-Wesley. All rights reserved.1-19 Static Semantics Some characteristics of the structure of programming languages are difficult to describe with BNF and some are impossible (Static semantics), such as –Type compatibility rules - difficult –A variable should be declared before it is used - impossible Attribute grammar is a formal approach to describe and check the correctness of the static semantics of a program. Attribute grammar was designed by Knuth in 1968.

20 Copyright © 2006 Addison-Wesley. All rights reserved.1-20 Attribute Grammars (AGs) CFGs cannot describe all aspects of the syntax of programming languages. AG is an extension to a CFG to describe static semantics. These extensions include: Attributes attribute computation functions predicate functions

21 Copyright © 2006 Addison-Wesley. All rights reserved.1-21 Attribute Grammars (cont.) Attributes –Symbols associated with grammar symbols and can have values. –Three types: Intrinsic attribute, synthesized attributes, and inherited attributes. Attribute computation functions Functions associated with grammar rules and these are used to specify how attribute values are computed. Predicate functions Predicates to check for attribute consistency.

22 Copyright © 2006 Addison-Wesley. All rights reserved.1-22 Attribute Grammars Def: An attribute grammar G is a CFG G = (S, N, T, P) with the following additions: –For each grammar symbol x there is a set A(x) of attribute values. –Each rule has a set of functions that define certain attributes of the nonterminals in the rule. –Each rule has a (possibly empty) set of predicates to check for attribute consistency.

23 Copyright © 2006 Addison-Wesley. All rights reserved.1-23 Attribute Grammars Let X 0  X 1... X n be a rule Functions of the form S(X 0 ) = f(A(X 1 ),..., A(X n )) define synthesized attributes (depend on children) Functions of the form I(X j ) = f(A(X 0 ),..., A(X n )), for 1 <= j <= n, define inherited attributes (depend on parent and siblings). Initially, there are intrinsic attributes on the leaves. It could come from the symbol table.

24 Copyright © 2006 Addison-Wesley. All rights reserved.1-24 Example

25 Copyright © 2006 Addison-Wesley. All rights reserved.1-25 A parse Tree for A = A + B

26 Copyright © 2006 Addison-Wesley. All rights reserved.1-26 The Flow of Attributes in the Parse Tree


Download ppt "Copyright © 2006 Addison-Wesley. All rights reserved.1-1 ICS 410: Programming Languages Chapter 3 : Describing Syntax and Semantics Syntax."

Similar presentations


Ads by Google