Bottom-Up Syntax Analysis - PowerPoint PPT Presentation

About This Presentation
Title:

Bottom-Up Syntax Analysis

Description:

Title: Lexical Analysis Author: Mooly Sagiv Last modified by: sagiv Created Date: 4/16/1998 8:54:14 PM Document presentation format: On-screen Show (4:3) – PowerPoint PPT presentation

Number of Views:96
Avg rating:3.0/5.0
Slides: 76
Provided by: Mooly4
Category:

less

Transcript and Presenter's Notes

Title: Bottom-Up Syntax Analysis


1
Bottom-Up Syntax Analysis
  • Mooly Sagiv
  • http//www.cs.tau.ac.il/msagiv/courses/wcc10.html
  • TextbookModern Compiler Design
  • Chapter 2.2.5 (modified)

2
Efficient Parsers
  • Pushdown automata
  • Deterministic
  • Report an error as soon as the input is not a
    prefix of a valid program
  • Not usable for all context free grammars

cup
Ambiguity errors
parse tree
3
Kinds of Parsers
  • Top-Down (Predictive Parsing) LL
  • Construct parse tree in a top-down matter
  • Find the leftmost derivation
  • For every non-terminal and token predict the next
    production
  • Bottom-Up LR
  • Construct parse tree in a bottom-up manner
  • Find the rightmost derivation in a reverse order
  • For every potential right hand side and token
    decide when a production is found

4
Bottom-Up Syntax Analysis
  • Input
  • A context free grammar
  • A stream of tokens
  • Output
  • A syntax tree or error
  • Method
  • Construct parse tree in a bottom-up manner
  • Find the rightmost derivation in (reversed order)
  • For every potential right hand side and token
    decide when a production is found
  • Report an error as soon as the input is not a
    prefix of valid program

5
Plan
  • Pushdown automata
  • Bottom-up parsing (informal)
  • Non-deterministic bottom-up parsing
  • Deterministic bottom-up parsing
  • Interesting non LR grammars

6
Pushdown Automaton
input

u
t
w
V
control
parser-table

stack
7
Informal Example(1)
S ? E E ? T E T T ? i ( E )
shift
8
Informal Example(2)
S ? E E ? T E T T ? i ( E )
input
stack
tree
i
i
reduce T ? i
9
Informal Example(3)
S ? E E ? T E T T ? i ( E )
input
stack
tree
i
T
reduce E ? T
10
Informal Example(4)
S ? E E ? T E T T ? i ( E )
input
stack
tree
i
E
shift
11
Informal Example(5)
S ? E E ? T E T T ? i ( E )
input
stack
tree
i
E
shift
12
Informal Example(6)
S ? E E ? T E T T ? i ( E )
input
stack
tree
E

iE
reduce T ? i
13
Informal Example(7)
S ? E E ? T E T T ? i ( E )
input
stack
tree
E

T
TE
reduce E ? E T
i
14
Informal Example(8)
S ? E E ? T E T T ? i ( E )
input
stack
tree
E

E
E
T
shift
i
15
Informal Example(9)
S ? E E ? T E T T ? i ( E )
input
stack
tree
E

E
E
T
i
reduce S ? E
16
Informal Example
reduce S ? E
reduce E ? E T
reduce T ? i
reduce E ? T
reduce T ? i
17
The Problem
  • Deciding between shift and reduce

18
Informal Example(7)
S ? E E ? T E T T ? i ( E )
input
stack
tree
E

T
TE
reduce E ? E T
i
19
Informal Example(7)
S ? E E ? T E T T ? i ( E )
input
stack
tree
E

T
TE
reduce E ? T
input
stack
tree

EE
?
20
Bottom-UP LR(0) Items
21
LR(0) items ( ) i T E ?
1 S ? ?E 2 4, 6
2 S ? E ? s3
3 S ? E ? r
4 E ? ? T 5 10, 12
5 E ? T ? r
6 E ? ? E T 7 4, 6
7 E ? E ? T s8
8 E ? E ? T 9 10, 12
9 E ? E T ? r
10 T ? ? i s11
11 T ? i ? r
12 T ? ? (E) s13
13 T ? (? E) 14 4, 6
14 T ? (E ?) s15
15 T ? (E) ? r
S ? E E ? T E ? E T T ? i T ?( E )
22
Formal Example(1)
S ? E E ? T E T T ? i ( E )
input
stack
1 S ? ?E
i i
?-move 6
23
Formal Example(2)
S ? E E ? T E T T ? i ( E )
?-move 4
24
Formal Example(3)
S ? E E ? T E T T ? i ( E )
?-move 10
25
Formal Example(4)
S ? E E ? T E T T ? i ( E )
input
stack
10 T ? ? i 4 E ? ?T 6 E ? ?ET 1 S ? ?E
i i
shift 11
26
Formal Example(5)
S ? E E ? T E T T ? i ( E )
input
stack
11 T ? i ? 10 T ? ? i 4 E ? ?T 6 E ? ?ET 1
S ? ?E
i
reduce T ? i
27
Formal Example(6)
S ? E E ? T E T T ? i ( E )
reduce E ? T
28
Formal Example(7)
S ? E E ? T E T T ? i ( E )
shift 8
29
Formal Example(8)
S ? E E ? T E T T ? i ( E )
?-move 10
30
Formal Example(9)
S ? E E ? T E T T ? i ( E )
shift 11
31
Formal Example(10)
S ? E E ? T E T T ? i ( E )
stack
input
11 T ? i ? 10 T ? ? i 8 E ? E ? T 7 E ? E ?
T 6 E ? ?ET 1 S ? ?E

reduce T ? i
32
Formal Example(11)
S ? E E ? T E T T ? i ( E )
input
stack
9 E ? E T ? 8 E ? E ? T 7 E ? E ? T 6 E
? ?ET 1 S ? ?E

reduce E ? E T
33
Formal Example(12)
S ? E E ? T E T T ? i ( E )
input
stack
2 S ? E ? 1 S ? ?E

shift 3
34
Formal Example(13)
S ? E E ? T E T T ? i ( E )
input
stack

3 S ? E ? 2 S ? E ? 1 S ? ?E
reduce S ? E
35
But how can this be done efficiently?
  • Deterministic Pushdown Automaton

36
Handles
  • Identify the leftmost node (nonterminal) that has
    not been constructed but all whose children have
    been constructed

input
t1 t2 t4 t5
t6 t7 t8
37
Identifying Handles
  • Create a deteteministic finite state automaton
    over grammar symbols
  • Sets of LR(0) items
  • Accepting states identify handles
  • Use automaton to build parser tables
  • reduce For items A ? ? ? on every token
  • shift For items A ? ? ? t ? on token t
  • When conflicts occur the grammar is not LR(0)
  • When no conflicts occur use a DPDA which pushes
    states on the stack

38
A Trivial Example
  • S ? A B
  • A ? a
  • B ? a

39
( ) i T E ?
1 S ? ?E 2 4, 6
2 S ? E ? s3
3 S ? E ? r
4 E ? ? T 5 10, 12
5 E ? T ? r
6 E ? ? E T 7 4, 6
7 E ? E ? T s8
8 E ? E ? T 9 10, 12
9 E ? E T ? r
10 T ? ? i s11
11 T ? i ? r
12 T ? ? (E) s13
13 T ? (? E) 14 4, 6
14 T ? (E ?) s15
15 T ? (E) ? r
S ? E E ? T E ? E T T ? i T ?( E )
40
(No Transcript)
41
Example Control Table
i ( ) E T
0 s5 err s7 err err 1 6
1 err s3 err err s2
2 acc acc acc acc acc
3 s5 err s7 err err 4
4 reduce E?ET reduce E?ET reduce E?ET reduce E?ET reduce E?ET
5 reduce T ? i reduce T ? i reduce T ? i reduce T ? i reduce T ? i
6 reduce E ? T reduce E ? T reduce E ? T reduce E ? T reduce E ? T
7 s5 err s7 err err 8 6
8 err s3 err s9 err
9 reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E)
42
i ( ) E T
0 s5 err s7 err err 1 6
1 err s3 err err s2
2 acc acc acc acc acc
3 s5 err s7 err err 4
4 reduce E?ET reduce E?ET reduce E?ET reduce E?ET reduce E?ET
5 reduce T ? i reduce T ? i reduce T ? i reduce T ? i reduce T ? i
6 reduce E ? T reduce E ? T reduce E ? T reduce E ? T reduce E ? T
7 s5 err s7 err err 8 6
8 err s3 err s9 err
9 reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E)
input
stack
shift 5
i i
0()
43
i ( ) E T
0 s5 err s7 err err 1 6
1 err s3 err err s2
2 acc acc acc acc acc
3 s5 err s7 err err 4
4 reduce E?ET reduce E?ET reduce E?ET reduce E?ET reduce E?ET
5 reduce T ? i reduce T ? i reduce T ? i reduce T ? i reduce T ? i
6 reduce E ? T reduce E ? T reduce E ? T reduce E ? T reduce E ? T
7 s5 err s7 err err 8 6
8 err s3 err s9 err
9 reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E)
stack
input
5 (i) 0 ()
reduce T ? i
i
44
i ( ) E T
0 s5 err s7 err err 1 6
1 err s3 err err s2
2 acc acc acc acc acc
3 s5 err s7 err err 4
4 reduce E?ET reduce E?ET reduce E?ET reduce E?ET reduce E?ET
5 reduce T ? i reduce T ? i reduce T ? i reduce T ? i reduce T ? i
6 reduce E ? T reduce E ? T reduce E ? T reduce E ? T reduce E ? T
7 s5 err s7 err err 8 6
8 err s3 err s9 err
9 reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E)
stack
input
6 (T) 0 ()
i
reduce E ? T
45
i ( ) E T
0 s5 err s7 err err 1 6
1 err s3 err err s2
2 acc acc acc acc acc
3 s5 err s7 err err 4
4 reduce E?ET reduce E?ET reduce E?ET reduce E?ET reduce E?ET
5 reduce T ? i reduce T ? i reduce T ? i reduce T ? i reduce T ? i
6 reduce E ? T reduce E ? T reduce E ? T reduce E ? T reduce E ? T
7 s5 err s7 err err 8 6
8 err s3 err s9 err
9 reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E)
stack
input
shift 3
1(E) 0 ()
i
46
i ( ) E T
0 s5 err s7 err err 1 6
1 err s3 err err s2
2 acc acc acc acc acc
3 s5 err s7 err err 4
4 reduce E?ET reduce E?ET reduce E?ET reduce E?ET reduce E?ET
5 reduce T ? i reduce T ? i reduce T ? i reduce T ? i reduce T ? i
6 reduce E ? T reduce E ? T reduce E ? T reduce E ? T reduce E ? T
7 s5 err s7 err err 8 6
8 err s3 err s9 err
9 reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E)
stack
input
3 () 1(E) 0 ()
shift 5
i
47
i ( ) E T
0 s5 err s7 err err 1 6
1 err s3 err err s2
2 acc acc acc acc acc
3 s5 err s7 err err 4
4 reduce E?ET reduce E?ET reduce E?ET reduce E?ET reduce E?ET
5 reduce T ? i reduce T ? i reduce T ? i reduce T ? i reduce T ? i
6 reduce E ? T reduce E ? T reduce E ? T reduce E ? T reduce E ? T
7 s5 err s7 err err 8 6
8 err s3 err s9 err
9 reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E)
stack
input
5 (i) 3 () 1(E) 0()
reduce T ? i

48
i ( ) E T
0 s5 err s7 err err 1 6
1 err s3 err err s2
2 acc acc acc acc acc
3 s5 err s7 err err 4
4 reduce E?ET reduce E?ET reduce E?ET reduce E?ET reduce E?ET
5 reduce T ? i reduce T ? i reduce T ? i reduce T ? i reduce T ? i
6 reduce E ? T reduce E ? T reduce E ? T reduce E ? T reduce E ? T
7 s5 err s7 err err 8 6
8 err s3 err s9 err
9 reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E)
input
stack
reduce E ? E T
4 (T) 3 () 1(E) 0()

49
i ( ) E T
0 s5 err s7 err err 1 6
1 err s3 err err s2
2 acc acc acc acc acc
3 s5 err s7 err err 4
4 reduce E?ET reduce E?ET reduce E?ET reduce E?ET reduce E?ET
5 reduce T ? i reduce T ? i reduce T ? i reduce T ? i reduce T ? i
6 reduce E ? T reduce E ? T reduce E ? T reduce E ? T reduce E ? T
7 s5 err s7 err err 8 6
8 err s3 err s9 err
9 reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E)
input
stack
1 (E) 0 ()

shift 2
50
i ( ) E T
0 s5 err s7 err err 1 6
1 err s3 err err s2
2 acc acc acc acc acc
3 s5 err s7 err err 4
4 reduce E?ET reduce E?ET reduce E?ET reduce E?ET reduce E?ET
5 reduce T ? i reduce T ? i reduce T ? i reduce T ? i reduce T ? i
6 reduce E ? T reduce E ? T reduce E ? T reduce E ? T reduce E ? T
7 s5 err s7 err err 8 6
8 err s3 err s9 err
9 reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E)
stack
input
2 () 1 (E) 0 ()
accept
51
i ( ) E T
0 s5 err s7 err err 1 6
1 err s3 err err s2
2 acc acc acc acc acc
3 s5 err s7 err err 4
4 reduce E?ET reduce E?ET reduce E?ET reduce E?ET reduce E?ET
5 reduce T ? i reduce T ? i reduce T ? i reduce T ? i reduce T ? i
6 reduce E ? T reduce E ? T reduce E ? T reduce E ? T reduce E ? T
7 s5 err s7 err err 8 6
8 err s3 err s9 err
9 reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E)
input
stack
shift 7
((i)
0()
52
i ( ) E T
0 s5 err s7 err err 1 6
1 err s3 err err s2
2 acc acc acc acc acc
3 s5 err s7 err err 4
4 reduce E?ET reduce E?ET reduce E?ET reduce E?ET reduce E?ET
5 reduce T ? i reduce T ? i reduce T ? i reduce T ? i reduce T ? i
6 reduce E ? T reduce E ? T reduce E ? T reduce E ? T reduce E ? T
7 s5 err s7 err err 8 6
8 err s3 err s9 err
9 reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E)
stack
input
shift 7
7(() 0()
(i)
53
i ( ) E T
0 s5 err s7 err err 1 6
1 err s3 err err s2
2 acc acc acc acc acc
3 s5 err s7 err err 4
4 reduce E?ET reduce E?ET reduce E?ET reduce E?ET reduce E?ET
5 reduce T ? i reduce T ? i reduce T ? i reduce T ? i reduce T ? i
6 reduce E ? T reduce E ? T reduce E ? T reduce E ? T reduce E ? T
7 s5 err s7 err err 8 6
8 err s3 err s9 err
9 reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E)
stack
7 (() 7(() 0()
input
shift 5
i)
54
i ( ) E T
0 s5 err s7 err err 1 6
1 err s3 err err s2
2 acc acc acc acc acc
3 s5 err s7 err err 4
4 reduce E?ET reduce E?ET reduce E?ET reduce E?ET reduce E?ET
5 reduce T ? i reduce T ? i reduce T ? i reduce T ? i reduce T ? i
6 reduce E ? T reduce E ? T reduce E ? T reduce E ? T reduce E ? T
7 s5 err s7 err err 8 6
8 err s3 err s9 err
9 reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E)
stack
5 (i) 7 (() 7(() 0()
input
reduce T ? i
)
55
i ( ) E T
0 s5 err s7 err err 1 6
1 err s3 err err s2
2 acc acc acc acc acc
3 s5 err s7 err err 4
4 reduce E?ET reduce E?ET reduce E?ET reduce E?ET reduce E?ET
5 reduce T ? i reduce T ? i reduce T ? i reduce T ? i reduce T ? i
6 reduce E ? T reduce E ? T reduce E ? T reduce E ? T reduce E ? T
7 s5 err s7 err err 8 6
8 err s3 err s9 err
9 reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E)
stack
6 (T) 7 (() 7(() 0()
input
reduce E ?T
)
56
i ( ) E T
0 s5 err s7 err err 1 6
1 err s3 err err s2
2 acc acc acc acc acc
3 s5 err s7 err err 4
4 reduce E?ET reduce E?ET reduce E?ET reduce E?ET reduce E?ET
5 reduce T ? i reduce T ? i reduce T ? i reduce T ? i reduce T ? i
6 reduce E ? T reduce E ? T reduce E ? T reduce E ? T reduce E ? T
7 s5 err s7 err err 8 6
8 err s3 err s9 err
9 reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E)
stack
8 (E) 7 (() 7(() 0()
input
shift 9
)
57
i ( ) E T
0 s5 err s7 err err 1 6
1 err s3 err err s2
2 acc acc acc acc acc
3 s5 err s7 err err 4
4 reduce E?ET reduce E?ET reduce E?ET reduce E?ET reduce E?ET
5 reduce T ? i reduce T ? i reduce T ? i reduce T ? i reduce T ? i
6 reduce E ? T reduce E ? T reduce E ? T reduce E ? T reduce E ? T
7 s5 err s7 err err 8 6
8 err s3 err s9 err
9 reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E)
9 ()) 8 (E) 7 (() 7(() 0()
stack
input
reduce T ? ( E )

58
i ( ) E T
0 s5 err s7 err err 1 6
1 err s3 err err s2
2 acc acc acc acc acc
3 s5 err s7 err err 4
4 reduce E?ET reduce E?ET reduce E?ET reduce E?ET reduce E?ET
5 reduce T ? i reduce T ? i reduce T ? i reduce T ? i reduce T ? i
6 reduce E ? T reduce E ? T reduce E ? T reduce E ? T reduce E ? T
7 s5 err s7 err err 8 6
8 err s3 err s9 err
9 reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E)
stack
6 (T) 7(() 0()
input
reduce E ? T

59
i ( ) E T
0 s5 err s7 err err 1 6
1 err s3 err err s2
2 acc acc acc acc acc
3 s5 err s7 err err 4
4 reduce E?ET reduce E?ET reduce E?ET reduce E?ET reduce E?ET
5 reduce T ? i reduce T ? i reduce T ? i reduce T ? i reduce T ? i
6 reduce E ? T reduce E ? T reduce E ? T reduce E ? T reduce E ? T
7 s5 err s7 err err 8 6
8 err s3 err s9 err
9 reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E)
stack
8 (E) 7(() 0()
input
err

60
(No Transcript)
61
Constructing LR(0) parsing table
  • Add a production S ? S
  • Construct a deterministic finite automaton
    accepting valid stack symbols
  • States are set of items A? ???
  • The states of the automaton becomes the states of
    parsing-table
  • Determine shift operations
  • Determine goto operations
  • Determine reduce operations

62
Filling Parsing Table
  • A state si
  • reduce A ??
  • A ?? ? ? si
  • Shift on t
  • A?? ? t ? ? si
  • Goto(si, X) sj
  • A ?? ? X ? ? si
  • ?(si, X) sj
  • When conflicts occurs the grammar is not LR(0)

63
Example Control Table
i ( ) E T
0 s5 err s7 err err 1 6
1 err s3 err err s2
2 acc acc acc acc acc
3 s5 err s7 err err 4
4 reduce E?ET reduce E?ET reduce E?ET reduce E?ET reduce E?ET
5 reduce T ? i reduce T ? i reduce T ? i reduce T ? i reduce T ? i
6 reduce E ? T reduce E ? T reduce E ? T reduce E ? T reduce E ? T
7 s5 err s7 err err 8 6
8 err s3 err s9 err
9 reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E) reduce T?(E)
64
Example Non LR(0) Grammar
LR(0) items i E ?
1 S ? ?E 2 4, 8
2 S ? E ? s3
3 S ? E ? r S ? E
4 E ? ? E E 5 4, 8
5 E ? E ? E s6
6 E ? E ? E 7
7 E ? E E ? r E ? EE
8E ? ? i s9
9E ? i ? r E ? i
S ? E E ? EE E ? i
65
Example Non LR(0)DFA
S ? E E ? E E i
66
4
E?E ?E E? ?EE E ? ? i
0
2
S??E E??EE E ? ? i
S?E? E?E?E

E


E
i
5
3
E ? i?
E?E E? E?E?E
S ?E ?
1
i
i E
0 s1 err err err 2
1 red E ? i red E ? i red E ? i red E ? i
2 err s4 s4 s3
3 accept accept accept accept
4 s1 s1 5
5 red E ? E E red E ? E E s4 red E ? E E red E ? E E
67
Non-Ambiguous Non LR(0) Grammar
S ? E E ? E T T T ? T F F F ? i
i
0
? ? 1
2
68
Non-Ambiguous SLR(1) Grammar
S ? E E ? E T T T ? T F F F ? i
i
0
s2 r E ? T 1
2
69
LR(1) Parser
  • LR(1) Items A ????, t
  • ? is at the top of the stack and we are
    expecting ?t
  • LR(1) State
  • Sets of items
  • LALR(1) State
  • Merge items with the same look-ahead

70
Grammar Hierarchy
Non-ambiguous CFG
CLR(1)
LL(1)
LALR(1)
SLR(1)
LR(0)
71
Interesting Non LR(1) Grammars
  • Ambiguous
  • Arithmetic expressions
  • Dangling-else
  • Common derived prefix
  • A ? B1 a b B2 a c
  • B1 ? ?
  • B2 ? ?
  • Optional non-terminals
  • St ? OptLab Ass
  • OptLab ? id ?
  • Ass ? id Exp

72
A motivating example
  • Create a desk calculator
  • Challenges
  • Non trivial syntax
  • Recursive expressions (semantics)
  • Operator precedence

73
Solution (lexical analysis)
import java_cup.runtime. cup eofval
return sym.EOF eofval NUMBER0-9
return new Symbol(sym.PLUS) - return new
Symbol(sym.MINUS) return new
Symbol(sym.MULT) / return new
Symbol(sym.DIV) ( return new
Symbol(sym.LPAREN) ) return new
Symbol(sym.RPAREN) NUMBER return new
Symbol(sym.NUMBER, new Integer(yytext())) \n
.
  • Parser gets terminals from the Lexer

74
terminal Integer NUMBER terminal
PLUS,MINUS,MULT,DIV terminal LPAREN,
RPAREN terminal UMINUS nonterminal Integer
expr precedence left PLUS, MINUS precedence
left DIV, MULT Precedence left UMINUS expr
expre1 PLUS expre2 RESULT new
Integer(e1.intValue() e2.intValue())
expre1 MINUS expre2 RESULT new
Integer(e1.intValue() - e2.intValue())
expre1 MULT expre2 RESULT new
Integer(e1.intValue() e2.intValue())
expre1 DIV expre2 RESULT new
Integer(e1.intValue() / e2.intValue())
MINUS expre1 prec UMINUS RESULT new
Integer(0 - e1.intValue() LPAREN expre1
RPAREN RESULT e1 NUMBERn
RESULT n
75
Summary
  • LR is a powerful technique
  • Generates efficient parsers
  • Generation tools exit LALR(1)
  • Bison, yacc, CUP
  • But some grammars need to be tuned
  • Shift/Reduce conflicts
  • Reduce/Reduce conflicts
  • Efficiency of the generated parser
  • There exist methods that handle arbitrary context
    free grammars
  • Early parsers
  • CYK algorithms
Write a Comment
User Comments (0)
About PowerShow.com