tentatives de strategie de parsing
This commit is contained in:
225
README.md
225
README.md
@@ -38,6 +38,8 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## parsing :
|
||||||
|
|
||||||
[methode arbre binaire :](https://fr.wikipedia.org/wiki/Arbre_binaire#Transformation_d'un_arbre_quelconque_en_un_arbre_binaire)
|
[methode arbre binaire :](https://fr.wikipedia.org/wiki/Arbre_binaire#Transformation_d'un_arbre_quelconque_en_un_arbre_binaire)
|
||||||
|
|
||||||
```
|
```
|
||||||
@@ -53,30 +55,221 @@ EXEMPLE :
|
|||||||
|
|
||||||
ARCHITECTURE :
|
ARCHITECTURE :
|
||||||
all
|
all
|
||||||
|
expend $
|
||||||
. pipes
|
. pipes
|
||||||
. . redirections (program or file)
|
. . redirections (program function or file)
|
||||||
. . . arguments (nom arg arg arg ...)
|
. . . arguments (nom arg arg arg ...)
|
||||||
. . . . special characters ($)
|
. . . .
|
||||||
. . . . .
|
EXEMPLE : . .
|
||||||
EXEMPLE : . . .
|
|
||||||
[sort < ./prgrm 'arg1 '$VARIABLE" arg3" | grep "word.$EXTENSION" | wc -l > file]
|
[sort < ./prgrm 'arg1 '$VARIABLE" arg3" | grep "word.$EXTENSION" | wc -l > file]
|
||||||
. [sort < ./prgrm 'arg1 '$VARIABLE" arg3"]
|
[sort < ./prgrm 'arg1 'arg2" arg3" | grep "word.md" | wc -l > file]
|
||||||
. . [sort] .
|
. [sort < ./prgrm 'arg1 'arg2" arg3"]
|
||||||
. . [./prgrm 'arg1 '$VARIABLE" arg3"]
|
. . [sort]
|
||||||
|
. . [./prgrm 'arg1 'arg2" arg3"]
|
||||||
. . . [./prgrm]
|
. . . [./prgrm]
|
||||||
. . . ['arg1 ']
|
. . . ['arg1 ']
|
||||||
. . . [$VARIABLE]
|
. . . [arg2]
|
||||||
. . . . [$VARIABLE]
|
|
||||||
. . . [" arg3"]
|
. . . [" arg3"]
|
||||||
. [grep "word.$EXTENSION"]
|
. [grep "word.md"]
|
||||||
. . . [grep]
|
. . . [grep]
|
||||||
. . . ["word.$EXTENSION"]
|
. . . ["word.md"]
|
||||||
. . . . [$EXTENSION]
|
|
||||||
. [wc -l > file]
|
. [wc -l > file]
|
||||||
. . [wc -l] .
|
. . [wc -l]
|
||||||
. . . [wc].
|
. . . [wc]
|
||||||
. . . [-l].
|
. . . [-l]
|
||||||
. . [file] .
|
. . [file]
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## separer arguments :
|
||||||
|
|
||||||
|
- 'arg1 'arg2" arg3"
|
||||||
|
- 'a"r'g'"1'
|
||||||
|
- 'arg"1"'arg2'arg3'
|
||||||
|
|
||||||
|
```
|
||||||
|
int q; // first quote
|
||||||
|
int c; // count
|
||||||
|
int i;
|
||||||
|
|
||||||
|
q = 0;
|
||||||
|
c = 0;
|
||||||
|
i = 0;
|
||||||
|
while (str[i])
|
||||||
|
{
|
||||||
|
if (str[i] == ''')
|
||||||
|
{
|
||||||
|
if (q == ''')
|
||||||
|
{
|
||||||
|
c--;
|
||||||
|
if (c == 0)
|
||||||
|
{
|
||||||
|
q = 0;
|
||||||
|
create_new_substr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
c++;
|
||||||
|
if (q == 0)
|
||||||
|
q = ''';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (str[i] == '"')
|
||||||
|
{
|
||||||
|
if (q == '"')
|
||||||
|
{
|
||||||
|
c--;
|
||||||
|
if (c == 0)
|
||||||
|
{
|
||||||
|
q = 0;
|
||||||
|
create_new_substr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
c++;
|
||||||
|
if (q == 0)
|
||||||
|
q = '"';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
['][a][r][g][1][ ]['][a][r][g][2]["][ ][a][r][g][3]["]
|
||||||
|
c = 0 . . . . . . . . . . . . . . . . . .
|
||||||
|
c = 1 . . . . . . . . . . . . . . . . . str[i] == ' ; q == 0 c == 0 -> c++; q = '
|
||||||
|
c = . 1 . . . . . . . . . . . . . . . . str[i] != ' | " ; ->
|
||||||
|
c = . . 1 . . . . . . . . . . . . . . . str[i] != ' | " ; ->
|
||||||
|
c = . . . 1 . . . . . . . . . . . . . . str[i] != ' | " ; ->
|
||||||
|
c = . . . . 1 . . . . . . . . . . . . . str[i] != ' | " ; ->
|
||||||
|
c = . . . . . 1 . . . . . . . . . . . . str[i] != ' | " ; ->
|
||||||
|
c = . . . . . . 0 . . . . . . . . . . . str[i] == ' ; q == ' c == 1 -> c--; q = 0;
|
||||||
|
arg1 = [a][r][g][1][ ]
|
||||||
|
c = . . . . . . . 0 . . . . . . . . . . str[i] != ' | " ; ->
|
||||||
|
c = . . . . . . . . 0 . . . . . . . . . str[i] != ' | " ; ->
|
||||||
|
c = . . . . . . . . . 0 . . . . . . . . str[i] != ' | " ; ->
|
||||||
|
c = . . . . . . . . . . 0 . . . . . . . str[i] != ' | " ; ->
|
||||||
|
c = . . . . . . . . . . . 1 . . . . . . str[i] == " ; q != " c == 0 -> c++; q = ";
|
||||||
|
arg2 = [a][r][g][2]
|
||||||
|
c = . . . . . . . . . . . . 1 . . . . . str[i] != ' | " ; ->
|
||||||
|
c = . . . . . . . . . . . . . 1 . . . . str[i] != ' | " ; ->
|
||||||
|
c = . . . . . . . . . . . . . . 1 . . . str[i] != ' | " ; ->
|
||||||
|
c = . . . . . . . . . . . . . . . 1 . . str[i] != ' | " ; ->
|
||||||
|
c = . . . . . . . . . . . . . . . . 1 . str[i] != ' | " ; ->
|
||||||
|
c = . . . . . . . . . . . . . . . . . 0 str[i] == " ; q == " c == 1 -> c--; q = 0;
|
||||||
|
arg3 = [ ][a][r][g][3]
|
||||||
|
|
||||||
|
['][a]["][r]['][g][']["][1][']
|
||||||
|
c = 0 . . . . . . . . . .
|
||||||
|
c = 1 . . . . . . . . . str[i] == ' ; q == 0 c == 0 -> c++; q = '
|
||||||
|
c = . 1 . . . . . . . . str[i] != ' | " ; ->
|
||||||
|
c = . . 2 . . . . . . . str[i] == " ; q != " c == 1 -> c++;
|
||||||
|
c = . . . 2 . . . . . . str[i] != ' | " ; ->
|
||||||
|
c = . . . . 3 . . . . . str[i] == ' | " ; q == ' c == 2 -> c++;
|
||||||
|
c = . . . . . 3 . . . . str[i] != ' | " ; ->
|
||||||
|
c = . . . . . . 2 . . . str[i] == ' ; q == ' c == 3 -> c--; q = 0;
|
||||||
|
c = . . . . . . . 1 . . str[i] == " ; q != " c == 2 ->
|
||||||
|
ERROR ...
|
||||||
|
c = . . . . . . . . 1 . str[i] != ' | " ; ->
|
||||||
|
c = . . . . . . . . . 0 str[i] != ' | " ; ->
|
||||||
|
|
||||||
|
-> comment le programme sait que cette fois il doit decrementer "c" ?
|
||||||
|
en retenant dans l'ordre toutes les dernieres valeurs de "q" !
|
||||||
|
-> donc plutot partir sur une recursive
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
deuxieme methode :
|
||||||
|
```
|
||||||
|
.--------------------------------------------.
|
||||||
|
: .--------------------------------------. :
|
||||||
|
: : .--------------------------------. : :
|
||||||
|
: : : .--------. .--------. : : :
|
||||||
|
: : : .--. : .--. : : .--. : : : :
|
||||||
|
'__"__'__"__"__"__'__'__"__"__'__'__"__'__"__'
|
||||||
|
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16
|
||||||
|
|
||||||
|
|
||||||
|
piege :
|
||||||
|
| |
|
||||||
|
.--. .--. v v .--.
|
||||||
|
'__"__'__"__"__"__'__'__"__"__'__'__"__'__"__'
|
||||||
|
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15
|
||||||
|
|
||||||
|
|
||||||
|
.--.
|
||||||
|
1 : '__"__'__"__"__"__'__'__"__"__'__'__"__'__"__'
|
||||||
|
|
||||||
|
.--.
|
||||||
|
2 : '__"__'________"__'__'__"__"__'__'__"__'__"__'
|
||||||
|
|
||||||
|
.--------.
|
||||||
|
3 : '__"__'________"________"__"__'__'__"__'__"__'
|
||||||
|
|
||||||
|
.--.
|
||||||
|
4 : '__"__'____________________"__'__'__"__'__"__'
|
||||||
|
|
||||||
|
.--------.
|
||||||
|
5 : '__"__'____________________"________"__'__"__'
|
||||||
|
|
||||||
|
.--------------------------------.
|
||||||
|
6 : '__"__'________________________________'__"__'
|
||||||
|
|
||||||
|
.--------------------------------------.
|
||||||
|
7 : '__"______________________________________"__'
|
||||||
|
|
||||||
|
.--------------------------------------------.
|
||||||
|
8 : '____________________________________________'
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
comportement reel :
|
||||||
|
|
||||||
|
```
|
||||||
|
echo "_"
|
||||||
|
_
|
||||||
|
|
||||||
|
echo "_'_'_"
|
||||||
|
_'_'_
|
||||||
|
|
||||||
|
echo "_'_"_"_'_"
|
||||||
|
_'___'_
|
||||||
|
|
||||||
|
echo "_'_"_'_'_"_'_"
|
||||||
|
_'_____'_
|
||||||
|
|
||||||
|
echo "_'_"_'_"_"_'_"_'_"
|
||||||
|
_'___"_"___'_
|
||||||
|
|
||||||
|
echo "_'_"_"_"_"_'_"
|
||||||
|
_'_____'_
|
||||||
|
|
||||||
|
echo "_'_"_'_"_"_"_"_'_"_'_"
|
||||||
|
_'___"_"_"_"___'_
|
||||||
|
|
||||||
|
echo "_'_"_'_"_'_'_"_'_"_'_"
|
||||||
|
_'___"___"___'_
|
||||||
|
|
||||||
|
echo "_'_"_'_"_'_"_"_'_"_'_"_'_"
|
||||||
|
_'___"_____"___'_
|
||||||
|
|
||||||
|
echo "_'_"_'_"_'_"_'_'_"_'_"_'_"_'_"
|
||||||
|
_'___"___'_'___"___'_
|
||||||
|
|
||||||
|
echo "_'_"_'_"_'_"_'_"_"_'_"_'_"_'_"_'_"
|
||||||
|
_'___"___'___'___"___'_
|
||||||
|
|
||||||
|
echo "_'_"_'_"_'_"_'_"_'_'_"_'_"_'_"_'_"_'_"
|
||||||
|
_'___"___'_____'___"___'_
|
||||||
|
|
||||||
|
echo "_'_"_'_"_'_"_'_"_'_"_"_'_"_'_"_'_"_'_"_'_"
|
||||||
|
_'___"___'___"_"___'___"___'_
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
Reference in New Issue
Block a user