c# - tutorial - yacc example program
¿C#tiene puerto(directo) flex/yacc? ¿O qué lexer/parser usa la gente para C#? (3)
Creo que su mejor apuesta será GPLEX / GPPG, es lo más cercano a Yacc / Lex para C # que conozco, y tendrá que trasladar sus acciones a C # independientemente.
También he usado Coco / R, ANTLR (por supuesto) y, más recientemente, he jugado con Irony.net, fslex / fsyacc (F #) y fparsec (F #).
Aquí hay algunos enlaces.
Generador de analizador Gardens Point
No tengo una razón técnica para usar uno contra otro: juego con estos principalmente por diversión. Creé algunos DSL para proyectos de trabajo hace muchos años, pero realicé los escáneres / analizadores en esos (en ese entonces estaba trabajando principalmente en Pascal, y descubrí que TP Lex / Yacc no se adaptaba a mis gustos, y los DSL eran bastante simples). Descubrí que el FParsec y la Ironía se adaptan mejor a mis gustos, ya que el otro me parece algo "desordenado" (sin elegancia).
Puede que esté equivocado, pero parece que no hay un puerto directo de flex / bison (lex / yacc) para C # / .NET hasta ahora.
Para el analizador LALR, encontré GPPG / GPLEX, y para el analizador LL, está el famoso ANTLR. Pero, quiero reutilizar mi gramática flex / bisonte tanto como sea posible.
- ¿Hay algún puerto directo de flex / bison para C #?
- ¿Qué personas lexer / parser usan normalmente para C #? ¿Hay alguna razón para esa elección?
Eche un vistazo a las extensiones "Managed babel", hay un puerto bastante clásico de lex y yacc.
http://msdn.microsoft.com/en-us/library/bb165037(VS.80).aspx
ANTLR es un generador de analizador / lexer muy maduro (y asombroso). Originalmente produjo código Java, pero ahora puede apuntar a varios idiomas, incluido C # .