chapter 3 syntax part 1
Download
Skip this Video
Download Presentation
Chapter 3 Syntax Part 1

Loading in 2 Seconds...

play fullscreen
1 / 17

Chapter 3 Syntax Part 1 - PowerPoint PPT Presentation


  • 150 Views
  • Uploaded on

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.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
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
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
ad