règles de syntaxe : < ifelse >, < if >, < else >
symbole non terminaux : < instruction >, < condition >
symbole terminaux: if, else, ;, {, }
GN = (
{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",} /* termiaux */
{ < nombre >, < chiffre > }, /* non terminaux */
{ /* production */
< nombre > ::= (< nombre > | )< chiffre >
< chiffre > ::= "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
}
< nombre > /* axiome */
)
GN = (
{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "+"} /* termiaux */
{ < nombre >, < chiffre >, < signe > }, /* non terminaux */
{ /* production */
< nombre > ::= < signe > < nombre > < chiffre > | < signe >< chiffre > | < chiffre >
< signe > ::= "+" | "-"
< chiffre > ::= "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "0"
}
< nombre > /* axiome */
)
GN = (
{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-"} /* termiaux */
{ < nombre >, < chiffre >, < signe > }, /* non terminaux */
{ /* production */
< nombre > ::= [ < signe > ] {< chiffre >}
< signe > ::= "-"
< chiffre > ::= "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
}
< nombre > /* axiome */
)
La voiture roule. La moto roule. Une voiture roule. Une moto roule. La voiture est. La moto est. Une voiture est. Une moto est. La voiture roule bien. La moto roule bien. Une voiture roule bien. Une moto roule bien. La voiture roule bleue. La moto roule bleue. Une voiture roule bleue. Une moto roule bleue. La voiture est bien. La moto est bien. La voiture est bleue. La moto est bleue. Une voiture est bien. Une moto est bien. Une voiture est bleue. UNe moto est bleue.
EBNF ( présence du raccourice [])
GB = (
{
< mot >: < mot >< chiffre >
< chiffre >: "0" | "1"
},
{"0", "1"},
{},
{< mot >}
)
type 3 : règulière à gauche. (Mot -> Mot 0 | Mot 1)
Autre solution :
S --> 0|1B
B --> 0B|1B|*e*
type trois, régulière à droite
S --> 0B|1B
B --> 0B|1B|*e*
type trois, régulière à droite
Non. Car S -> aS (grammaire régulière à droite).
a, ε, aab, aabab, aababab ....
Oui.
Tout ensemble de a et b en contenant au moins un. (a, b, ab, ba, abab, aabb, abba, ......... )
S -> aS0
S -> TF
S -> a
S0 -> TF
S0 -> a
T -> T0b
T -> b
T0 -> ε
T0 -> b
F -> TS
G : (
{
< exp > : < nombre > "cat" < nombre > "=" <nombre><nombre>
< nombre > : < nombre > 1
},
{
"cat", "=", 1
},
{},
{< exp >}
)
Ou
Exp -> Nb "cat" Nb "=" Nb
Nb -> Nb 1
S -> (Opérateur T T)
T -> S | N
Opérateur -> + | - | * | /
N -> N0 | N1 | N2 | N3 | N4 | N5 | N6 | N7 | N8 | N9
Dans le sens ou la grammaire défini ne contient que les 4 opérateurs, les (), l'espace et les chiffres, l'automates est finis.
Expr -> nb * Fact
Fact -> nb * Fact
Fact -> nb
- table:
* | nb | $ | Fact | ||
---|---|---|---|---|---|
0 | s1 | acc | |||
1 | s2 | acc | 3 | ||
3 | r0 |
1*5*5
1 nb. s1
1: *5*5
* *. 5*5 Fact
1*2+2*3 -> Expr.
Premier(1*2+2*3) = 1*
Expr(nb * ) -> nb * Fact
pile:
1* |
$ |
2+2*3 -> Fact.
Premier(2+) = 2+
Fact(nb + ) -> NO RULES
pile:
1* |
$ |
Expr -> (Expr)
Expr -> Fact * Expr
Expr -> Fact + Expr
Expr -> Fact
Fact -> Sum * Fact
Fact -> Sum
Fact -> (Fact)
Sum -> nb
Sum -> (Sum)
Sum -> nb + Sum
Premier( (Expr) ) = (
Premier( Fact * Expr ) = Fact *
Premier( Fact + Expr ) = Fact +
Premier( Sum * Fact ) = Sum *
Premier( Sum ) = Sum
Premier( (Fact) ) = (
Premier( nb ) = nb
Premier( (Sum) ) = (
Premier( nb + Sum ) = nb +
( | nb | Sum | Fact * | Sum * | Fact + | nb + | |
---|---|---|---|---|---|---|---|
Expr | Expr -> ( Expr ) | Expr -> Fact * Expr | Expr -> Sum + Expr | ||||
Fact | Fact -> ( Fact ) | Fact -> Sum | Fact -> Sum * Fact | ||||
Sum | Sum -> ( Sum ) | Sum -> nb | Sum -> nb + Sum |
(1*5*5) -> Expr
Premier (1*5*5) = (
Expr -> (Expr)
pile:
) |
Expr |
( |
$ |
1*5*5) -> Expr
Premier 1*5*5) = 1*
Expr * -> Fact * Expr
pile:
) |
Expr |
* |
Fact |
( |
$ |
1 -> Fact
5*5) -> Expr
Premier 1 = 1
Premier 5*5) = 5*
Fact -> Sum -> nb
Expr -> Fact * Expr
pile:
) |
Expr |
Fact |
* |
nb=1 |
( |
$ |
5 -> Fact
5) -> Expr
Premier 5 = 5
Premier 5) = 5
Fact -> Sum -> nb
Expr -> Fact -> Sum -> nb
pile:
) |
nb=5 |
* |
nb=5 |
* |
nb=1 |
( |
$ |
G:
E' -> E
E -> E+T
E -> T
T -> F
T -> T*F
F -> (E)
F -> id
ε | |||
---|---|---|---|
E' | E' -> E | ||
E | E -> T | ||
T | T -> F | ||
F |