-
Parser une expression
Bonjour,
J'aimerais parser une expression qui est une condition d'un langage de programmation, ceci afin de la traduire dans un autre langage. En cherchant sur le web, j'ai découvert que les outils lex et yacc permettent justement de faire ce genre de choses. Pensez-vous que ces outils peuvent m'aider à résoudre mon problème ou me conseilleriez-vous une autre technique ?
Je n'ai jamais utilisé ces outils, ni même compilé de programme en c (je suis un programmeur .net). J'aimerais donc bien partir d'un exemple similaire à mon problème pour comprendre comment les choses fonctionnent.
Tous les conseils pour m'aider à débuter avec ces outils et le c sont les bienvenus.
Merci d'avance,
mathmax
-
Cela dépend de la complexité du langage pour lequel tu désires construire un analyseur syntaxique. Dans certains cas, il peut être pertinant d'implanter son parseur à la main plutôt qu'à l'aide de lex et de yacc (ou flex et bison).
Thierry
-
Il s'agit de parser une condition du langage CA-Clipper en clause WHERE SQL.
Un exemple de traduction serait
Code:
("Mart" $ Customers->Name .and. Orders->Price >= 120) .or. Oders->Date = ctod("18/06/08")
qui sera traduit en :
Code:
where exists (select 0 from Customers as C, Orders as O where C.Id = O.Customers_Id and (C.Name like "%Mart%" and O.Price >= 120) or O.Date = #18/06/08#)
-
Un conseil pour m'aider à construire ce parser ? Utilisation de lex et yacc ?