2010-06-15 18 views
6

J'ai utilisé antlr et javacc/freecc pendant un moment. Maintenant, j'ai besoin d'écrire un tas d'analyseurs syntaxiques utilisant antlr, mais ces analyseurs doivent être écrits en ruby ​​lang.Quelle est la meilleure contrepartie à ANTLR pour créer des parseurs dans ruby?

Je ai googlé mais rien trouvé. Y a-t-il un générateur d'analyseur de ruby ​​qui prend des grammaires antlr et crée un analyseur? S'il y en a beaucoup, lequel est le meilleur selon vous?

TIA Paolo

Répondre

1

Vous pouvez également générer l'analyseur avec ANTLR pour Java ou C et l'appeler à partir de votre programme Ruby avec JRuby ou FFI. Cela devrait également vous donner un regain de performance qui pourrait être un gros avantage si vous avez beaucoup d'entrée à analyser.

+0

ahe, c'est exactement ce que je choisis de faire. J'ai lancé un nouveau projet (http://github.com/thesp0nge/mirage) concernant tout ce qui concerne l'analyse du code source. J'écrirai mirage en C en utilisant antlr et je l'appellerai de Ruby. Pour ceux qui sont intéressés, il s'agit d'une réécriture majeure pour le projet Owasp Orizon, un analyseur de code source statique que j'écris (http://github.com/thesp0nge/owasp-orizon/) –

3
+1

Honte à moi. Je n'ai pas vérifié l'endroit approprié d'abord ... la communauté de gemme. Merci beaucoup :-) –

+1

Notez que la cible Ruby livrée avec ANTLR 3.4 est assez cassée. S'il y a des problèmes avec la gemme, la révision de tête du projet sur GitHub semble fonctionner correctement: https://github.com/ohboyohboyohboy/antlr3 –

7
  1. Vous pourriez sortir facilement en utilisant JRuby et la conservation vos analyseurs ANTLR en Java.
  2. Si PEGs sont suffisants pour votre travail, treetop et le plus récent citrus sont des outils communs utilisés par les rubis.
  3. D'autres analyseurs analysés dans le cadre d'un projet sont: peggy, Kanocc, Racc.

Pour mon projet, j'ai choisi la cime des arbres (les agrumes n'étaient pas encore nés).

+0

Merci beaucoup pour vos suggestions :-) –

+2

Le nouveau gamin cool est [Parslet] (http://kschiess.github.com/parslet/index.html) – clyfe