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)
|
||||
|
||||
```
|
||||
@@ -53,30 +55,221 @@ EXEMPLE :
|
||||
|
||||
ARCHITECTURE :
|
||||
all
|
||||
expend $
|
||||
. pipes
|
||||
. . redirections (program or file)
|
||||
. . redirections (program function or file)
|
||||
. . . 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"]
|
||||
. . [sort] .
|
||||
. . [./prgrm 'arg1 '$VARIABLE" arg3"]
|
||||
[sort < ./prgrm 'arg1 'arg2" arg3" | grep "word.md" | wc -l > file]
|
||||
. [sort < ./prgrm 'arg1 'arg2" arg3"]
|
||||
. . [sort]
|
||||
. . [./prgrm 'arg1 'arg2" arg3"]
|
||||
. . . [./prgrm]
|
||||
. . . ['arg1 ']
|
||||
. . . [$VARIABLE]
|
||||
. . . . [$VARIABLE]
|
||||
. . . [arg2]
|
||||
. . . [" arg3"]
|
||||
. [grep "word.$EXTENSION"]
|
||||
. [grep "word.md"]
|
||||
. . . [grep]
|
||||
. . . ["word.$EXTENSION"]
|
||||
. . . . [$EXTENSION]
|
||||
. . . ["word.md"]
|
||||
. [wc -l > file]
|
||||
. . [wc -l] .
|
||||
. . . [wc].
|
||||
. . . [-l].
|
||||
. . [file] .
|
||||
. . [wc -l]
|
||||
. . . [wc]
|
||||
. . . [-l]
|
||||
. . [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