.
([]{<<>>}([(){<>}]))
"([]{<<>>}([(){<>}]))
-2> ( {<<>>}([(){<>}]))
({<
>}([(){<>}]))
-4> ({ }([(){<>}]))
-3> ( ([(){<>}]))
(([ {<>}]))
-4> (([{
}]))
-3> (([ ]))
-2> (( ))
-1> ( )
-1> ε (
[]
{<
<>
>}([
()
{
<>
}]))
(
{<
>}([
{ }]))
( {
}([
]))
3
2
(
(
))
(
)
S -> aBSc
S -> abc
Ba -> aB
Bb -> bb
S -> aBSc -> aBaBScc
-> aBaBaBSccc
->
et en général -> (aB)nScn
par la règle 1.S
il faut employer la règle 2 :
-> (aB)n
abc
cn
B
, il faut les amener à
des positions où ils n'ont que des b
à leur droite,aa
n
Bnbccn
, et par la règle 4 à aa
n
bnbccn
.a
n
bncn
| n
>0}.http://ozark.hendrix.edu/~burch/socs/written/text/v1.pdf
uAv
-> uxv
,
où u
et v
sont des mots quelconques x
est un mot quelconque non-vide A
est un symbole
non-terminal.x
entraîne que u
et v
sont
interprétés comme A
peut se réécrire en x
.Ba -> aB
, qui n'est pas de la forme
requise.a
n
bncn
| n
>0}, S -> aSBC
S -> aBC
CB -> HB
HB -> HC
HC -> BC
aB -> ab
bB -> bb
bC -> bc
cC -> cc
aaabbbccc
"
(n
= 3). S
(départ) aSBC
(1) aaSBCBC
(1) aaaBCBCBC
(2) aaaBHBCBC
(3) aaaBHCCBC
(4) aaaBBCCBC
(5) aaaBBCHBC
(3) aaaBBCHCC
(4) aaaBBCBCC
(5) aaaBBHBCC
(3) aaaBBHCCC
(4) aaaBBBCCC
(5) aaabBBCCC
(6) aaabbBCCC
(7) aaabbbCCC
(7) aaabbbcCC
(8) aaabbbccC
(9) aaabbbccc
(9) CB ->* BC
, par CB
-3> HB -4> HC -5> BC
.AB → CD
A → BC
A → B
A → a
anbncndn
| n>0} anbncn
| n
>0}.S → abcd
S → aXbcd
Xb → bX
Xc → bYc
Yc → cY
Yd → Rcdd
cR → Rc
bR → Rb
aR → aaX
aR →
aa
aaabbbcccddd
" (n = 3)
:S
-2>
aXbcd
(parce
qu'on ne veut pas se contenter de "abcd
")-3> abXcd
-4> abbYcd
-5> abbcYd
-6> abbcRcdd
-7> abbRccdd
-8> abRbccdd
-8> aRbbccdd
-9> aaXbbccdd
-3> aabXbccdd
-3> aabbXccdd
-4> aabbbYccdd
-5> aabbbcYcdd
-5> aabbbccYdd
-6> aabbbccRcddd
-7> aabbbcRccddd
-7> aabbbRcccddd
-8> aabbRbcccddd
-8> aabRbbcccddd
-8> aaRbbbcccddd
-10> aaabbbcccddd
aR
" apparaît
: soit on fait disparaître le non-terminal R par la règle 10b
, c
, tantôt un d
et enfin un a
.a
, b
}*}S
->
ABC
AB ->
aAD
AB ->
bAE
DC ->
BaC
EC ->
BbC
Da ->
aD
Db ->
bD
Ea ->
aE
Eb ->
bE
AB -> ε
C -> ε
aB -> Ba
bB -> Bb
abbabb
"S -1> ABC
-2> aADC
(on veut un
mot qui commence par a
, pas par b
)-4> aABaC
-3> abAEaC
(après
le a
on veut un b
,
pas un a
)-8> abAaEC
-5> abAaBbC
-12> abABabC
-3> abbAEabC
(on veut
encore
un b
, pas
un a
)-8> abbAaEbC
-9> abbAabEC
-5> abbAabBbC
-13> abbAaBbbC
-12> abbABabbC
-10> abbabbC
-11> abbabb
a
l'autre un b
B
, D
et E
a pour rôle de construire lettre
à lettre le même mot a
est produit à gauche (par
la règle 2) le non-terminal D
fait
apparaître un a
de l'autre côté,b
qui est produit à
gauche (par la règle 3) le non-terminal E
s'en
va pondre un b
AB
C
marque
"la fin du chantier" où sont déposés les matériaux fournis A
, B
et C
disparaissent par les règles 10
et 11.aibjck
| 1≤ i ≤ j ≤ k}S
->
aTbX
S
->
abX
T
->
aTbC
T
->
TbC
T
->
TC
T
-> bC
T
-> C
Cb
->
bC
CX
->
Xc
X
->
c
a,
b, c
}* | #(a) = #(b) = #(c)
}, #(a)
" désigne le nombre
d'occurrences de la lettre a
dans le
mot w, etc.a
que
de b
et que de c
.S
->
ABC
S
->
ABCS
AB
->
BA
AC
->
CA
BC
->
CB
BA
->
AB
CA
->
AC
CB
-> BC
A
->
a
B
-> b
C
->
c
S
-> AB
A
->
aAX
A
-> aX
B ->
bBd
B ->
bYd
Xb
->
bX
XY->
Yc
Y ->
ε
#(a)
= #(b) = #(c)
",An example of a context-sensitive language that is not context-free is L = { ap : p is a prime number }.
L can be shown to be a context-sensitive language by constructing a linear bounded automaton which accepts L.
An example of recursive language that is not context-sensitive is any recursive language whose decision is an EXPSPACE-hard problem,
say, the set of pairs of equivalent regular expressions with exponentiation.
e.e
" on autorise à écrire "e2",
yx*xy*x=yx2x*∪yxyy*x∪yx2x*yy*x
fait partie de ce langage.x
porté n fois au carré" s'écrit
en longueur n+1 et représente en notation ordinaire une chaîne
de 2n fois x
],