Presentation is loading. Please wait.

Presentation is loading. Please wait.

Dr. Muhammed Al-Mulhem 1ICS535-101 ICS 535 Design and Implementation of Programming Languages Part 1 Fundamentals (Chapter 4) Compilers and Syntax.

Similar presentations


Presentation on theme: "Dr. Muhammed Al-Mulhem 1ICS535-101 ICS 535 Design and Implementation of Programming Languages Part 1 Fundamentals (Chapter 4) Compilers and Syntax."— Presentation transcript:

1 Dr. Muhammed Al-Mulhem 1ICS535-101 ICS 535 Design and Implementation of Programming Languages Part 1 Fundamentals (Chapter 4) Compilers and Syntax

2 Dr. Muhammed Al-Mulhem 2ICS535-101 Syntax and Semantics of Programs Syntax: the form or structure of the expressions, statements, and program units. Syntax: the form or structure of the expressions, statements, and program units. Semantics: the meaning 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. Syntax and semantics provide a definition for programming languages.

3 Dr. Muhammed Al-Mulhem 3ICS535-101 Terminology A sentence is a string of characters over some alphabet. A sentence is a string of characters over some alphabet. A language is a set of sentences. A language is a set of sentences. A lexeme is the lowest level syntactic unit of a language (e.g., *, sum, begin ). 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). A token is a category of lexemes (e.g., identifier).

4 Dr. Muhammed Al-Mulhem 4ICS535-101 Formal Methods of Describing Syntax Backus-Naur Form (BNF) Backus-Naur Form (BNF) Most widely known method for describing programming language syntax. Most widely known method for describing programming language syntax. Extended BNF Extended BNF Improves readability and writability of BNF Improves readability and writability of BNF

5 Dr. Muhammed Al-Mulhem 5ICS535-101 Formal Methods of Describing Syntax Context-Free Grammars Context-Free Grammars Developed by Noam Chomsky in the mid-1950s Developed by Noam Chomsky in the mid-1950s Define a class of languages called context-free languages. Define a class of languages called context-free languages. Backus-Naur Form (1959) Backus-Naur Form (1959) Invented by John Backus to describe Algol 58 Invented by John Backus to describe Algol 58 BNF is equivalent to context-free grammars BNF is equivalent to context-free grammars BNF is a metalanguage used to describe another language 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) In BNF, abstractions are used to represent classes of syntactic structures--they act like syntactic variables (also called nonterminal symbols)

6 Dr. Muhammed Al-Mulhem 6ICS535-101 BNF Fundamentals Non-terminals: BNF abstractions Non-terminals: BNF abstractions Terminals: lexemes and tokens Terminals: lexemes and tokens Grammar: a collection of rules Grammar: a collection of rules Examples of BNF rules: Examples of BNF rules: → identifier → identifier | identifier, | identifier, → if then → if then

7 Dr. Muhammed Al-Mulhem 7ICS535-101 BNF Rules A rule has a left-hand side (LHS) and a right-hand side (RHS), and consists of terminal and nonterminal symbols. 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 grammar is a finite nonempty set of rules. A nonterminal symbol can have more than one RHS A nonterminal symbol can have more than one RHS   | begin end | begin end

8 Dr. Muhammed Al-Mulhem 8ICS535-101 Describing Lists Syntactic lists are described using recursion Syntactic lists are described using recursion  ident  ident | ident, | ident, A derivation is a repeated application of rules, starting with the start symbol and ending with a sentence (all terminal symbols) A derivation is a repeated application of rules, starting with the start symbol and ending with a sentence (all terminal symbols)

9 Dr. Muhammed Al-Mulhem 9ICS535-101 An Example Grammar    | ;  | ;  =  =  a | b | c | d  a | b | c | d  +  + | - | -  | const  | const

10 Dr. Muhammed Al-Mulhem 10ICS535-101 An Example Derivation Consider the derivation for the statement: Consider the derivation for the statement: a = b + const a = b + const => => => => => = => = => a = => a = => a = + => a = + => a = b + => a = b + => a = b + const => a = b + const

11 Dr. Muhammed Al-Mulhem 11ICS535-101 Derivation Every string of symbols in the derivation is a sentential form Every string of symbols in the derivation is a sentential form A sentence is a sentential form that has only terminal symbols 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 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 A derivation may be neither leftmost nor rightmost

12 Dr. Muhammed Al-Mulhem 12ICS535-101 Parse Tree A hierarchical representation of a derivation A hierarchical representation of a derivation const a = b +

13 Dr. Muhammed Al-Mulhem 13ICS535-101 Ambiguity in Grammars A grammar is ambiguous if and only if it generates a sentential form that has two or more distinct parse trees A grammar is ambiguous if and only if it generates a sentential form that has two or more distinct parse trees

14 Dr. Muhammed Al-Mulhem 14ICS535-101 An Ambiguous Expression Grammar Consider the derivation for const-const/const using the following grammar: Consider the derivation for const-const/const using the following grammar:  | const  | const  / | -  / | - const --//

15 Dr. Muhammed Al-Mulhem 15ICS535-101 An Unambiguous Expression Grammar To avoid ambiguity, rewrite the grammar to indicate the precedence level of operators, To avoid ambiguity, rewrite the grammar to indicate the precedence level of operators,  - |  - |  / const | const  / const | const const / - const-const/const

16 Dr. Muhammed Al-Mulhem 16ICS535-101 Associativity of Operators Operator associativity can also be indicated by a grammar Operator associativity can also be indicated by a grammar Consider const + const + const and the following grammar: Consider const + const + const and the following grammar: -> + | const(ambiguous) -> + | const(ambiguous) -> + const | const (unambiguous) -> + const | const (unambiguous) const + + const + const + const

17 Dr. Muhammed Al-Mulhem 17ICS535-101 Extended BNF Optional parts are placed in brackets [ ] Optional parts are placed in brackets [ ] -> ident ([ ]) -> ident ([ ]) Alternative parts of RHSs are placed inside parentheses and separated via vertical bars Alternative parts of RHSs are placed inside parentheses and separated via vertical bars → (+|-) const → (+|-) const Repetitions (0 or more) are placed inside braces { } Repetitions (0 or more) are placed inside braces { } → letter {letter|digit} → letter {letter|digit}

18 Dr. Muhammed Al-Mulhem 18ICS535-101 BNF and EBNF BNF BNF  +  + | - | - | |  *  * | / | / | | EBNF EBNF  {(+ | -) }  {(+ | -) }  {(* | /) }  {(* | /) }

19 Dr. Muhammed Al-Mulhem 19ICS535-101 Static Semantics Some characteristics of the structure of programming languages are difficult to describe with BNF and some are impossible (Static semantics), such as 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 Type compatibility rules - difficult A variable should be declared before it is used - impossible 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 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. Attribute grammar was designed by Knuth in 1968.

20 Dr. Muhammed Al-Mulhem 20ICS535-101 Attribute Grammars (AGs) CFGs cannot describe all aspects of the syntax of programming languages. 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: AG is an extension to a CFG to describe static semantics. These extensions include: Attributes Attributes attribute computation functions attribute computation functions predicate functions predicate functions

21 Dr. Muhammed Al-Mulhem 21ICS535-101 Attribute Grammars (cont.) Attributes Attributes Symbols associated with grammar symbols and can have values. Symbols associated with grammar symbols and can have values. Three types: Intrinsic attribute, synthesized attributes, and inherited attributes. Three types: Intrinsic attribute, synthesized attributes, and inherited attributes. Attribute computation functions Attribute computation functions Functions associated with grammar rules and these are used to specify how attribute values are computed. Predicate functions Predicate functions Predicates to check for attribute consistency.

22 Dr. Muhammed Al-Mulhem 22ICS535-101 Attribute Grammars Def: An attribute grammar G is a CFG G = (S, N, T, P) with the following additions: 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. 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 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. Each rule has a (possibly empty) set of predicates to check for attribute consistency.

23 Dr. Muhammed Al-Mulhem 23ICS535-101 Attribute Grammars Let X 0  X 1... X n be a rule 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 Functions of the form S(X 0 ) = f(A(X 1 ),..., A(X n )) define synthesized attributes Functions of the form I(X j ) = f(A(X 0 ),..., A(X n )), for 1 <= j <= n, define inherited attributes Functions of the form I(X j ) = f(A(X 0 ),..., A(X n )), for 1 <= j <= n, define inherited attributes Initially, there are intrinsic attributes on the leaves. It could come from the symbol table. Initially, there are intrinsic attributes on the leaves. It could come from the symbol table.

24 Dr. Muhammed Al-Mulhem 24ICS535-101 Example

25 Dr. Muhammed Al-Mulhem 25ICS535-101 A parse Tree for A = A + B

26 Dr. Muhammed Al-Mulhem 26ICS535-101 The Flow of Attributes in the Parse Tree


Download ppt "Dr. Muhammed Al-Mulhem 1ICS535-101 ICS 535 Design and Implementation of Programming Languages Part 1 Fundamentals (Chapter 4) Compilers and Syntax."

Similar presentations


Ads by Google