costas busch - rpi1 context-free languages. costas busch - rpi2 regular languages
Post on 21-Dec-2015
231 views
TRANSCRIPT
Costas Busch - RPI 10
S
bSbS
aSaS
abaabaabaSabaabSbaaSaS
A context-free grammar :G
Another derivation:
Costas Busch - RPI 14
S
SSS
aSbS
}prefixanyin
)()( and
),()(:{
v
vnvn
wnwnw
ba
ba
() ((( ))) (( ))
)(GL
Describes matched parentheses:
Costas Busch - RPI 15
Definition: Context-Free Grammars
Grammar
Productions of the form:
xAString of variables and terminals
),,,( PSTVG
Variables Terminalsymbols
Startvariable
Variable
Costas Busch - RPI 17
Definition: Context-Free Languages
A language is context-free
if and only if
there is a context-free grammar with
L
G)(GLL
Costas Busch - RPI 18
Derivation Order ABS .1
A
aaAA
.3
.2
B
BbB
.5
.4
aabaaBbaaBaaABABS54321
Leftmost derivation:
aabaaAbAbABbABS32541
Rightmost derivation:
Costas Busch - RPI 19
|AB
bBbA
aABS
Leftmost derivation:
abbbbabbbbB
abbBbbBabAbBabBbBaABS
Rightmost derivation:
abbbbabbBbb
abAbabBbaAaABS
Costas Busch - RPI 26
aabaaBbaaABbaaABABS
yield
aab
baa
S
BA
a a A B b
Derivation Tree
ABS |aaAA |BbB
Costas Busch - RPI 30
aabaaBbaaBaaABABS
aabaaAbAbABbABS S
BA
a a A B b
Same derivation tree
Sometimes, derivation order doesn’t matter
Leftmost:
Rightmost:
Costas Busch - RPI 35
The grammar aEEEEEE |)(|| is ambiguous:
E
EE
a a
EE a
E
EE
EE
a
a a
string aaa has two derivation trees
Costas Busch - RPI 36
string aaa has two leftmost derivations
aaaEaa
EEaEEEEEE
aaaEaa
EEaEaEEE
*
The grammar aEEEEEE |)(|| is ambiguous:
Costas Busch - RPI 37
Definition:
A context-free grammar is ambiguous
if some string has:
two or more derivation trees
G
)(GLw
Costas Busch - RPI 38
In other words:
A context-free grammar is ambiguous
if some string has:
two or more leftmost derivations
G
)(GLw
(or rightmost)
Costas Busch - RPI 44
We fix the ambiguous grammar:
aEEEEEE |)(||
New non-ambiguous grammar:
aF
EF
FT
FTT
TE
TEE
)(
Costas Busch - RPI 47
The grammar :
aF
EF
FT
FTT
TE
TEE
)(
is non-ambiguous:
Every string hasa unique derivation tree
G
)(GLw
Costas Busch - RPI 48
Another Ambiguous Grammar
IF_STMT if EXPR then STMT| if EXPR then STMT else STMT
Costas Busch - RPI 49
If expr1 then if expr2 then stmt1 else stmt2
IF_STMT
expr1 then
elseif expr2 then
STMT
stmt1
if
IF_STMT
expr1 then else
if expr2 then
STMT stmt2if
stmt1
stmt2
Costas Busch - RPI 50
Inherent Ambiguity
Some context free languageshave only ambiguous grammars
Example: }{}{ mmnmnn cbacbaL
||11
aAbA
AcSS
||22
bBcB
BaSS
21 | SSS
Costas Busch - RPI 53
Compiler
Program
v = 5;if (v>5) x = 12 + v;while (x !=3) { x = x - 3; v = 10;}......
Add v,v,0cmp v,5jmplt ELSETHEN: add x, 12,vELSE:WHILE:cmp x,3...
Machine Code
Costas Busch - RPI 56
ParserPROGRAM STMT_LISTSTMT_LIST STMT; STMT_LIST | STMT;STMT EXPR | IF_STMT | WHILE_STMT | { STMT_LIST }
EXPR EXPR + EXPR | EXPR - EXPR | IDIF_STMT if (EXPR) then STMT | if (EXPR) then STMT else STMTWHILE_STMT while (EXPR) do STMT
Costas Busch - RPI 57
The parser finds the derivation of a particular input
10 + 2 * 5
Parser
E -> E + E | E * E | INT
E => E + E => E + E * E => 10 + E*E => 10 + 2 * E => 10 + 2 * 5
input
derivation
Costas Busch - RPI 58
10
E
2 5
E => E + E => E + E * E => 10 + E*E => 10 + 2 * E => 10 + 2 * 5
derivation
derivation tree
E E
E E
+
*
Costas Busch - RPI 63
Exhaustive Search
||| bSaaSbSSS
Phase 1:
S
bSaS
aSbS
SSSaabb
All possible derivations of length 1
Find derivation of
Costas Busch - RPI 65
Phase 2
aSbS
SSS
aabb
SSSS
bSaSSSS
aSbSSSS
SSSSSS
Phase 1
abaSbS
abSabaSbS
aaSbbaSbS
aSSbaSbS
||| bSaaSbSSS
Costas Busch - RPI 66
Phase 2
SSSS
aSbSSSS
SSSSSS
aaSbbaSbS
aSSbaSbS
Phase 3
aabbaaSbbaSbS
||| bSaaSbSSS
aabb
Costas Busch - RPI 67
Final result of exhaustive search
Parser
derivation
S
bSaS
aSbS
SSSinput
aabb
aabbaaSbbaSbS
(top-down parsing)
Costas Busch - RPI 68
Time complexity of exhaustive search
Suppose there are no productions of the form
A
BA
Number of phases for string : w ||2 w
Costas Busch - RPI 72
Total time needed for string :w
||22 wkkk
Extremely bad!!!
phase 1 phase 2 phase 2|w|
Costas Busch - RPI 73
There exist faster algorithmsfor specialized grammars
S-grammar: axA
symbol stringof variables
),( aA appears oncePair
Costas Busch - RPI 74
S-grammar example:
cS
bSSS
aSS
abccabcSabSSaSS
Each string has a unique derivation
Costas Busch - RPI 75
In the exhaustive search parsingthere is only one choice in each phase
For S-grammars:
Total time for parsing string :w ||w
Time for a phase: 1