Chapter 3 syntax part 1
This presentation is the property of its rightful owner.
Sponsored Links
1 / 17

Chapter 3 Syntax Part 1 PowerPoint PPT Presentation


  • 92 Views
  • Uploaded on
  • Presentation posted in: General

Chapter 3 Syntax Part 1. CMSC 331 Shon Vick. 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.

Download Presentation

Chapter 3 Syntax Part 1

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


Chapter 3 syntax part 1

Chapter 3Syntax Part 1

CMSC 331

Shon Vick


Syntax and semantics

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

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 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

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

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

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

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

Example Derivation

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

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

=> a = <term> + <term>

=> a = <var> + <term>

=> a = b + <term>

=> a = b + const


Parse trees

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 trees1

Parse Trees

PS -> P |

P PS

P -> e |

'(' PS ')' |

'<' PS '>' |

'[' PS ']'

What’s the parse

tree for this statement ?

< [ ] [ < > ] >


Ambiguity

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

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

EBNF example

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

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

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


Ebnf bnf

EBNF/BNF

  • EBNF and BNF are equivalent

  • How can {} be expressed in BNF?

  • How can ( ) be expressed?

  • How can [ ] be expressed?


Syntax graphs

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

Recursive Descent

  • An easy way to build a parser

  • Example

  • Does work in the face of left recursion

  • Purge left recursion


  • Login