commit 2d8b933a598edaa798a38ab6bf0423c16af233ae
parent d1a78f74dfa38310384030820bd7a5994fc12166
Auteur: Loïc Daignault-Pichette <loic@asteride.xyz>
Date: Fri, 7 Jun 2024 17:57:16 -0400
simplification d'aplatir()
Diffstat:
M | aplat.c | | | 53 | ++++++++++++++++++++++------------------------------- |
1 file changed, 22 insertions(+), 31 deletions(-)
diff --git a/aplat.c b/aplat.c
@@ -15,10 +15,11 @@
#define TP_ETQ_TLL 128
#define TP_CTN_TLL 256
-#define JT_OUV 0 /* __00 */
-#define JT_FRM 1 /* __01 */
-#define JT_ATM 2 /* __10 */
-#define JT_FRG 3 /* __11 */
+#define JT_RIEN (-1)
+#define JT_OUV 0
+#define JT_FRM 1
+#define JT_ATM 2
+#define JT_FRG 3
#define DRAP_FRM 1
#define DRAP_OUV 2
@@ -123,11 +124,11 @@ aplatir(FILE *f)
assert(f);
+ jtp = JT_RIEN;
switch (jta = (obt_jeton(f, &tp_etq))) {
case JT_OUV:
prfd = 0;
draps = 0;
- tp = &tp_etq;
break;
case EOF:
return 0;
@@ -137,30 +138,14 @@ aplatir(FILE *f)
return -1;
}
- while ((jtp = jta) != EOF) {
- if (jtp == JT_OUV)
- tp = &tp_etq;
- while ((jta = obt_jeton(f, tp)) == JT_FRG) {
- if (jtp == JT_OUV) {
- fprintf(stderr, _("%s: la taille d'une étiquette "
- "excède la limite de %d octets\n"),
- nom_prog, TP_ETQ_TLL);
- return -1;
- }
- afficher_ligne(&draps, &tp_etq, &tp_ctn);
- }
- switch (jtp) {
+ do {
+ switch (jta) {
case JT_OUV:
prfd++;
- draps |= DRAP_OUV;
- switch (jta) {
- case JT_OUV:
+ tp = &tp_etq;
+ if (jtp == JT_OUV || jtp == JT_ATM)
afficher_ligne(&draps, &tp_etq, &tp_ctn);
- break;
- case JT_ATM:
- tp = &tp_ctn;
- break;
- }
+ draps |= DRAP_OUV;
break;
case JT_FRM:
draps |= DRAP_FRM;
@@ -169,13 +154,19 @@ aplatir(FILE *f)
goto fin;
break;
case JT_ATM:
- if (jta == JT_OUV)
- afficher_ligne(&draps, &tp_etq, &tp_ctn);
+ tp = &tp_ctn;
break;
- default:
- assert(0);
+ case JT_FRG:
+ if (jtp == JT_OUV) {
+ fprintf(stderr, _("%s: la taille d'une étiquette "
+ "excède la limite de %d octets\n"),
+ nom_prog, TP_ETQ_TLL);
+ return -1;
+ }
+ afficher_ligne(&draps, &tp_etq, &tp_ctn);
}
- }
+ jtp = jta;
+ } while ((jta = obt_jeton(f, tp)) != EOF);
fprintf(stderr, _("%s: parenthèses déséquilibrées\n"), nom_prog);
return -1;