part 4 syntax analysis e.g. “young men like pop music” lexical analyzer “(adjective, )...
TRANSCRIPT
![Page 1: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/1.jpg)
Part 4 Syntax Analysis
![Page 2: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/2.jpg)
E.g.
<sentence> <Subject><Predicate> <Subject> <adjective><noun>
<Subject> <noun>
<Predicate> <verb><Object>
<Object> <adjective><noun>
<Object> <noun>
![Page 3: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/3.jpg)
“young men like pop music”
Lexical Analyzer
“(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )”
<sentence> <Subject><Predicate> <adjective><noun><Predicate> <adjective><noun>< verb><object> <adjective><noun>< verb>< adjective><noun>
Leftmost Derivation
Rightmost Reduction
????
![Page 4: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/4.jpg)
<adjective><noun>< verb>< adjective><noun><Subject >< verb>< adjective><noun> <Subject >< verb>< object> <Subject><Predicate> <sentence>
Leftmost Reduction
![Page 5: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/5.jpg)
How can I design and code the “derivation” or “reduction”?
![Page 6: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/6.jpg)
6
1 、 The syntax description of programming language constructs
– Context-free grammars
0 Approaches to implement a Syntax analyzer
What is the definition of Context-free grammars?
Please recall it!
![Page 7: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/7.jpg)
2 、 Why a grammar is usually used to describe the syntax of a programming language?– A grammar gives a precise ,yet easy-to-
understand, syntactic specification of a programming language
– From certain classes of grammar we can automatically construct an efficient parser that determines if a source program is syntactically well formed
![Page 8: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/8.jpg)
– A properly designed grammar imparts a structure to a programming language that is useful for the translation of source programs into correct object code and for the detection of errors
– The evolved constructs can be added to a language more easily
![Page 9: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/9.jpg)
3 、 Approached to implement a syntax analyzer
– Manual construction
– Construction by tools
![Page 10: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/10.jpg)
4.1 The Role of the Parser
1 、 Main task– Obtain a string of tokens from the lexical analy
zer– Verify that the string can be generated by the gr
ammar of related programming language– Report any syntax errors in an intelligible fashi
on– Recover from commonly occurring errors so th
at it can continue processing the remainder of its input
![Page 11: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/11.jpg)
2 、 Position of parser in compiler model
Lexical analyzer
Parser
Symbol table
Source program
token
Get next token
Parse tree
Rest of front end
Intermediate representation
![Page 12: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/12.jpg)
3、Parsing methods
(1)Top-Down
(2)Bottom-Up
![Page 13: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/13.jpg)
4 、 Syntax Error handling 1) Error levels
– Lexical, such as misspelling an identifier, keyword, or operator
– Syntactic, such as an arithmetic expression with unbalanced parentheses
– Semantic, such as an operator applied to an incompatible operand
– Logical, such as an infinitely recursive call
![Page 14: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/14.jpg)
2) Simple-to-state goals of the error handler
– It should report the presence of errors clearly and accurately
– It should recover from each error quickly enough to be able to detect subsequent errors
– It should not significantly slow down the processing of correct programs
![Page 15: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/15.jpg)
3) Error-recovery strategies– Panic mode
• Discard input symbols one at a time until one of a designated set of synchronizing tokens is found
– Phrase level• Replace a prefix of the remaining input by
some string that allows the parser to continue
![Page 16: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/16.jpg)
Simple Instruction of Top-Down and Bottom-UpSimple Instruction of Top-Down and Bottom-Up
Top-Down:(1)Left-most derivationSxAy x*yParser Tree
Bottom-Up:(1)Left-most reductionx*y xAyParser Tree
E.g. 1) S xAy 2) A ** 3)A *, and Verify “x*y”
S
x A y
*
How codes?
![Page 17: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/17.jpg)
PD
A
Model
controllerrules
x * y #
outputS#
Top-Down Bottom-Up
controllerrules
x * y #
output#
1) S xAy 2) A ** 3)A *,
1,3 3,1
? ?Sentential form
String
![Page 18: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/18.jpg)
T-D PDA Controller IF “x” is the top symbol of the sta
ck and is non-terminal , then find a production rule as “x……” randomly , replace “x” with the right of the rule , and output the No of the rule——derivation 。
IF “x” is the top symbol of the stack and is same to that under the reading point , then… ——Matching 。
IF (2) fail, then make a backtracking action to the scene before the last derivation and select a new rule —backtracking
IF there no new rule, fail IF there is only “ #” in the stac
k , and “ #” is under the reading point , success
B-U PDA Controller• IF the several top symbols in stack is
a Handling, then reduction,
• else if “ #” is under the reading point then fail, else Move the symbol under reading point into stack.
• IF there is only #S in the stack ,and “ #” is under the reading point , success
C
ontroller
![Page 19: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/19.jpg)
E.G.
controllerrules
x * y #
outputS#
controllerrules
x * y #
output#
![Page 20: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/20.jpg)
E.G.
controllerrules
x * y #
1
xAy#
controllerrules
x * y #
outputx#
![Page 21: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/21.jpg)
E.G.
controllerrules
x * y #
1
Ay#
controllerrules
x * y #
output*x#
![Page 22: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/22.jpg)
E.G.
controllerrules
x * y #
1,2
**y#
controllerrules
x * y #
3Ax#
![Page 23: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/23.jpg)
E.G.
controllerrules
x * y #
1,2
*y#
controllerrules
x * y #
3
yAx#
![Page 24: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/24.jpg)
E.G.
controllerrules
x * y #
1
Ay#
controllerrules
x * y #
3,1S#
![Page 25: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/25.jpg)
E.G.
controllerrules
x * y #
1,3
*y#
controllerrules
x * y #
3,1S#
![Page 26: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/26.jpg)
E.G.
controllerrules
x * y #
1,3
y#
controllerrules
x * y #
3,1S#
![Page 27: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/27.jpg)
E.G.
controllerrules
x * y #
1,3
#controllerrules
x * y #
3,1S#
![Page 28: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/28.jpg)
Discussion
Flaw of T-D Left Recursion Infinite
loop
Eliminating Left Recursion Backtracking inefficient
1. Methods: Predictive and Eliminating Ambiguity
2. Left common factor
Flaw of B-U
• Next
![Page 29: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/29.jpg)
4. 2 TOP-DOWN PARSING
1 、 Ideas
Find a leftmost derivation for an input string
Construct a parse tree for the input starting from the root and creating the nodes of the parse tree in preorder.
E (E) (E+E) (E*E+E) ( i*E+E) ( i*i+E) ( i* i+ i)
E
( E )
E + E
E * E i
i i
![Page 30: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/30.jpg)
2 、 Main methods
– Predictive parsing (no backtracking)
– Recursive descent (involve backtracking)
![Page 31: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/31.jpg)
3 、 Recursive descent
– A deducing procedure, which construct a parse tree for the string top-down from S. When there is any mismatch, the program go back to the nearest non-terminal, select another production to construct the parse tree
– If you produce a parse tree at last, then the parsing is success, otherwise, fail.
![Page 32: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/32.jpg)
Grammar for Parsing Example
Start Expr
Expr Expr + Term
Expr Expr - Term
Expr Term
Term Term * Int
Term Term / Int
Term Int
• Set of tokens is { +, -, *, /, Int },
where Int = [0-9][0-9]*
![Page 33: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/33.jpg)
Start<int,><-,><int, ><*,><int, >
Start
Current Position in Parse Tree
Parsing Example
Parse Tree Remaining Input
Sentential form
Applied Production
![Page 34: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/34.jpg)
Start Expr
Start
Parse Tree
Sentential Form
Remaining Input
<int,><-,><int, ><*,><int, >
Expr
Expr
Current Position in Parse Tree
Parsing Example
![Page 35: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/35.jpg)
Applied Production
Expr Expr - Term
Parse Tree
Sentential Form
Remaining Input
<int,><-,><int, ><*,><int, >
Expr - Term
Start
Expr
TermExpr -
Parsing Example
Expr Expr + Term
Expr Expr - Term
Expr Term
![Page 36: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/36.jpg)
Applied Production
Expr Term
Start
Parse Tree
Sentential Form
Remaining Input
<int,><-,><int, ><*,><int, >
Term - Term
Expr
TermExpr -
Term
Parsing Example
Expr Expr + Term
Expr Expr - Term
Expr Term
![Page 37: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/37.jpg)
Applied Production
Term Int
Start
Parse Tree
Sentential Form
Remaining Input
<int,><-,><int, ><*,><int, >
Expr
TermExpr -
Term
Int
Int - Term
Parsing Example
![Page 38: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/38.jpg)
Start
Parse Tree
Sentential Form
Remaining Input
<int,><-,><int, ><*,><int, >
Int - Term
Expr
TermExpr -
Term
MatchInput Token!
Int
Parsing Example
![Page 39: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/39.jpg)
Start
Parse Tree
Sentential Form
Remaining Input
<-,><int, ><*,><int, >
- Term
Expr
TermExpr -
Term
MatchInput Token!
Int
Parsing Example
![Page 40: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/40.jpg)
Start
Parse Tree
Sentential Form
Remaining Input
<int, ><*,><int, >
Term
Expr
TermExpr -
Term
MatchInput Token!
Int
Parsing Example
![Page 41: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/41.jpg)
Applied Production
Term Term * Int
Start
Parse Tree
Sentential Form
Remaining Input
<int, ><*,><int, >
Term*Int
Expr
TermExpr -
TermTerm Int*
Int
Parsing Example
![Page 42: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/42.jpg)
Applied Production
Term Int
Start
Parse Tree
Sentential Form
Remaining Input
<int, ><*,><int, >
Int * Int
Expr
TermExpr -
TermTerm Int*
Int Int
Parsing Example
![Page 43: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/43.jpg)
MatchInput Token!
Start
Parse Tree
Sentential Form
Remaining Input
<int, ><*,><int, >
Int* Int
Expr
TermExpr -
TermTerm Int*
Int Int
Parsing Example
![Page 44: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/44.jpg)
MatchInput Token!
Start
Parse Tree
Sentential Form
Remaining Input
<*,><int, >
* Int
Expr
TermExpr -
TermTerm Int*
Int Int
Parsing Example
![Page 45: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/45.jpg)
MatchInput Token!
Start
Parse Tree
Sentential Form
Remaining Input
<int, >
Int
Expr
TermExpr -
TermTerm Int*
Int Int
Parsing Example
![Page 46: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/46.jpg)
Parsing Example
Start
Parse Tree
Sentential Form
Remaining Input
<int, >
Expr
TermExpr -
TermTerm Int *
Int Int
ParseComplete!
![Page 47: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/47.jpg)
Backtracking Example
Start<int,><-,><int, ><*,><int, >
Start
![Page 48: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/48.jpg)
Start Expr
Backtracking Example
Start<int,><-,><int, ><*,><int, >
Expr
![Page 49: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/49.jpg)
Expr Expr + Term
Backtracking Example
StartParse Tree
Sentential Form
<int,><-,><int, ><*,><int, >
Expr + Term
Expr
TermExpr +
![Page 50: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/50.jpg)
Applied Production
Expr Term
Backtracking Example
StartParse Tree
Sentential Form
Remaining Input
<int,><-,><int, ><*,><int, >
Term + Term
Expr
TermExpr +
Term
![Page 51: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/51.jpg)
Applied Production
Term Int
Backtracking Example
StartParse Tree
Sentential Form
Remaining Input
<int,><-,><int, ><*,><int, >
Int + Term
Expr
TermExpr +
Term
Int
MatchInput
Token!
![Page 52: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/52.jpg)
Applied Production
Term Int
Backtracking Example
StartParse Tree
Sentential Form
Remaining Input
<-,><int, ><*,><int, >
Int - Term
Expr
TermExpr +
Term
Int 2
Can’tMatchInput
Token!
![Page 53: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/53.jpg)
Applied Production
Start Expr
Backtracking Example
StartParse Tree
Sentential Form
Remaining Input
<int,><-,><int, ><*,><int, >
Expr
Expr
SoBacktrack!
![Page 54: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/54.jpg)
Applied Production
Expr Expr - Term
Backtracking Example
StartParse Tree
Sentential Form
Remaining Input
<int,><-,><int, ><*,><int, >
Expr - Term
Expr
TermExpr -
![Page 55: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/55.jpg)
TermApplied Production
Expr Term
Backtracking Example
StartParse Tree
Sentential Form
Remaining Input
<int,><-,><int, ><*,><int, >
Term - Term
Expr
TermExpr -
![Page 56: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/56.jpg)
TermApplied Production
Term Int
Backtracking Example
StartParse Tree
Sentential Form
Remaining Input
<-,><int, ><*,><int, >
Int - Term
Expr
TermExpr -
Int
![Page 57: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/57.jpg)
MatchInput
Token!
Term
Backtracking Example
StartParse Tree
Sentential Form
Remaining Input
<-,><int, ><*,><int, >
Int - Term
Expr
TermExpr -
Int
![Page 58: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/58.jpg)
MatchInput
Token!
Term
Backtracking Example
StartParse Tree
Sentential Form
Remaining Input
<int, ><*,><int, >
Int - Term
Expr
TermExpr -
Int
![Page 59: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/59.jpg)
Control partProduction rules
a+b……#
输出带S#
How to code that? PDA models
![Page 60: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/60.jpg)
Runing( 1 ) if “x” is the top symbol of the stack and is non-terminal , then find a production rule as “x……”randomly , replace “x” with the right of the rule , and output the No of the rule——derivation 。( 2 ) if “x” is the top symbol of the stack and is same to that under the reading point , then… ——Matching 。( 3 ) if (2) fail, then make a backtracking action to the scene before the last derivation and select a new rule —backtracking(4) If there no new rule, fail
( 5 ) if there is only “ #” in the stack , and “ #” is under the reading point , success
![Page 61: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/61.jpg)
E.g. 1) S xAy 2) A ** 3)A *
controllerProduction rules
x * y #
outputS#
![Page 62: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/62.jpg)
x * y #
S#
E.g. 1) S xAy 2) A ** 3)A *
![Page 63: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/63.jpg)
1) S xAy
2) A ** 3)A *
x * y #
1
xAy#
![Page 64: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/64.jpg)
1) S xAy
2) A ** 3)A *
x * y #
1Ay#
![Page 65: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/65.jpg)
1) S xAy
2) A ** 3)A *
x * y #
1,2**y#
![Page 66: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/66.jpg)
1) S xAy
2) A ** 3)A *
x * y #
1,2*y#
![Page 67: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/67.jpg)
1) S xAy
2) A ** 3)A *
x * y #
1Ay#
![Page 68: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/68.jpg)
1) S xAy
2) A ** 3)A *
x * y #
1,3*y#
![Page 69: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/69.jpg)
1) S xAy
2) A ** 3)A *
x * y #
1,3y#
![Page 70: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/70.jpg)
Left Recursion + Top-Down Parsing = Infinite Loop
• Example Production: Term Term*Num
• Potential parsing steps:
Term
Num*Term
Term
Term
Num*Term
Term
Num*
![Page 71: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/71.jpg)
Backtracking parsers are not seen frequently, because:
• Backtracking is not very efficient.
A left-recursive grammar can cause a recursive-descent parser to go into an infinite loop.An ambiguity grammar can cause backtrackingLeft factor can also cause a backtracking
Why backtracking occurred?
![Page 72: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/72.jpg)
4 、 Elimination of Left Recursion
1)Basic form of left recursion
Left recursion is the grammar contains the following kind of productions.
• P P| Immediate recursion
or
• P Aa , APb Indirect recursion
![Page 73: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/73.jpg)
2)Strategy for elimination of Left Recursion
Convert left recursion into the equivalent right recursion
P P|
=> P->*
=> P P’ P’ P’|
![Page 74: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/74.jpg)
3)Algorithm
(1) Elimination of immediate left recursion
P P|
=> P->*
=> P P’ P’ P’| (2) Elimination of indirect left recursion
Convert it into immediate left recursion first according to specific order, then eliminate the related immediate left recursion
![Page 75: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/75.jpg)
Algorithm:– (1)Arrange the non-terminals in G in some order as P1,P2,…,
Pn, do step 2 for each of them.– (2) for (i=1,i<=n,i++)
{for (k=1,k<=i-1,k++)
{replace each production of the form Pi Pk by Pi 1 | 2 |……| ,n ;
where Pk 1| 2|……| ,n are all the current Pk -productions
}
change Pi Pi1| Pi2|…. | Pim|1| 2|….| n
into Pi 1 Pi `| 2 Pi `|……| n Pi `
Pi`1Pi`|2Pi`|……| mPi`| } /*eliminate the immediate left recursion*/ (3)Simplify the grammar.
![Page 76: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/76.jpg)
E.g. Eliminating all left recursion in the following grammar:
(1) S Qc|c (2)Q Rb|b (3) R Sa|aAnswer: 1)Arrange the non-terminals in the order:R,Q,S 2 ) for R: no actions. for Q:Q Rb|b Q Sab|ab|b for S: S Qc|c S Sabc|abc|bc|c; then get S (abc|bc|c)S` S` abcS`| 3) Because R,Q is not reachable, so delete them so, the grammar is : S (abc|bc|c)S`
S` abcS`|
![Page 77: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/77.jpg)
5 、 Eliminating Ambiguity of a grammar– Rewriting the grammar stmtif expr then stmt|if expr then stmt else st
mt|other==> stmt matched-stmt|unmatched-stmtmatched-stmt if expr then matched-stmt else
matched-stmt|otherunmatched-stmt if expr then stmt|if expr the
n matched-stmt else unmatched-stmt
![Page 78: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/78.jpg)
6 、 Left factoring
– A grammar transformation that is useful for producing a grammar suitable for predictive parsing
– Rewrite the productions to defer the decision until we have seen enough of the input to make right choice
![Page 79: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/79.jpg)
If the grammar contains the productions like A1| 2|…. | n
Chang them into AA`
A`1|2|…. |n
![Page 80: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/80.jpg)
7 、 Predictive Parsers Methods
– Transition diagram based predictive parser
– Non-recursive predictive parser
![Page 81: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/81.jpg)
8 、 Transition diagram based Predictive Parsers
1) Transition diagram– create an initial and final(return) state– for each production AX1X2…Xn, create a p
ath from initial to the final state, with edges labeled X1,X2,..,Xn
![Page 82: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/82.jpg)
Note: (1)There is one diagram for each non-terminal;
(2)The labels of edges are tokens or non-terminals;
(3)If the edge is labeled by a non-terminal A, the parser instead goes to the start state for A, without moving the input cursor
(4)When an edge labeled by a non-terminal is followed, a potentially recursive procedure call is made
![Page 83: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/83.jpg)
2) Transition diagram based predictive parsing • Begins in the start state for the start symbol;• When it is in state s with an edge labeled by terminal
a to state t, and the next input symbol is a, then the parser moves the input cursor and goes to state t
• When it is in state s with an edge labeled by non-terminal A to state t, then the parser instead goes to the start state for A, without moving the input cursor. If it ever reaches the final state for A, it immediately goes to state t, in effect having read A from the input during the time it moved from state s to t.
![Page 84: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/84.jpg)
9 、 Non-recursive Predictive Parsing
1) key problem in predictive parsing
• Determining the production to be applied for a non-terminal
2)Basic idea of the parser
Table-driven and use stack
![Page 85: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/85.jpg)
Predictive Parsing ProgramParsing Table M
a+b……#
Output S#
Input
Stack
3) Model of a non-recursive predictive parser
![Page 86: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/86.jpg)
4) Predictive Parsing Program
X: the symbol on top of the stack;
a: the current input symbol
If X=a=#, the parser halts and announces successful completion of parsing;
If X=a!=#, the parser pops X off the stack and advances the input pointer to the next input symbol;
![Page 87: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/87.jpg)
If X is a non-terminal, the program consults entry M[X,a] of the parsing table M. This entry will be either an X-production of the grammar or an error entry.
![Page 88: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/88.jpg)
E.g. Consider the following grammar, and parse the string id+id*id#
1.E TE` 2.E` +TE`
3.E` 4.T FT`
5.T` *FT` 6.T` 7.F id 8.F (E)
![Page 89: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/89.jpg)
Parsing table M
id + * ( ) #
E ETE` ETE`
E` E` +TE`
E`ε E`ε
T TFT` TFT`
T` T`ε T` *FT`
T`ε T`ε
F F i F (E)
![Page 90: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/90.jpg)
Predictive Parsing ProgramParsing Table M
id+id*id#
E#
Please Write down the procedure of analysis!
![Page 91: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/91.jpg)
10 、 Construction of a predictive parser
1) FIRST & FOLLOW
FIRST:
• If is any string of grammar symbols, let FIRST() be the set of terminals that begin the string derived from .
• If , then is also in FIRST()
• That is :
V*, First() = {a| a……,a VT
}
+
![Page 92: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/92.jpg)
FOLLOW:
• For non-terminal A, to be the set of terminals a that can appear immediately to the right of A in some sentential form.
• That is: Follow(A) = {a|S …Aa…,a VT }
If S…A, then # FOLLOW(A) 。
![Page 93: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/93.jpg)
2) Computing FIRST()
(1)to compute FIRST(X) for all grammar symbols X
• If X is terminal, then FIRST(X) is {X}.
• If X is a production, then add to FIRST(X).
• If Xa is a production, then add a to FIRST(X).
• If X is non-terminal, and X Y1Y2…Yk , Yj(VNVT),1j k, then
![Page 94: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/94.jpg)
{ j=1; FIRST(X)={}; //initiate
while ( j<k and FIRST(Yj)) {
FIRST(X)=FIRST(X)(FIRST(Yj)-{}) j=j+1 }
IF (j=k and FIRST(Yk)) FIRST(X)=FIRST(X) {} }
![Page 95: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/95.jpg)
(2)to compute FIRST for any string =X1X2…Xn , Xi(VNVT),1i n
{i=1; FIRST()={}; //initiate repeat {
FIRST()=FIRST()(FIRST(Xi)-{}) i=i+1 }
until (i=n and FIRST(Xj))
IF (i=n and FIRST(Xn)) FIRST()=FIRST(){} }
![Page 96: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/96.jpg)
3) Computing FOLLOW(A)(1) Place # in FOLLOW(S), where S is the
start symbol and # is the input right end-marker.
(2)If there is A B in G, then add First()-{}to Follow(B).
(3)If there is A B, or AB where FIRST() contains , then add Follow(A) to Follow(B).
![Page 97: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/97.jpg)
E.g. Consider the following Grammar, construct FIRST & FOLLOW for each non-terminals
1.E TE` 2.E` +TE`
3.E` 4.T FT`
5.T` *FT` 6.T` 7.F i 8.F (E)
![Page 98: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/98.jpg)
Answer:
First(E)=First(T)=First(F)={(, i}
First(E`)={+, }
First(T`)={*, }
Follow(E)= Follow(E`)={),#}
Follow(T)= Follow(T`)={+,),#}
Follow(F)={*,+,),#}
![Page 99: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/99.jpg)
4) Construction of Predictive Parsing Tables
Main Idea: Suppose A is a production with a in FIRST(). Then the parser will expand A by when the current input symbol is a. If , we should again expand A by if the current input symbol is in FOLLOW(A), or if the # on the input has been reached and # is in FOLLOW(A).
*
![Page 100: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/100.jpg)
– Input. Grammar G.
– Output. Parsing table M.
![Page 101: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/101.jpg)
Method.
1. For each production A , do steps 2 and 3.
2. For each terminal a in FIRST(), add A to M[A,a].
3. If is in FIRST(), add A to M[A,b] for each terminal b in FOLLOW(A). If is in FIRST() and # is in FOLLOW(A), add A to M[A,#].
4.Make each undefined entry of M be error.
![Page 102: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/102.jpg)
E.g. Consider the following Grammar, construct predictive parsing table for it.
1.E TE` 2.E` +TE`
3.E` 4.T FT`
5.T` *FT` 6.T` 7.F i 8.F (E)
![Page 103: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/103.jpg)
Answer:
First(E)=First(T)=First(F)={(, i}
First(E`)={+, }
First(T`)={*, }
Follow(E)= Follow(E`)={),#}
Follow(T)= Follow(T`)={+,),#}
Follow(F)={*,+,),#}
![Page 104: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/104.jpg)
i + * ( ) #
E ETE` ETE`
E` E` +TE`
E`ε E`ε
T TFT` TFT`
T` T`ε T` *FT`
T`ε T`ε
F F i F (E)
![Page 105: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/105.jpg)
11 、 LL(1) Grammars
E.g. Consider the following Grammar, construct predictive parsing table for it.
S iEtSS` |a
S` eS | E b
![Page 106: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/106.jpg)
a b e i t #
S S a S iEtSS`
S` S` eS
S`
S`ε
E E b
![Page 107: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/107.jpg)
1)Definition
A grammar whose parsing table has no multiply-defined entries is said to be LL(1).
The first “L” stands for scanning the input from left to right.
The second “L” stands for producing a leftmost derivation
“1” means using one input symbol of look-ahead s.t each step to make parsing action decisions.
![Page 108: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/108.jpg)
Note:
(1)No ambiguous can be LL(1).
(2)Left-recursive grammar cannot be LL(1).
(3)A grammar G is LL(1) if and only if whenever A | are two distinct productions of G:
![Page 109: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/109.jpg)
1). For no terminal a do both and derive strings beginning with a.
2). At most one of and can derive the empty string.
3). If , then does not derive any string beginning with a terminal in FOLLOW(A).
*
![Page 110: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/110.jpg)
![Page 111: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/111.jpg)
![Page 112: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/112.jpg)
12 、 Transform a grammar to LL(1) Grammar– Eliminating all left recursion– Left factoring
![Page 113: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/113.jpg)
13 、 Error recovery in predictive parsing
Panic-mode error recovery
Phrase-level recovery
![Page 114: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/114.jpg)
4. 3 BOTTOM-UP Parsing
1 、 Basic idea of bottom-up parsing
Shift-reduce parsing
– Operator-precedence parsing
• An easy-to-implement form
– LR parsing
• A much more general method
• Used in a number of automatic parser generators
![Page 115: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/115.jpg)
2 、 Basic concepts in Shift-reducing Parsing
– Handles
– Handle Pruning
![Page 116: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/116.jpg)
3 、 Stack implementation of Shift-Reduce parsing
Parsing ProgramParsing Table M
……#
Output
#
Stack
Input
![Page 117: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/117.jpg)
4. 4 Operator-precedence parsing
1 、 The definition of an operator grammar
– The grammar has the property that no production right side is or has two adjacent non-terminals.
– E.g. E E+E|E-E|E*E|E/E|(E)|i
![Page 118: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/118.jpg)
2 、 Precedence relations
– Three disjoint precedence relations
, between certain pairs of terminals.
![Page 119: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/119.jpg)
Terminals a,b, with the following forms:“…ab…”, “…aQb…”, and Q if non-terminal. Then the relationship of a and b is:
1) a b a yields precedence to b
2) a b a has the same precedence as b
3) a b a takes precedence over b
4) for some terminals,we might have none of these relations.
![Page 120: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/120.jpg)
#
id
)
(
*
+
#id)(*+ RS
LS
Related Grammar: EE+F|F F F*G|G G (E)|id
![Page 121: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/121.jpg)
3 、 Using Operator-Precedence Relations
Delimit the handle of a right sentential form, with marking the left end, appearing in the interior of the handle, and marking the right end.
![Page 122: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/122.jpg)
• Let’s analyze id+id+id*id# according to Operator-Precedence Relations.
![Page 123: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/123.jpg)
4 、 Operator-precedence parsing Algorithm– Input. An input string w and a table of
precedence relations.– Output. If w is well formed , a skeletal
parse tree, with a placeholder non-terminal E labeling all interior nodes; otherwise, an error indication.
– Method. Initially, the stack contains # and the input buffer the string w#.
![Page 124: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/124.jpg)
AlgorithmSet ip to point to the first symbol of w#;While (1) { if (# is on top of the stack an ip points to #) /*success*/ return; else { let a be the topmost terminal symbol on the stack; let b be the symbol pointed to by ip; if (a b || a b) /*Shift*/ { push b onto the stack; advance ip to the next input symbol; }
![Page 125: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/125.jpg)
Algorithm
else if a b /*reduce*/
do {
pop the stack}
while the top stack terminal is not related by to the terminal most recently popped
else error()
}
}
![Page 126: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/126.jpg)
5 、 Construct the operator-precedence relationship table
– Construct the FIRSTVT and LASTVT for each non-terminals in the grammar.
– Find out the relations between each of the terminals.
![Page 127: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/127.jpg)
FIRSTVT(P)=
{ a|P a…or P Qa… , a VT; P,Q VN}
LASTVT(P)=
{ a|P … a or P … aQ , a VT; P,Q VN}
![Page 128: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/128.jpg)
Construct FIRSTVT(P)
(1) If the productions are like P a… or P Qa… , then a FIRSTVT(P)
(2) If a FIRSTVT(Q), and there is a production like P Q… in the grammar, then a FIRSTVT(P)
![Page 129: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/129.jpg)
– If there is such string as …aP…at the right side of a production, for each of the terminals belong to FIRSTVT(P), the relation is a b;
– If there is such string as …Pb… at the right side of a production, for each of the terminals belong to LASTVT(P), the relation is a b.
![Page 130: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/130.jpg)
– If there is such string as …aPb… or …ab… at the right side of a production, then a b.
Notes: We assume the precedence of a unary operator is always higher than that of a binary operator
![Page 131: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/131.jpg)
E.g. Construct the operator-precedence relationship table
S if Eb then E else E
E E+T|T
T T*F|F
F i
Eb b
![Page 132: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/132.jpg)
Answer: add a production S’#S#
FIRSTVT(S)={if} LASTVT(S)={else,+,*,i}
FIRSTVT(E)={+,*,i} LASTVT(E)={+,*,i}
FIRSTVT(T)={*,i} LASTVT(T)={*,i}
FIRSTVT(F)={i} LASTVT(F)={i}
FIRSTVT(Eb )={b} LASTVT(Eb)={b}
![Page 133: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/133.jpg)
#
b
i
*
+
else
then
if
# bi*+elsethen if
![Page 134: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/134.jpg)
6 、 Advantages of Operator-precedence parsing
– Simplicity, easy to construct by hand
![Page 135: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/135.jpg)
7 、 Disadvantages of Operator-precedence parsing– It is hard to handle tokens like the unary operat
ors– Since the relationship between a grammar for th
e language being parsed and the operator-precedence parser itself is tenuous, one cannot always be sure the parser accepts exactly the desired language.
– Only a small class of grammars can be parsed using operator-precedence techniques.
![Page 136: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/136.jpg)
Exercises:
4.14, 4.27
![Page 137: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/137.jpg)
4. 5 LR parsers
1 、 LR parser– An efficient, bottom-up syntax analysis
technique that can be used to parse a large class of context-free grammars
– LR(k)• L: left-to-right scan• R: construct a rightmost derivation in
reverse• k: the number of input symbols of look
ahead
![Page 138: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/138.jpg)
2 、 Advantages of LR parser– It can recognize virtually all programming language
constructs for which context-free grammars can be written
– It is the most general non backtracking shift-reduce parsing method
– It can parse more grammars than predictive parsers can
– It can detect a syntactic error as soon as it is possible to do so on a left-to-right scan of the input
![Page 139: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/139.jpg)
3 、 Disadvantages of LR parser
– It is too much work to construct an LR parser by hand
– It needs a specialized tool,YACC, help it to generate a LR parser
![Page 140: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/140.jpg)
4 、 Three techniques for constructing an LR parsing
– SLR: simple LR
– LR(1): canonical LR
– LALR: look ahead LR
![Page 141: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/141.jpg)
5 、 The LR Parsing Model
LR Parsing Program
a+b……#
output
S0Parsing table
input
stack
![Page 142: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/142.jpg)
Note: 1)The driver program is the same for all LR parsers; only the parsing table changes from one parser to another
2)The parsing program reads characters from an input buffer one at a time
3)Si is a state, each state symbol summarizes the information contained in the stack below it
![Page 143: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/143.jpg)
4)The current input symbol are used to index the parsing table and determine the shift-reduce parsing decision
5)In an implementation, the grammar symbols need not appear on the stack
![Page 144: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/144.jpg)
6、 The parsing table
r6 r6 r6 r65
328 S4S54
r4 r4 r4 r43
r2 r2S7 r22
acceptS61
321S4S50
FTE#)(*+ i
GOTOACTIONstate
![Page 145: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/145.jpg)
– Action: a parsing action function
• Action[S,a]: S represent the state currently on top of the stack, and a represent the current input symbol. So Action[S,a] means the parsing action for S and a.
![Page 146: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/146.jpg)
Action: a parsing action function• Shift
– The next input symbol is shifted onto the top of the stack
– Shift S, where S is a state
• Reduce– The parser knows the right end of the handle is
at the top of the stack, locates the left end of the handle within the stack and decides what non-terminal to replace the handle. Reduce by a grammar production A
![Page 147: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/147.jpg)
• Accept– The parser announces successful completion of
parsing.
• Error– The parser discovers that a syntax error has
occurred and calls an error recovery routine.
![Page 148: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/148.jpg)
Goto: a goto function that takes a state and grammar symbol as arguments and produces a state
![Page 149: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/149.jpg)
E.g. the parsing action and goto functions of an LR parsing table for the following grammar. E E+T E T T T*F T F F (E) F i
![Page 150: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/150.jpg)
r5 r5 r5 r511
r3 r3 r3 r310
r1 r1 r19
S11S68
10S4S57
39S4S56
r6 r6 r6 r65
328 S4S54
r4 r4 r4 r43
r2 r2S7 r22
acceptS61
321S4S50
FTE#)(*+ i
GOTOACTIONstate
![Page 151: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/151.jpg)
1)Sj means shift and stack state j, and the top of the stack change into ( j,a ) ;
2)rj means reduce by production numbered j;
3)Accept means accept4)blank means error
![Page 152: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/152.jpg)
Moves of LR parser on i*i+i State stack Symbol stack input action 0 # i*i+i# Shift 05 #i *i+i# Reduce by 6 03 #F *i+i# Reduce by 4 02 #T *i+i# Shift 027 #T* i+i# Shift 0275 #T*i +i# Reduce by 6 02710 #T*F +i# Reduce by 3 02 #T +i# Reduce by 2 01 #E +i# Shift 016 #E+ i# Shift 0165 #E+i # Reduce by 6 0163 #E+F # Reduce by 4 0169 #E+T # Reduce by 1 01 #E # Accept
![Page 153: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/153.jpg)
Action conflict
• Shift/reduce conflict– Cannot decide whether to shift or to reduce
• Reduce/reduce conflict– Cannot decide which of several reductions to make
Notes: An ambiguous grammar can cause conflicts and can never be LR,e.g.
If_stmt syntax (if expr then stmt [else stmt])
![Page 154: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/154.jpg)
7 、 The algorithm
– The next move of the parser is determined by reading the current input symbol a, and the state S on top of the stack,and then consulting the parsing action table entry action[S,a].
– If action[Sm,ai]=shift S`,the parser executes a shift move ,enter the S` into the stack,and the next input symbol ai+1 become the current symbol.
![Page 155: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/155.jpg)
– If action[Sm,ai]=reduce A , then the parser executes a reduce move. If the length of is , then delete states from the stack, so that the state at the top of the stack is Sm- . Push the state S’=GOTO[Sm- ,A] and non-terminal A into the stack. The input symbol does not change.
![Page 156: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/156.jpg)
– If action[Sm,ai]=accept, parsing is completed.
– If action[Sm,ai]=error, the parser has discovered an error and calls an error recovery routine.
![Page 157: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/157.jpg)
8 、 LR Grammars– A grammar for which we can construct a parsi
ng table is said to be an LR grammar.9 、 The difference between LL and LR grammars
– LR grammars can describe more languages than LL grammars
10 、 Types of LR grammars– LR(0), SLR, LR(1), LALR– Note:the LR parsing algorithm is the same,but
parsing table is different.
![Page 158: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/158.jpg)
Discussion
• Can we regard a parsing table as a FA.
• What is the FA doing? State? Action?
![Page 159: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/159.jpg)
11 、 Canonical LR(0)
1 ) LR(0) item
– An LR(0) item of a grammar G is a production of G with a dot at some position of the right side.
![Page 160: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/160.jpg)
• Such as: A XYZ yields the four items:– A•XYZ . We hope to see a string
derivable from XYZ next on the input.– AX•YZ . We have just seen on the
input a string derivable from X and that we hope next to see a string derivable from YZ next on the input.
– AXY•Z– AX YZ•
• The production A generates only one item, A•.
• Each of this item is a viable prefixes
![Page 161: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/161.jpg)
2) Construct the canonical LR(0) collection
(1)Define a augmented grammar
• If G is a grammar with start symbol S,the augmented grammar G` is G with a new start symbol S`, and production S` S
• The purpose of the augmented grammar is to indicate to the parser when it should stop parsing and announce acceptance of the input.
![Page 162: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/162.jpg)
(2)the Closure Operation
• If I is a set of items for a grammar G, then closure(I) is the set of items constructed from I by the two rules:
– Initially, every item in I is added to closure(I).
– If A•B is in CLOSURE(I), and B is a production, then add the item B• to CLOSURE(I); Apply this rule until no more new items can be added to CLOSURE(I).
![Page 163: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/163.jpg)
(3)the Goto Operation
• Form: goto(I, X),I is a set of items and X is a grammar symbol
• goto(I, X)is defined to be the CLOSURE(J) ,X ( VN VT), J={all items like AX•| A•XI} 。
![Page 164: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/164.jpg)
3)The Sets-of-Items Constructionvoid ITEMSETS-LR0(){ C:={CLOSURE(S` •S)} /*initial*/ do { for (each set of items I in C and each gram
mar symbol X ) IF (Goto(I,X) is not empty and not in C) {add Goto(I,X) to C} }while C is still extending}
![Page 165: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/165.jpg)
e.g. construct the canonical collection of sets of LR(0) items for the following augmented grammar.
S` E E aA|bB A cA|d B cB|d
Answer:1 、 the items are : 1. S` •E 2. S` E• 3. E •aA
4. E a•A 5. E aA• 6. A •cA
7. A c•A 8. A cA • 9. A •d
10. A d• 11. E •bB 12. E b•B
13. E bB• 14. B •cB 15. B c•B
16.B cB• 17. B •d 18. B d•
![Page 166: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/166.jpg)
0: S`•E E •aA E •bB
5: Bc•B B •cB B •d
3: Eb•B B •cB B •d
2:Ea•A A •cA A •dc
1: S` E •
4:Ac•A A •cA A •d
8:Ac A •
10:A d •
6:EaA •
7:EbB•
11:B d •
9:BcB •
b
E
a
c
c
c
c
d
d
d
d
A
A
B
B
![Page 167: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/167.jpg)
12 、 SLR Parsing Table Algorithm
– Input. An augmented grammar G`
– Output. The SLR parsing table functions action and goto for G`
– Method.
– (1) Construct C={I0,I1,…In}, the collection of sets of LR(0) items for G`.
– (2) State i is constructed from Ii. The parsing actions for state i are determined as follows:
![Page 168: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/168.jpg)
(a) If [A•a] is in Ii and goto(Ii,a)= Ij, then set ACTION[i,a]=“Shift j”, here a must be a terminal.
(b) If [A• ]Ik, then set ACTION[k,a]=rj for all a in follow(A); here A may not be S`, and j is the No. of production A .
– (3) The goto transitions for state I are constructed for all non terminals A using the rule: if goto (Ii,A)= Ij, then goto[i,A]=j
![Page 169: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/169.jpg)
– (4) All entries not defined by rules 2 and 3 are made “error”
– (5) The initial state of the parser is the one constructed from the set of items containing [S` S•].
– If any conflicting actions are generated by the above rules, we say the grammar is not SLR(1).
![Page 170: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/170.jpg)
e.g. construct the SLR(1) table for the following grammar 0. S` E 1. E E+T 2. E T 3. T T*F 4.T F 5. F (E) 6. F i
![Page 171: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/171.jpg)
I0 : S’E E E+T E T T T*F T F F (E) F i
I2 : E T T T*F I1 : S’ E E E+T I4 : F’(E) E E+T E T T T*F T F F (E) F i
I7 : T T*F F (E) F i
I10 : T T*F
I6 : E E+T T T*F T F F (E) F iI8 : F (E) E E+T
I11 : F (E)
I9 : E E+T TT * F
I5 : F i
I3 : T F
T
E
(
iiF
F
*
+
(
(
E
T
I2
)
T
F
i
I3
I5
F
(
*I4
i I5
![Page 172: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/172.jpg)
r5 r5 r5 r511
r3 r3 r3 r310
r1 r1 r19
S11S68
10S4S57
39S4S56
r6 r6 r6 r65
328 S4S54
r4 r4 r4 r43
r2 r2S7 r22
acceptS61
321S4S50
FTE#)(*+ i
GOTOACTIONstate
![Page 173: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/173.jpg)
E.G. 1. S` S
2. S L=R
3. S R
4. L *R5. L i 6. R L
![Page 174: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/174.jpg)
0: S`•S S •L=R S •R L •*R L •I R •L
6: SL=•R R •L L •*R L •i
2: SL•=R R L•
4:L*•R R •L L •*R L •i
1: S`S•
3:SR•7:L*R•
8:RL•
5:Li •
9:SL=R•
=
R
*
R
L
i
R
S
*
i
i
L*L
![Page 175: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/175.jpg)
r2 9
r6 r68
r4 r47
98S4S56
r5 r55
78 S4S54
r3 3
r6S6/ r62
acc1
321S4S50
RLS# * i =
GOTOACTIONstate
![Page 176: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/176.jpg)
Notes: In the above grammar , the shift/reduce conflict arises from the fact that the SLR parser construction method is not powerful enough to remember enough left context to decide what action the parser should take on input = having seen a string reducible to L. That is “R=“ cannot be a part of any right sentential form. So when “L” appears on the top of stack and “=“ is the current character of the input buffer , we can not reduce “L” into “R”.
![Page 177: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/177.jpg)
• 在 SLR 方法中,若 I 中有 A, 当读头为aFollow(A) ,但是也不一定能够采用 A 归约,因为为栈顶时,栈里也可能有 viable prefix “” ,而“”作为活前缀未必允许归约为 A ,因为可能没有一个句型含有 Aa,
• 例如“ R=” 不是任何活前缀。
![Page 178: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/178.jpg)
Method-LR(1)
• 每个 LR(0) 项目添加展望信息:句柄之后可能跟的 k 个终结符。
• (A•, a )的含义:预期当栈顶句柄形成后,在读头下读到 a 。此时,在栈内,还未入栈,即它展望了句柄后的一个符号。
![Page 179: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/179.jpg)
• 若存在规范推导 S`A ,其中称规范句型的活前缀 ( 记作 ) ,且 aFirst() ,则 LR(1) 项目 (A•,a) 对于活前缀是有效的。注: 1) 如果 bFirst(),即使 bFollow(A), 项目 ( A •,a) 也是无效的。
![Page 180: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/180.jpg)
13 、 LR(1) item• How to rule out invalid reductions?
– By splitting states when necessary, we can arrange to have each state of an LR parser indicate exactly which input symbols can follow a handle for which there is a possible reduction to A.
• Item (A•,a) is an LR(1) item, “1” refers to the length of the second component, called the look-ahead of the item.
![Page 181: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/181.jpg)
Note :1)The look-ahead has no effect in an item of the f
orm (A•,a), where is not ,but an item of the form (A•,a) calls for a reduction by A only if the next input symbol is a.
2)The set of such a’s will always be a proper subset of FOLLOW(A). Why?
![Page 182: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/182.jpg)
14 、 Valid LR(1) item
Formally, we say LR(1) item (A•,a) is valid for a viable prefix if there is a derivation S`A, where = ,and
– Either a is the first symbol of , or is and a is #.
![Page 183: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/183.jpg)
15 、 Construction of the sets of LR(1) items
– Input. An augmented grammar G`
– Output. The sets of LR(1) items that are the set of items valid for one or more viable prefixes of G`.
– Method. The procedures closure and goto and the main routine items for constructing the sets of items.
![Page 184: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/184.jpg)
function closure(I);
{ do { for (each item (A•B,a) in I,
each production B in G`,
and each terminal b in FIRST(a)
such that (B• ,b) is not in I )
add (B• ,b) to I;
}while there is still new items add to I;
return I
}
![Page 185: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/185.jpg)
function goto(I, X);
{ let J be the set of items (AX•,a) such that (A• X ,a) is in I ;
return closure(J)
}
![Page 186: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/186.jpg)
Void items (G`);
{C={closure({ (S`•S,#)})};
do { for (each set of items I in C and each grammar symbol X
such that
goto(I, X) is not empty and not in C )
add goto(I, X) to C
} while there is still new items add to C;
}
![Page 187: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/187.jpg)
e.g.compute the items for the following grammar: 1. S` S 2. S CC 3. C cC|d
Answer: the initial set of items is I0 :
![Page 188: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/188.jpg)
S` •S,#S•CC,#C•cC, c|dC•d,c|d
I0
Now we compute goto(I0,X) for the various values of X. And then get the goto graph for the grammar.
![Page 189: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/189.jpg)
I0: S' -> •S, # I6: C -> c•C, #
S -> •CC, # C -> •cC, #
C -> •cC, c/d C -> •d, #
C -> •d, c/d
I1: S' -> S•, # I7: C -> d•, #I8: C -> cC•, c/d I9: C -> cC•, # I2: S -> C•C, # C -> •cC, # C -> •d, # I3: C -> c•C, c/d I4: C -> d•, c/d C -> •cC, c/d C -> •d, c/dI5: S -> CC•, #
![Page 190: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/190.jpg)
s
C C
C
C
c
c
cc
d
d
dd
![Page 191: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/191.jpg)
16 、 Construction of the canonical LR parsing table
– Input. An augmented grammar G`
– Output. The canonical LR parsing table functions action and goto for G`
– Method.
(1) Construct C={I0,I1,…In}, the collection of sets of LR(1) items for G`.
(2) State i is constructed from Ii. The parsing actions for state i are determined as follows:
![Page 192: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/192.jpg)
a) If [A•a,b] is in Ii and goto(Ii,a)= Ij, then set ACTION[i,a]=“Shift j”, here a must be a terminal.
b) If [A• ,a]Ii, A!=S`,then set ACTION[i,a]=rj; j is the No. of production A .
c) If [S`•S,#]is in Ii, then set ACTION[i,#] to “accept”
![Page 193: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/193.jpg)
(3) The goto transitions for state i are determined as follows: if goto (Ii,A)= Ij, then goto[i,A]=j.
(4) All entries not defined by rules 2 and 3 are made “error”
(5) The initial state of the parser is the one constructed from the set of items containing [S`•S,#].
– If any conflicting actions are generated by the above rules, we say the grammar is not LR(1).
![Page 194: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/194.jpg)
E.g.construct the canonical parsing table for the following grammar: 1. S` S 2. S CC 3. C cC 4. C d
![Page 195: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/195.jpg)
state Action goto
c d # S C
0 S3 S4 1 2
1 acc
2 S6 S7 5
3 S3 S4 8
4 r3 r3
5 r1
6 S6 S7 9
7 r3
8 r2 r2
9 r2
![Page 196: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/196.jpg)
Notes:
1)Every SLR(1) grammar is an LR(1) grammar
2)The canonical LR parser may have more states than the SLR parser for the same grammar.
![Page 197: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/197.jpg)
17 、 LALR(lookahead-LR) 1)Basic idea
Merge the set of LR(1) items having the same core
![Page 198: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/198.jpg)
(1)When merging, the GOTO sub-table can be merged without any conflict, because GOTO function just relies on the core
(2) When merging, the ACTION sub-table can also be merged without any conflicts, but it may occur the case of merging of error and shift/reduce actions. We assume non-error actions
(3)After the set of LR(1) items are merged, an error may be caught lately, but the error will eventually be caught, in fact, it will be caught before any more input symbols are shifted.
![Page 199: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/199.jpg)
(4)After merging, the conflict of reduce/reduce may be occurred.
![Page 200: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/200.jpg)
2)The sets of LR(1) items having the same core
– The states which have the same items but the look-ahead symbols are different, then the states are having the same core.
Notes: We may merge these sets with common cores into one set of items.
![Page 201: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/201.jpg)
18 、 An easy, but space-consuming LALR table construction
• Input. An augmented grammar G`• Output. The LALR parsing table functions action and goto
for G`• Method.
– (1) Construct C={I0,I1,…In}, the collection of sets of LR(1) items.
– (2) For each core present among the set of LR(1) items, find all sets having that core, and replace these sets by their union.
![Page 202: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/202.jpg)
– (3) Let C`={J0,J1,…Jm}be the resulting sets of LR(1) items. The parsing actions for state I are constructed from Ji. If there is a parsing action conflict, the algorithm fails to produce a parser, and the grammar is not a LALR.
– (4) The goto table is constructed as follows.
![Page 203: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/203.jpg)
– If J is the union of one or more sets of LR(1) items, that is , J= I1I2 … Ik then the cores of goto(I1,X), goto(I2,X),…, goto(Ik,X)are the same, since I1,I2,…In all have the same core. Let K be the union of all sets of items having the same core as goto (I1,X). then goto(J,X)=k.
![Page 204: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/204.jpg)
If there is no parsing action conflicts , the given grammar is said to be an LALR(1) grammar
![Page 205: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/205.jpg)
![Page 206: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/206.jpg)
state
Action goto
c d # S C
0 S3 S4 1 2
1 acc
2 S6 S7 5
3 S3 S4 8
4 r3 r3
5 r1
6 S6 S7 9
7 r3
8 r2 r2
9 r2
Parsing string ccd
![Page 207: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/207.jpg)
4. 6 Using ambiguous grammars
1 、 Using Precedence and Associativity to Resolve Parsing Action Conflicts
Grammar: EE+E|E*E|(E)|i
E E+T|T
T T*F|F
F (E)|i
i+i+i*i+i
![Page 208: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/208.jpg)
With LR idea , according other conditions , analyze ambiguity Grammar 。 Steps :1 、 Construct LR(0) parsing table ;2 、 if Conflicts happens, solve them with SLR ;3 、 The rest conflicts are solved by other conditi
ons
![Page 209: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/209.jpg)
E.g : E` E E E+E|E*E|(E)|I
1) LR(0) Parsing Table2) SLR
E.G I1: E` E• E E•+E E E•*iRe - Shift conflict
3)Other conflictsE.g : I7 , E` E + E• E E•+E E E•*ERe - Shift conflict
![Page 210: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/210.jpg)
![Page 211: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/211.jpg)
r3
r2
r1
S9
r4
)
S2
S2
S2
S2
(
r3r3 r3 9
r2r2/S5r2/S4 8
r1S5/r1r1/S47
S5S46
8 S35
7 S34
r4r4 r43
6 S32
accS5S41
1S30
S# *+ i
GOTOACTIONstate
![Page 212: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/212.jpg)
For ACTION[7, *] ,reduction or shift?“Shift” because “*” is superior
For ACTION[7, +] reduction or shift?“Shift” because the left “*” is superior
![Page 213: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/213.jpg)
r3
r2
r1
S9
r4
)
S2
S2
S2
S2
(
r3r3 r3 9
r2r2(S5)r2(S4) 8
r1S5 (r1)r1(S4)7
S5S46
8 S35
7 S34
r4r4 r43
6 S32
accS5S41
1S30
S# *+ i
GOTOACTION状态
![Page 214: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/214.jpg)
2 、 The “Dangling-else” Ambiguity Grammar: S’S S if expr then stmt else stmt |if expr then stmt |other S’S S iSeS|iS|a
![Page 215: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/215.jpg)
![Page 216: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/216.jpg)
6
6 S25
r34
r4r4 r43
4 S22
acc1
1S20
S# ae i
GOTOACTIONstate
S3
S3
r4
S5/r3 r3
S3
r1 r1 r1
![Page 217: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/217.jpg)
6
6 S25
r34
r4r4 r43
4 S22
acc1
1S20
S# ae i
GOTOACTIONstate
S3
S3
r4
S5/r3 r3
S3
r1 r1 r1
![Page 218: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/218.jpg)
4. 7 Parser Generator Yacc
1 、 Creating an input/output translator with Yacc
Yacc
Compiler
C
Compiler
a.out
Yacc specification translate.y
y.tab.c
input
y.tab.c
a.out
output
![Page 219: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/219.jpg)
2 、 Three parts of a Yacc source program
declaration
%%
translation rules
%%
supporting C-routines
Notes: The form of a translation rule is as followings:
<Left side>: <alt> {semantic action}
![Page 220: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/220.jpg)
![Page 221: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/221.jpg)
Syntax Analysis
Context-Free Grammar
Specification
Push-down Automation
Tool
Table-driven
Skill
Top-down,
Bottom-UP
Methods
Top-down
Recursive-descent
Predictive
Derivation-Matching
First,Follow
Bottom-Up
Precedence
FIRSTVT
LASTVT
LR Parsing
SLR(1)
LR(1)
LALR(1)
Shift-Reducing
Layered Automation
![Page 222: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/222.jpg)
![Page 223: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/223.jpg)
Recursive Descent Analyses
Advantages: Easy to write programs
Disadvantages: Backtracking, poor efficiency
Predictive Analyses : predict the production which is used when a non-terminated occurs on top of the analyses stack
Skills : First, Follow
Disadvantages: More pre-processes(Elimination of left recursions , Extracting maximum common left factors)
……
….
A
a
Controller
LL(1) Parse Table
First() A
Follow(A) A
![Page 224: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/224.jpg)
Bottom-up ---Operator Precedence Analyses
Skills : Shift– Reduce , FIRSTVT, LASTVT
Disadvantages: Strict grammar limitation, poor reduce mechanism
Simple LR Analyses : based on determined FA, state stack and symbol stack (two stacks)
Skills : LR item and Follow(A)
Disadvantages: cannot solve the problems of shift-reduce conflict and reduce-reduce conflict
….
a
b
Controller
OP Parse Table
FIRSTVT() A
LASTVT() A
E
LR(1) analyses
![Page 225: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/225.jpg)
….
a
b
Controller
SLR(1) Parse Table
LR items (Shift items, Reducible items) LR item –extension (AB) (B)
Follow(A) A
SLR(1) Parser:
0#
i
statesymbol
![Page 226: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/226.jpg)
Canonical LR Analyses(LR(1))
Skills : LR(1) item and Look-ahead symbol
Disadvantages: more states
LALR(1)
Skills : Merge states with the same core
Disadvantages: maybe cause reduce-reduce conflict
![Page 227: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/227.jpg)
….
a
b
Controller
LR(1) Parse Table
LR items (Shift items, Reducible items) LR item –extension (AB,a) (B,first(a) )
LR(1) Parser:
0#
i
statesymbol
![Page 228: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/228.jpg)
Generation of Parse Tree
![Page 229: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/229.jpg)
E.g. construct the parse tree for the string “i+i*i” under SLR(1) of the following grammar 0. S` E 1. E E+T 2. E T 3. T T*F 4.T F 5. F (E) 6. F i
![Page 230: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/230.jpg)
r5 r5 r5 r511
r3 r3 r3 r310
r1 r1 r19
S11S68
10S4S57
39S4S56
r6 r6 r6 r65
328 S4S54
r4 r4 r4 r43
r2 r2S7 r22
acceptS61
321S4S50
FTE#)(*+ i
GOTOACTIONstate
![Page 231: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/231.jpg)
i + i * i
F
T
E
F
T
F
T
E
![Page 232: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/232.jpg)
Exercises
• Constructing the related LL(1) parsing table.Pb S dSS ; A|AAB|CBaCD|D e ADE BEi F tFb
![Page 233: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/233.jpg)
• Please show that the following operator grammar is whether an operator precedence grammar by constructing the related parsing table.
SS ; G|G
GG(T)|H
Ha|(S)
TT+S|S
![Page 234: Part 4 Syntax Analysis E.g. “young men like pop music” Lexical Analyzer “(adjective, ) (noum, ) (verb, ) (adjective, ) (noum, )” Leftmost Derivation](https://reader031.vdocument.in/reader031/viewer/2022013012/56649ecf5503460f94bdc96f/html5/thumbnails/234.jpg)
• Please construct a LR(1) parsing table for the following two ambiguous grammar with the additional conditions:.
Sif S else S|if S|S;S|a that else dangles with the closest previous unmatched if , ; has the property of left associative
CC and C|C or C|b that or has higher precedence than that of and, and has the property of right associative, or has the property of right associative.