Bonjour,

Je suis déjà venu ici pour trouver l'aide nécessaire à la réalisation d'un Parser, chose réussie d'ailleurs. Cependant, cet élément seul ne me permettait aucune vérification de résultat, et rendait donc la fonction peu stable, et peu facile à gérer au niveau des Exceptions.

De ce fait, je doit revoir mon analyse de texte sur plusieurs niveaux au lieu d'un seul.

A l'origine j'avais un parcours du texte caractère par caractère pour générer une requête SQL directement (mauvaise option)

Maintenant, je dispose d'une fonction permettant la génération d'un Tableau contenant les différents éléments de mon texte :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
    Private Function AnalyserMotsCles2(ByRef strRequete As String, ByRef tabStockage() As String) As Boolean
        Dim strMotsCles As String = ""
        Dim intVerifParentheses As Integer = 0
        Dim bTmp As Boolean = False
        Dim i As Integer = -1
 
        'Parcours du contenu de la TextBox caractère par caractère
        For Each c As Char In Me.TB_CRITERES.Text
            If i < 100 Then
                Select Case c
                    Case "+"
                        i += 1
                        tabStockage(i) = c
                        bTmp = True
                    Case "-"
                        i += 1
                        tabStockage(i) = c
                        bTmp = True
                    Case "&"
                        i += 1
                        tabStockage(i) = c
                        bTmp = True
                    Case "("
                        i += 1
                        tabStockage(i) = c
                        bTmp = True
                    Case ")"
                        i += 1
                        tabStockage(i) = c
                        bTmp = True
                    Case Else
                        If bTmp = True Then
                            i += 1
                            bTmp = False
                        End If
                        strMotsCles += c
                        tabStockage(i) = strMotsCles
                End Select
            Else
                MsgBox("Nombre de paramètres trop importants")
                Return 0
            End If
        Next
Return 1
    End Function
Ceci met donc les éléments dans le tableau comme suis :
Case n°1 : "("
Case n°2 : "mot1"
Case n°3 : "-"
Case n°4 : "mot2"
Etc...

Il faudrait ensuite, que je transforme ce tableau en une sorte d'arbre de syntaxe abstraite, par plusieurs parcours du tableau.
(Chose qui est bien abstraite à mes yeux, c'est le cas de le dire )

De cet arbre, je devrait parcourir sa composition pour en générer une requête SQL (dynamique donc). Enfin sur ce plan, je pense pouvoir y parvenir dès le moment où je saurais comment générer l'arbre. Enfin j'espère.


En bref, j'aimerais savoir si quelqu'un saurait m'orienter vers la génération de cet arbre 'virtuel', si je puis dire. N'hésitez pas à demander un peu plus de précision la ou j'en ai manqué.

Merci d'avance