Bonjour,
pour parser une chaîne, j'avais sorti l'artillerie lourde ocamllex/ocamlyacc. À présent, je pense que ce serait une meilleure idée d'utiliser Genlex qui serait plus léger.
Voici le genre de chaînes que je souhaite parser :
Ce sont en fait des champs de certificats. Ici, ce qui m'intéresse, c'est de récupérer la valeur du champ Common Name.
Code : Sélectionner tout - Visualiser dans une fenêtre à part "/C=FR/ST=Idf/L=Paris/O=Organisation/OU=OrgaUnit/CN=Your name/emailAddress=admin@mail.com"
Mais le fonctionnement de Genlex m'échappe. Sur la page de genlex, il y a un code d'exemple pour une calculatrice :
Or, que ce soit ce code ou d'autres trouvés sur code search, je ne parviens pas à compiler ce code, j'ai toujours une erreur de syntaxe ici [< 'Int n >] -> n
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 let lexer = make_lexer ["+";"-";"*";"/";"let";"="; "("; ")"] let parse_expr = parser [< 'Int n >] -> n | [< 'Kwd "("; n = parse_expr; 'Kwd ")" >] -> n | [< n1 = parse_expr; n2 = parse_remainder n1 >] -> n2 and parse_remainder n1 = parser [< 'Kwd "+"; n2 = parse_expr >] -> n1+n2 | ...
Que faut-il faire pour résoudre cette erreur ?
Partager