forked from PhVerkerk/Collatinus-11
/
syntaxe.h
89 lines (72 loc) · 1.81 KB
/
syntaxe.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/* syntaxe.h */
/*
Module d'analyse syntaxique.
Une règle a deux membres : père et fils
Une expression peut avoir trois membres ou plus. Exemple :
nominatif + datif + sum
On résout en posant une règle supplémentaire
sumDatif:
- fils datif
- sum père d'un sujet au nominatif.
Algo : toujours envisager le mot cliqué comme sub. Recherche
vers la gauche, puis vers la droite.
- si on rencontre le super immédiatement à gauche ou à droite,
on peut renvoyer le résultat.
- si l'élément n'est pas le super, on passe la main à cet
élément, qui doit chercher un père à son tour.
- si le père est trouvé, on considère l'élément étranger comme
résolu, et on reprend la recherche précédente.
*/
#ifndef SYNTAXE_H
#define SYNTAXE_H
#include <QString>
#include "lemmatiseur.h"
class RegleS;
class ElS: public QObject
{
Q_OBJECT
private:
RegleS *_regle;
QStringList _lemmes;
QStringList _pos;
QStringList _morphos;
public:
ElS(QString lin, RegleS *parent);
};
class RegleS: public QObject
{
Q_OBJECT
private:
QString _accord;
QString _doc;
QString _id;
QString _idPere;
RegleS *_pere;
QString _sens;
ElS *_super;
ElS *_sub;
QString _tr;
public:
RegleS (QStringList lignes);
bool estSub(QString m);
bool estSuper(QString m);
};
class Syntaxe: public QObject
{
Q_OBJECT
private:
Lemmat *_lemmatiseur;
QList<RegleS*> _regles;
QString _texte;
// variables motCour
QString _motCour;
QString _lemCour;
QString _posCour;
QString _morphCour;
public:
Syntaxe (QString t, Lemmat *parent);
QString analyse(QString t, int p);
QString motSous(int p);
void setText(QString t);
};
#endif