- By
**calix** - Follow User

- 150 Views
- Uploaded on

Download Presentation
## PowerPoint Slideshow about ' Chapter 3 Syntax Part 1' - calix

**An Image/Link below is provided (as is) to download presentation**

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript

Syntax and Semantics

- Syntax - the form or structure of the expressions – whether an expression is well formed
- Semantics – the meaning of an expression

Syntactic Structure

- Syntax almost always expressed using some variant of a notation called a context-free grammar (CFG) or simply grammar
- BNF
- EBNF
- Syntax Graph

A CFG has 4 parts

- A set of tokens (lexemes), known as terminal symbols
- A set of non-terminals
- A set of rules (productions) where each production consists of a left-hand side (LHS) and a right-hand side (RHS) The LHS is a non-terminal and the RHS is a sequence of terminals and/or non-terminal symbols.
- A special non-terminal symbol designated as the start symbol

An example of BNF syntax for real numbers

<r> ::= <ds> . <ds>

<ds> ::= <d> | <d> <ds>

<d> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7| 8 | 9

< > encloses non-terminal symbols

::= \'is\' or \'is made up of \' or \'derives\'

(sometimes denoted with an arrow ->)

| or

Example

- On the example from the previous slide:
- What are the tokens?
- What are the lexemes?
- What are the non terminals?
- What are the productions?

BNF Points

- A non terminal can have more than RHS or an OR can be used
- Lists or sequences are expressed via recursion
- A derivation is just a repeated set of production (rule) applications
- Examples

Example Grammar

<program> -> <stmts>

<stmts> -> <stmt> | <stmt> ; <stmts>

<stmt> -> <var> = <expr>

<var> -> a | b | c | d

<expr> -> <term> + <term> |

<term> - <term>

<term> -> <var> | const

Example Derivation

<program> => <stmts> => <stmt>

=> <var> = <expr> => a = <expr>

=> a = <term> + <term>

=> a = <var> + <term>

=> a = b + <term>

=> a = b + const

Parse Trees

- Alternative representation for a derivation
- Example parse tree for the previous example

stmts

stmt

expr

var

=

term

term

+

a

var

const

b

Parse Trees

PS -> P |

P PS

P -> e |

\'(\' PS \')\' |

\'<\' PS \'>\' |

\'[\' PS \']\'

What’s the parse

tree for this statement ?

< [ ] [ < > ] >

Ambiguity

- Two parse trees for the same expression
- Consider the following grammar

string -> string + string |

string - string

digit -> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

What are the two trees for 9 - 5 + 2

EBNF - Extended BNF

- Like BNF except that
- Non-terminals start w/ uppercase
- Parens are used for grouping terminals
- Braces {} represent zero or more occurrences (iteration )
- Brackets [] represent an optional construct , that is a construct that appears either once or not at all.

EBNF example

Exp -> Term { (\'+\' | \'-\') Term }

Term -> Factor { (\'*\' | \'/\') Factor }

Factor -> \'(\' Exp \')\' | variable | constant

EBNF/BNF

- EBNF and BNF are equivalent
- How can {} be expressed in BNF?
- How can ( ) be expressed?
- How can [ ] be expressed?

Syntax Graphs

Terminal in circles

nonterminals in rectangles;

Syntax Graphs - put the terminals in circles or

ellipses and put the nonterminals in rectangles;

connect with lines with arrowheads

e.g., Pascal type declarations

type_identifier

( identifier )

,

constant .. constant

Recursive Descent

- An easy way to build a parser
- Example
- Does work in the face of left recursion
- Purge left recursion

Download Presentation

Connecting to Server..