SlideShare a Scribd company logo
2
Most read
3
Most read
4
Most read
COMPILER DESIGN
SYNTAX ANALYSIS
RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 1
Ms. RICHA SHARMA
Assistant Professor
richa.18364@lpu.co.in
Lovely Professional
University
SYNTAX ANALYSIS INTRODUCTION
• LEXICAL PHASE IS IMPLEMENTED ON FINITE AUTOMATA & FINITE AUTOMATA CAN REALLY
ONLY EXPRESS THINGS WHERE YOU CAN COUNT MODULUS ON K.
• REGULAR LANGUAGES – THE WEAKEST FORMAL LANGUAGES WIDELY USED
– MANY APPLICATIONS
– CAN’T HANDLE ITERATION & NESTED LOOPS(NESTED IF ELSE ).
TO SUMMARIZE, THE LEXER TAKES A STRING OF CHARACTER AS INPUT AND PRODUCES A STRING
OF TOKENS AS OUTPUT.
THAT STRING OF TOKENS IS THE INPUT TO THE PARSER WHICH TAKES A STRING OF TOKENS AND
PRODUCES A PARSE TREE OF THE PROGRAM.
SOMETIMES THE PARSE TREE IS ONLY IMPLICIT. SO THE, A COMPILER MAY NEVER ACTUALLY
BUILD THE FULL PARSE
TREE.
RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 2
Lexical
Analyzer
Parser
Source
program
token
getNext
Token
Symbol
table
Parse tree Rest of
Front End
Intermediate
representation
ROLE OF SYNTAX ANALYSIS/PARSER
RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 3
CONTEXT FREE GRAMMARS
expression -> expression + term
expression -> expression – term
expression -> term
term -> term * factor
term -> term / factor
term -> factor
factor -> (expression)
factor -> id
S - IS A FINITE SET OF TERMINALS
N - IS A FINITE SET OF NON-TERMINALS
P - IS A FINITE SUBSET OF PRODUCTION
RULES
S - IS THE START SYMBOL
G=(S ,N,P,S)
• A GRAMMAR DERIVES STRINGS BY BEGINNING WITH START SYMBOL AND
REPEATEDLY REPLACING A NON TERMINAL BY THE RIGHT HAND SIDE OF A
PRODUCTION FOR THAT NON TERMINAL.
• FROM THE START SYMBOL OF A GRAMMAR G FORM THE LANGUAGE L(G)
DEFINED BY THE GRAMMAR THE STRINGS THAT CAN BE DERIVED .
RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 4
RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 5
• PROGRAMMING LANGUAGES HAVE RECURSIVE STRUCTURE
• CONTEXT-FREE GRAMMARS ARE A NATURAL NOTATION FOR THIS
RECURSIVE STRUCTURE .
NOT ALL STRINGS OF TOKENS ARE PROGRAMS . . .
. . . PARSER MUST DISTINGUISH BETWEEN VALID AND INVALID
STRINGS OF TOKENS
WE NEED :
– A LANGUAGE :FOR DESCRIBING VALID STRINGS OF TOKENS
– A METHOD: FOR DISTINGUISHING VALID FROM INVALID STRINGS OF
TOKENS
CONTEXT FREE GRAMMARS
RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY)
E ::= T | E + T | E - T
T ::= F | T * F |T / F
F ::= id | (E)
• ARITHMETIC EXPRESSIONS
• STATEMENTS
If Statement ::= if E then Statement else Statement
CONTEXT FREE GRAMMAR EXAMPLES
Steps:
1. Begin with a string with only the start
symbol S
2. Replace any non-terminal X in the
string by the right-hand side of some
production
X -> Y1…Yn
3. Repeat (2) until there are no non-
terminals
6
DERIVATIONS
• DERIVATION IS A SEQUENCE OF PRODUCTIONS SO BEGINNING WITH THE START SYMBOL.
• WE CAN APPLY PRODUCTIONS ONE AT A TIME IN SEQUENCE & THAT WILL PRODUCES A
DERIVATION.
• A DERIVATION IS A SEQUENCE OF PRODUCTIONS
A -> … -> … ->… -> … -> …
• A DERIVATION CAN BE DRAWN AS A TREE
– START SYMBOL IS THE TREE’S ROOT
– FOR A PRODUCTION X -> Y1…Yn ADD CHILDREN Y1…Yn TO NODE X
• GRAMMAR
E -> E + E | E * E | (E) | ID
• STRING
ID *ID + ID
RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 7
DERIVATIONS
DERIVATIONS ARE OF TWO TYPES:
• RIGHTMOST AND LEFTMOST DERIVATIONS
• LETS DISCUSS WITH EXAMPLE
GRAMMAR: E -> E + E | E * E | -E | (E) | ID
STRING :(ID+ID)
LEFT MOST DERIVATION RIGHT MOST DERIVATION
E E
= (E) = (E)
= (E+E) = (E+E)
= (ID+E) = (E+ID)
=(ID+ID) =(ID+ID)
RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 8
DERIVATIONS
• NOW WE'RE GOING TO PARSE THIS STRING AND WE'RE GOING TO SHOW HOW TO
PRODUCE A DERIVATION FOR THE STRING AND ALSO AT THE SAME TIME BUILD
THE TREE.
• PARSE TREES HAVE TERMINALS AT THE LEAVES AND NONTERMINALS AT THE
INTERIOR NODES AND FURTHERMORE, IN-ORDER TRAVERSAL OF THE LEAVES IS
THE ORIGINAL INPUT.
• GRAMMAR
E -> E + E | E * E | (E) | ID
• STRING
ID * ID + ID
RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 9
LEFT MOST DERIVATION AND PARSE TREE
E
E
RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 10
LEFT MOST DERIVATION AND PARSE TREE
E
E+E E
E + E
RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 11
LEFT MOST DERIVATION AND PARSE TREE
E
E+E E
E*E+E E + E
E * E
RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 12
LEFT MOST DERIVATION AND PARSE TREE
E
E+E E
E*E+E E + E
id*E+E E * E
id
RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 13
LEFT MOST DERIVATION AND PARSE TREE
E
E+E E
E*E+E E + E
id*E+E E * E
id*id+E id id
RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 14
LEFT MOST DERIVATION AND PARSE TREE
E
E+E E
E*E+E E + E
id*E+E E * E id
id*id+id id id
RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 15
DERIVATIONS
• A PARSE TREE HAS
– TERMINALS AT THE LEAVES
– NON-TERMINALS AT THE INTERIOR NODES
• AN IN-ORDER TRAVERSAL OF THE LEAVES IS THE ORIGINAL INPUT
• THE PARSE TREE SHOWS THE ASSOCIATION OF OPERATIONS, THE INPUT STRING
DOES NOT .
NOTE: THAT RIGHT-MOST AND LEFT-MOST DERIVATIONS HAVE THE SAME PARSE
TREE IF NOT THEN THE GRAMMAR IS AMBIGUOUS GRAMMAR.
RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 16
AMBIGUITY
• IF STRING HAS TWO OR MORE RIGHT MOST DERIVATIONS OR TWO OR MORE
LEFT DERIVATIONS THEN THAT STRING WILL HAVE TWO DISTINCT PARSE TREES
AND HENCE GRAMMAR WILL BE AMBIGUOUS.
• AMBIGUITY IS BAD: LEAVES MEANING OF SOME PROGRAMS ILL-DEFINED
• MULTIPLE PARSE TREES FOR SOME PROGRAM THEN THAT ESSENTIALLY MEANS
THAT YOU'RE LEAVING IT UP TO THE COMPILER TO PICK WHICH OF THOSE TWO
POSSIBLE INTERPRETATIONS OF THE PROGRAM YOU WANT IT TO GENERATE
CODE FOR AND THAT'S NOT A GOOD IDEA.
• TO REMOVE AMBIGUITY WE NEED TO REWRITE THE RULES CHECKING OVER
PRECEDENCE AND ASSOCIATIVITY .
RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 17
AMBIGUITY
RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 18
Eg: The string id +id* id produces two parse tree hence the grammar is ambiguous.
One can remove the ambiguity by rewriting the grammar as introducing new non-terminal instead of r
non-terminal , but it can result in left or right recursion .Hence we have to remove left recursion.
AMBIGUITY
• IF WE HAVE AN AMBIGUOUS GRAMMAR:
E →E * E
E →NUM
• AS THIS DEPENDS ON THE ASSOCIATIVITY OF *,WE USE DIFFERENT REWRITE
RULES FOR DIFFERENT ASSOCIATIVITY .
• IF * IS LEFT-ASSOCIATIVE, WE MAKE THE GRAMMAR LEFT-RECURSIVE BY HAVING
A RECURSIVE REFERENCE TO THE LEFT ONLY OF THE OPERATOR SYMBOL.
UNAMBIGUOUS GRAMMAR: E →E * E’
E →E’
E’→NUM
RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 19
LEFT RECURSION
• UNAMBIGUOUS GRAMMAR : E →E * E’
E →E’
E’→NUM
• THIS GRAMMAR IS NOW LEFT RECURSIVE. LEFT RECURSIVE GRAMMAR IS ANY
GRAMMAR THAT HAS A NON-TERMINAL WHERE IF YOU START WITH THAT NON-
TERMINAL AND YOU DO SOME NON-EMPTY SEQUENCE OF RE-WRITES.
• CONSIDER THE LEFT-RECURSIVE GRAMMAR S -> S a | b
• S GENERATES ALL STRINGS STARTING WITH “a” AND FOLLOWED BY ANY
NUMBER OF “b’S”
• CAN REWRITE USING RIGHT-RECURSION
• S ->bS’
S’ ->aS’ |€
RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY)
20
EXAMPLES OF LEFT RECURSION
1. E -> E + T | T T -> ID | (E)
2. S ->(L)|X L ->L,S|S
3. S ->S0S1S|01
RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY)
21
LEFT FACTORING
• LEFT FACTORING IS A GRAMMAR TRANSFORMATION THAT IS USEFUL
FOR PRODUCING A DETERMINISTIC GRAMMAR FROM NON-
DETERMINISTIC GRAMMAR SUITABLE FOR PREDICTIVE OR TOP-DOWN
PARSING.
• CONSIDER FOLLOWING GRAMMAR:
• STMT -> IF EXPR THEN STMT ELSE STMT
• | IF EXPR THEN STMT
• ON SEEING INPUT IF IT IS NOT CLEAR FOR THE PARSER WHICH
PRODUCTION TO USE
• WE CAN EASILY PERFORM LEFT FACTORING:
• IF WE HAVE A->ΑΒ1 | ΑΒ2 THEN WE REPLACE IT WITH
• A -> ΑA’
• A’ -> Β1 | Β2
RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY)
22
EXAMPLES OF LEFT FACTORING
1. S -> iEtS|iEtSES|a E ->b
2. S-> aSSbS|aSaSb|abb|b
3. S-> bSSaaS|bSSaSb|bSb|a
RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY)
23
RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 24

More Related Content

PPT
PULSE CODE MODULATION (PCM)
PPTX
PPTX
Semantics analysis
PPTX
Turing Machine
PPTX
STACKS IN DATASTRUCTURE
PPT
Intermediate code generation (Compiler Design)
PPTX
Chomsky Normal Form
PPTX
Cybersecurity
PULSE CODE MODULATION (PCM)
Semantics analysis
Turing Machine
STACKS IN DATASTRUCTURE
Intermediate code generation (Compiler Design)
Chomsky Normal Form
Cybersecurity

What's hot (20)

PDF
Syntax analysis
PPTX
Parsing in Compiler Design
PDF
Lexical Analysis - Compiler design
PPTX
Specification-of-tokens
PPTX
Syntax Analysis in Compiler Design
PDF
Bottom up parser
PPTX
Intermediate code generator
PPTX
LR(1) and SLR(1) parsing
PPTX
Lexical analysis - Compiler Design
PDF
COMPILER DESIGN- Syntax Directed Translation
PPT
Parsing
PPTX
Lecture 14 run time environment
PPTX
Lexical Analysis - Compiler Design
PPTX
LL(1) parsing
PPT
Top down parsing
PPTX
Type checking in compiler design
PPTX
Top down and botttom up Parsing
PPTX
Top Down Parsing, Predictive Parsing
PPTX
Lexical analyzer generator lex
PPTX
Top down parsing
Syntax analysis
Parsing in Compiler Design
Lexical Analysis - Compiler design
Specification-of-tokens
Syntax Analysis in Compiler Design
Bottom up parser
Intermediate code generator
LR(1) and SLR(1) parsing
Lexical analysis - Compiler Design
COMPILER DESIGN- Syntax Directed Translation
Parsing
Lecture 14 run time environment
Lexical Analysis - Compiler Design
LL(1) parsing
Top down parsing
Type checking in compiler design
Top down and botttom up Parsing
Top Down Parsing, Predictive Parsing
Lexical analyzer generator lex
Top down parsing
Ad

Viewers also liked (20)

PDF
Lexical analysis
PDF
Compiler Design Introduction
PPT
Function overloading(c++)
PPT
friend function(c++)
PPT
Lexical analyzer
PPT
Lecture 04 syntax analysis
PPT
Lecture 06 syntax analysis 3
PPT
Syntax analysis
PPT
Compiler Design
PPT
Syntactic Analysis
PPTX
Role-of-lexical-analysis
PPT
Syntax analysis
PPT
PPTX
Compiler design
PPT
Data Locality
KEY
Unit 1 cd
PPT
Compiler Design - Introduction to Compiler
PPTX
Presentation on overloading
PDF
Syntactic analysis.pptx
Lexical analysis
Compiler Design Introduction
Function overloading(c++)
friend function(c++)
Lexical analyzer
Lecture 04 syntax analysis
Lecture 06 syntax analysis 3
Syntax analysis
Compiler Design
Syntactic Analysis
Role-of-lexical-analysis
Syntax analysis
Compiler design
Data Locality
Unit 1 cd
Compiler Design - Introduction to Compiler
Presentation on overloading
Syntactic analysis.pptx
Ad

Similar to Compiler design syntax analysis (17)

PPTX
5-Introduction to Parsing and Context Free Grammar-09-05-2023.pptx
PPTX
6-Role of Parser, Construction of Parse Tree and Elimination of Ambiguity-06-...
PDF
Syntax Analysis_73 pages notes IIIT Manipur.pdf
PPTX
3. Syntax Analyzer.pptx
PPTX
Fuzzy Matching with Apache Spark
PPT
PDF
05SyntaxAnalysis in compiler design notespdf
PDF
Syntactic analysis in NLP
PPTX
BOTTOM_UP_Parsing techniques_compiler design5.pptx
PPTX
Parsing (Automata)
PPT
Module 11
PPTX
Bioinformatics p2-p3-perl-regexes v2013-wim_vancriekinge
PDF
Don't Fear the Regex - CapitalCamp/GovDays 2014
PPTX
Unitiv 111206005201-phpapp01
PDF
Witchcraft
PPTX
compiler design syntax analysis top down parsing
PPTX
RECURSIVE DESCENT PARSING
5-Introduction to Parsing and Context Free Grammar-09-05-2023.pptx
6-Role of Parser, Construction of Parse Tree and Elimination of Ambiguity-06-...
Syntax Analysis_73 pages notes IIIT Manipur.pdf
3. Syntax Analyzer.pptx
Fuzzy Matching with Apache Spark
05SyntaxAnalysis in compiler design notespdf
Syntactic analysis in NLP
BOTTOM_UP_Parsing techniques_compiler design5.pptx
Parsing (Automata)
Module 11
Bioinformatics p2-p3-perl-regexes v2013-wim_vancriekinge
Don't Fear the Regex - CapitalCamp/GovDays 2014
Unitiv 111206005201-phpapp01
Witchcraft
compiler design syntax analysis top down parsing
RECURSIVE DESCENT PARSING

Recently uploaded (20)

PPTX
Fundamentals of safety and accident prevention -final (1).pptx
PPTX
bas. eng. economics group 4 presentation 1.pptx
PDF
III.4.1.2_The_Space_Environment.p pdffdf
PPTX
Safety Seminar civil to be ensured for safe working.
PPT
Mechanical Engineering MATERIALS Selection
DOCX
573137875-Attendance-Management-System-original
PDF
The CXO Playbook 2025 – Future-Ready Strategies for C-Suite Leaders Cerebrai...
PPTX
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
PPTX
CH1 Production IntroductoryConcepts.pptx
PDF
Enhancing Cyber Defense Against Zero-Day Attacks using Ensemble Neural Networks
PDF
Operating System & Kernel Study Guide-1 - converted.pdf
PDF
Unit I ESSENTIAL OF DIGITAL MARKETING.pdf
PDF
737-MAX_SRG.pdf student reference guides
PPTX
OOP with Java - Java Introduction (Basics)
PDF
Automation-in-Manufacturing-Chapter-Introduction.pdf
PDF
Mohammad Mahdi Farshadian CV - Prospective PhD Student 2026
PPTX
Current and future trends in Computer Vision.pptx
PDF
Well-logging-methods_new................
PDF
TFEC-4-2020-Design-Guide-for-Timber-Roof-Trusses.pdf
PPTX
Engineering Ethics, Safety and Environment [Autosaved] (1).pptx
Fundamentals of safety and accident prevention -final (1).pptx
bas. eng. economics group 4 presentation 1.pptx
III.4.1.2_The_Space_Environment.p pdffdf
Safety Seminar civil to be ensured for safe working.
Mechanical Engineering MATERIALS Selection
573137875-Attendance-Management-System-original
The CXO Playbook 2025 – Future-Ready Strategies for C-Suite Leaders Cerebrai...
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
CH1 Production IntroductoryConcepts.pptx
Enhancing Cyber Defense Against Zero-Day Attacks using Ensemble Neural Networks
Operating System & Kernel Study Guide-1 - converted.pdf
Unit I ESSENTIAL OF DIGITAL MARKETING.pdf
737-MAX_SRG.pdf student reference guides
OOP with Java - Java Introduction (Basics)
Automation-in-Manufacturing-Chapter-Introduction.pdf
Mohammad Mahdi Farshadian CV - Prospective PhD Student 2026
Current and future trends in Computer Vision.pptx
Well-logging-methods_new................
TFEC-4-2020-Design-Guide-for-Timber-Roof-Trusses.pdf
Engineering Ethics, Safety and Environment [Autosaved] (1).pptx

Compiler design syntax analysis

  • 1. COMPILER DESIGN SYNTAX ANALYSIS RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 1 Ms. RICHA SHARMA Assistant Professor [email protected] Lovely Professional University
  • 2. SYNTAX ANALYSIS INTRODUCTION • LEXICAL PHASE IS IMPLEMENTED ON FINITE AUTOMATA & FINITE AUTOMATA CAN REALLY ONLY EXPRESS THINGS WHERE YOU CAN COUNT MODULUS ON K. • REGULAR LANGUAGES – THE WEAKEST FORMAL LANGUAGES WIDELY USED – MANY APPLICATIONS – CAN’T HANDLE ITERATION & NESTED LOOPS(NESTED IF ELSE ). TO SUMMARIZE, THE LEXER TAKES A STRING OF CHARACTER AS INPUT AND PRODUCES A STRING OF TOKENS AS OUTPUT. THAT STRING OF TOKENS IS THE INPUT TO THE PARSER WHICH TAKES A STRING OF TOKENS AND PRODUCES A PARSE TREE OF THE PROGRAM. SOMETIMES THE PARSE TREE IS ONLY IMPLICIT. SO THE, A COMPILER MAY NEVER ACTUALLY BUILD THE FULL PARSE TREE. RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 2
  • 3. Lexical Analyzer Parser Source program token getNext Token Symbol table Parse tree Rest of Front End Intermediate representation ROLE OF SYNTAX ANALYSIS/PARSER RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 3
  • 4. CONTEXT FREE GRAMMARS expression -> expression + term expression -> expression – term expression -> term term -> term * factor term -> term / factor term -> factor factor -> (expression) factor -> id S - IS A FINITE SET OF TERMINALS N - IS A FINITE SET OF NON-TERMINALS P - IS A FINITE SUBSET OF PRODUCTION RULES S - IS THE START SYMBOL G=(S ,N,P,S) • A GRAMMAR DERIVES STRINGS BY BEGINNING WITH START SYMBOL AND REPEATEDLY REPLACING A NON TERMINAL BY THE RIGHT HAND SIDE OF A PRODUCTION FOR THAT NON TERMINAL. • FROM THE START SYMBOL OF A GRAMMAR G FORM THE LANGUAGE L(G) DEFINED BY THE GRAMMAR THE STRINGS THAT CAN BE DERIVED . RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 4
  • 5. RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 5 • PROGRAMMING LANGUAGES HAVE RECURSIVE STRUCTURE • CONTEXT-FREE GRAMMARS ARE A NATURAL NOTATION FOR THIS RECURSIVE STRUCTURE . NOT ALL STRINGS OF TOKENS ARE PROGRAMS . . . . . . PARSER MUST DISTINGUISH BETWEEN VALID AND INVALID STRINGS OF TOKENS WE NEED : – A LANGUAGE :FOR DESCRIBING VALID STRINGS OF TOKENS – A METHOD: FOR DISTINGUISHING VALID FROM INVALID STRINGS OF TOKENS CONTEXT FREE GRAMMARS
  • 6. RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) E ::= T | E + T | E - T T ::= F | T * F |T / F F ::= id | (E) • ARITHMETIC EXPRESSIONS • STATEMENTS If Statement ::= if E then Statement else Statement CONTEXT FREE GRAMMAR EXAMPLES Steps: 1. Begin with a string with only the start symbol S 2. Replace any non-terminal X in the string by the right-hand side of some production X -> Y1…Yn 3. Repeat (2) until there are no non- terminals 6
  • 7. DERIVATIONS • DERIVATION IS A SEQUENCE OF PRODUCTIONS SO BEGINNING WITH THE START SYMBOL. • WE CAN APPLY PRODUCTIONS ONE AT A TIME IN SEQUENCE & THAT WILL PRODUCES A DERIVATION. • A DERIVATION IS A SEQUENCE OF PRODUCTIONS A -> … -> … ->… -> … -> … • A DERIVATION CAN BE DRAWN AS A TREE – START SYMBOL IS THE TREE’S ROOT – FOR A PRODUCTION X -> Y1…Yn ADD CHILDREN Y1…Yn TO NODE X • GRAMMAR E -> E + E | E * E | (E) | ID • STRING ID *ID + ID RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 7
  • 8. DERIVATIONS DERIVATIONS ARE OF TWO TYPES: • RIGHTMOST AND LEFTMOST DERIVATIONS • LETS DISCUSS WITH EXAMPLE GRAMMAR: E -> E + E | E * E | -E | (E) | ID STRING :(ID+ID) LEFT MOST DERIVATION RIGHT MOST DERIVATION E E = (E) = (E) = (E+E) = (E+E) = (ID+E) = (E+ID) =(ID+ID) =(ID+ID) RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 8
  • 9. DERIVATIONS • NOW WE'RE GOING TO PARSE THIS STRING AND WE'RE GOING TO SHOW HOW TO PRODUCE A DERIVATION FOR THE STRING AND ALSO AT THE SAME TIME BUILD THE TREE. • PARSE TREES HAVE TERMINALS AT THE LEAVES AND NONTERMINALS AT THE INTERIOR NODES AND FURTHERMORE, IN-ORDER TRAVERSAL OF THE LEAVES IS THE ORIGINAL INPUT. • GRAMMAR E -> E + E | E * E | (E) | ID • STRING ID * ID + ID RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 9
  • 10. LEFT MOST DERIVATION AND PARSE TREE E E RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 10
  • 11. LEFT MOST DERIVATION AND PARSE TREE E E+E E E + E RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 11
  • 12. LEFT MOST DERIVATION AND PARSE TREE E E+E E E*E+E E + E E * E RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 12
  • 13. LEFT MOST DERIVATION AND PARSE TREE E E+E E E*E+E E + E id*E+E E * E id RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 13
  • 14. LEFT MOST DERIVATION AND PARSE TREE E E+E E E*E+E E + E id*E+E E * E id*id+E id id RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 14
  • 15. LEFT MOST DERIVATION AND PARSE TREE E E+E E E*E+E E + E id*E+E E * E id id*id+id id id RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 15
  • 16. DERIVATIONS • A PARSE TREE HAS – TERMINALS AT THE LEAVES – NON-TERMINALS AT THE INTERIOR NODES • AN IN-ORDER TRAVERSAL OF THE LEAVES IS THE ORIGINAL INPUT • THE PARSE TREE SHOWS THE ASSOCIATION OF OPERATIONS, THE INPUT STRING DOES NOT . NOTE: THAT RIGHT-MOST AND LEFT-MOST DERIVATIONS HAVE THE SAME PARSE TREE IF NOT THEN THE GRAMMAR IS AMBIGUOUS GRAMMAR. RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 16
  • 17. AMBIGUITY • IF STRING HAS TWO OR MORE RIGHT MOST DERIVATIONS OR TWO OR MORE LEFT DERIVATIONS THEN THAT STRING WILL HAVE TWO DISTINCT PARSE TREES AND HENCE GRAMMAR WILL BE AMBIGUOUS. • AMBIGUITY IS BAD: LEAVES MEANING OF SOME PROGRAMS ILL-DEFINED • MULTIPLE PARSE TREES FOR SOME PROGRAM THEN THAT ESSENTIALLY MEANS THAT YOU'RE LEAVING IT UP TO THE COMPILER TO PICK WHICH OF THOSE TWO POSSIBLE INTERPRETATIONS OF THE PROGRAM YOU WANT IT TO GENERATE CODE FOR AND THAT'S NOT A GOOD IDEA. • TO REMOVE AMBIGUITY WE NEED TO REWRITE THE RULES CHECKING OVER PRECEDENCE AND ASSOCIATIVITY . RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 17
  • 18. AMBIGUITY RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 18 Eg: The string id +id* id produces two parse tree hence the grammar is ambiguous. One can remove the ambiguity by rewriting the grammar as introducing new non-terminal instead of r non-terminal , but it can result in left or right recursion .Hence we have to remove left recursion.
  • 19. AMBIGUITY • IF WE HAVE AN AMBIGUOUS GRAMMAR: E →E * E E →NUM • AS THIS DEPENDS ON THE ASSOCIATIVITY OF *,WE USE DIFFERENT REWRITE RULES FOR DIFFERENT ASSOCIATIVITY . • IF * IS LEFT-ASSOCIATIVE, WE MAKE THE GRAMMAR LEFT-RECURSIVE BY HAVING A RECURSIVE REFERENCE TO THE LEFT ONLY OF THE OPERATOR SYMBOL. UNAMBIGUOUS GRAMMAR: E →E * E’ E →E’ E’→NUM RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 19
  • 20. LEFT RECURSION • UNAMBIGUOUS GRAMMAR : E →E * E’ E →E’ E’→NUM • THIS GRAMMAR IS NOW LEFT RECURSIVE. LEFT RECURSIVE GRAMMAR IS ANY GRAMMAR THAT HAS A NON-TERMINAL WHERE IF YOU START WITH THAT NON- TERMINAL AND YOU DO SOME NON-EMPTY SEQUENCE OF RE-WRITES. • CONSIDER THE LEFT-RECURSIVE GRAMMAR S -> S a | b • S GENERATES ALL STRINGS STARTING WITH “a” AND FOLLOWED BY ANY NUMBER OF “b’S” • CAN REWRITE USING RIGHT-RECURSION • S ->bS’ S’ ->aS’ |€ RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 20
  • 21. EXAMPLES OF LEFT RECURSION 1. E -> E + T | T T -> ID | (E) 2. S ->(L)|X L ->L,S|S 3. S ->S0S1S|01 RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 21
  • 22. LEFT FACTORING • LEFT FACTORING IS A GRAMMAR TRANSFORMATION THAT IS USEFUL FOR PRODUCING A DETERMINISTIC GRAMMAR FROM NON- DETERMINISTIC GRAMMAR SUITABLE FOR PREDICTIVE OR TOP-DOWN PARSING. • CONSIDER FOLLOWING GRAMMAR: • STMT -> IF EXPR THEN STMT ELSE STMT • | IF EXPR THEN STMT • ON SEEING INPUT IF IT IS NOT CLEAR FOR THE PARSER WHICH PRODUCTION TO USE • WE CAN EASILY PERFORM LEFT FACTORING: • IF WE HAVE A->ΑΒ1 | ΑΒ2 THEN WE REPLACE IT WITH • A -> ΑA’ • A’ -> Β1 | Β2 RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 22
  • 23. EXAMPLES OF LEFT FACTORING 1. S -> iEtS|iEtSES|a E ->b 2. S-> aSSbS|aSaSb|abb|b 3. S-> bSSaaS|bSSaSb|bSb|a RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 23
  • 24. RICHA SHARMA (LOVELY PROFESSIONAL UNIVERSITY) 24