TODO state machine

This commit is contained in:
MAO Dongyang 2023-03-05 18:09:01 +01:00
parent e63380461d
commit d34936b229
No known key found for this signature in database
7 changed files with 84 additions and 0 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

BIN
TP1/.DS_Store vendored Normal file

Binary file not shown.

5
TP1/parseur/.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,5 @@
{
"files.associations": {
"stdio.h": "c"
}
}

61
TP1/parseur/main.c Normal file
View File

@ -0,0 +1,61 @@
#include <stdio.h>
#include "main.h"
enum Etats curEtat;
FILE *fp;
void AnalyseFicher(const char *nomFichier) {
fp = fopen(*nomFichier, "rt");
char c;
while ((c=fgetc(fp)) != EOF)
{
enum EEtat ret = AnalyseProchaineBalise(c);
if (ret == EEtatErreur) {
printf("Error");
break;
}
if (ret = EEtatTermine){
}
}
}
enum EEtat AnalyseProchaineBalise(char c) {
switch (curEtat)
{
case SEtatDebut:
if (c == '<') {
curEtat = SEtat1;
}
break;
case SEtat1:
if (c == '/') {
curEtat = SEtat2;
} else {
curEtat = SEtat3;
}
break;
case SEtat2:
if (c == '>') {
curEtat = SEtatFin;
}
break;
case SEtat3:
if (c == '>') {
curEtat = SEtatFin;
}
break;
case SEtatFin:
break;
default:
break;
}
}
int main()
{
curEtat = SEtatDebut;
return 0;
}

18
TP1/parseur/main.h Normal file
View File

@ -0,0 +1,18 @@
enum Etats
{
SEtatDebut,
SEtat1,
SEtat2,
SEtat3,
SEtatFin
};
enum EEtat
{
EEtatErreur,
EEtatTermine,
EEtatContinue
};
void PileInit();
void PilePush();

BIN
TP1/read_file/a.out Executable file

Binary file not shown.

BIN
TP1/read_file/main Executable file

Binary file not shown.