cs314: formal languages and automata theory · pda can read and write into the stack by popping the...
TRANSCRIPT
Chapter 2: Context Free Grammar
CS314: FORMAL LANGUAGES
AND AUTOMATA THEORY L. NADA ALZABEN
Quick Note
Cs314pnu.wordpress.com
Computer Science Department
2
2.1 Context Free Grammar (CFG)
Useful in App’s that use recursion feature also it occurs in the specification and compilation of a programming language.
Also used in the study of human languages
Parsers in compilers extracts the meaning of a program before generating the compiled code. That is done when CFG is available.
The collection of languages associated with the CFG is called Context Free Language (CFL).
The machine that recognizes the CFL is called pushdown automata (PDA).
Computer Science Department
3
2.1 Context Free Grammar (CFG)
E.g. G1: (Each part is called substitution rule or
production.)
Or “|” can be used to simplify the production.
Strings can be generated as follows:
A 0A1
A B
B #
Start variable terminal
Computer Science Department
4
The sequence of substitutions to obtain a string is
called derivation. A derivation is:
Parse tree:
2.1 Context Free Grammar (CFG)
Computer Science Department
5
E.g. G2:
2.1 Context Free Grammar (CFG)
Computer Science Department
6
Formal definition of CFG
When we say Aw as rule in the grammar this
means uAv is uwv.
When we say u drives v, u v this means u=v
Computer Science Department
7
E.g. G3:
E.g. G4: define if the string is generated by the G4
grammar
1. a + a x a 2. ( a + a) x a
2.1 Context Free Grammar (CFG)
Computer Science Department
8
2.1 Context Free Grammar (CFG)
Computer Science Department
9
A compiler translates the code to another form to
be executed. To do so the compiler extracts the
meaning of the code by the Parsing process as we
did in parse tree.
2.1 Context Free Grammar (CFG)
Computer Science Department
10
Designing CFG
Designing CFG require creativity same as the finite
automata.
First method: is to break the CFL to smaller ones then
combine them with “|” operator.
E.g. design the CFG for
Computer Science Department
11
Second method: if the language is regular we can construct the CFG by first giving the DFA of the language
Third method: if the CFG contains strings with two substrings that are linked which need to remember an unbounded amount of information about one of the substrings to verify that it corresponds to the other substrings.
Fourth method: for complex languages with strings of many structures that are recursively appearing as part of other or the same structure (mostly happens in the grammar that generate arithmetic expression. )
Designing CFG
Computer Science Department
12
Ambiguity
When a grammar generates the same string in several
different ways (different parse trees) we say the string is
derived ambiguously in that grammar.
We call that grammar ambiguous grammar.
E.g. G5
test a + a x a
Computer Science Department
13
TEST YOUR SELF
Use G2 to show the two different derivation of:
Submit on Thursday's lecture
Computer Science Department
14
Some languages can be generated by ambiguous
grammars and also unambiguous grammar BUT for
those who only are generated by the ambiguous
grammar is called inherently ambiguous
Ambiguity
Computer Science Department
15
CHOMSKY normal form
Simplifying the CFG is by using CHOMSKY normal form rules.
Any CFL is generated by a CFG in the CHOMSKY normal form.
Computer Science Department
16
E.g. convert the G6 into CHOMSKY normal form:
CHOMSKY normal form
Step1: make new start
variable
S ASA | aB
A B|S
B b|ᵋ
𝑺𝟎 S
S ASA | aB
A B|S
B b|ᵋ
Step2: Remove ᵋ
𝑺𝟎 S
S ASA | aB|a
A B|S |ᵋ
B b|ᵋ
𝑺𝟎 S
S ASA | aB|a |AS|SA|S
A B|S |ᵋ
B b
Step3: Remove unit rule
𝑺𝟎 S| ASA | aB|a |AS|SA
S ASA | aB|a |AS|SA|S
A B|S
B b
𝑺𝟎 ASA | aB|a |AS|SA
S ASA | aB|a |AS|SA
A B|S|b|ASA|aB|a |AS|SA
B b Computer Science Department
17
E.g. convert the G6 into CHOMSKY normal form:
CHOMSKY normal form
𝑺𝟎 ASA | aB|a |AS|SA
S ASA | aB|a |AS|SA
A b|ASA|aB|a |AS|SA
B b
Computer Science Department
18
Step4: convert it to proper form
𝑺𝟎 AA1 | UB|a |AS|SA
S AA1 | UB|a |AS|SA
A b|AA1|UB|a |AS|SA
B b
A1 SA
U a
2.2 Pushdown Automata (PDA)
PDA is a generalization of NFA.
PDA structure
NFA part
(state diagram)
W string
Input tape (unbounded) Stack
(unbounded)
Read Head Read /write
Head
Computer Science Department
19
PDA can read and write into the stack by popping the symbol in reading and pushing another symbol in writing.
The accept status is reached when the input tape and the stack are empty
Reading ᵋ from input tape or stack means ignoring the reading part.
2.2 Pushdown Automata (PDA)
Formal Definition of PDA
Computer Science Department
20
Formal Definition of PDA
Computer Science Department
21
E.g. the formal description for PDA machine
recognizing the language {0𝑛1𝑛 𝑛 ≥ 0 . Let
M1=( 𝑄, , 𝛤 , 𝛿, 𝑞1, 𝐹 where:
Q={q1,q2,q3,q4}
= 0,1 , 𝛤={0,$}
F={q1,q4} , 𝛿 is givin by the table:
2.2 Pushdown Automata (PDA)
input 0 1 ᵋ
Stack 0 $ ᵋ 0 $ ᵋ
0 $ ᵋ Q1 {(q2,$)}
Q2 {(q2,0)} {(q3,ᵋ)}
Q3 {(q3,ᵋ)} {(q4,ᵋ)}
Q4 Computer Science Department
22
2.2 Pushdown Automata (PDA)
Computer Science Department
23
E.g. M2 recognizes the language
{𝑎𝑖𝑏𝑗𝑐𝑘 𝑖, 𝑗, 𝑘 ≥ 0 𝑎𝑛𝑑 𝑖 = 𝑗 𝑜𝑟 𝑖 = 𝑘
2.2 Pushdown Automata (PDA)
Computer Science Department
24
2.2 Pushdown Automata (PDA)
Computer Science Department
25