2009-10-15 14 views
11

Me gustaría saber cómo construir un analizador sintáctico en .NET para procesar archivos fuente. Por ejemplo, tal vez podría comenzar aprendiendo cómo analizar SQL o HTML o CSS y luego actuar sobre los resultados para poder formatearlos para su legibilidad o algo similar.Analizador Cómo en .NET

¿Dónde puedo aprender a hacer esto? ¿Hay libros específicos a los que me refiero? ¿Debo aprender sobre lexers/analizadores?

Específicamente para la plataforma .NET ya que estoy cómodo en C#.

Respuesta

17

Yo he encontrado este artículo, Grammars and Parsing with C# 2.0, una gran introducción en la escritura lexers/analizadores, con ejemplos relacionados específicamente con C#.

Escribí a brief blog post al respecto no hace mucho tiempo, haciéndole elogios. Lo bueno es que está muy dirigido a los principiantes completos para analizar la teoría (da los antecedentes de la teoría, así como la implementación), y toma las cosas en pasos graduales. Por supuesto, si desea continuar aprendiendo las ideas más avanzadas del campo, necesitará varios otros recursos, pero creo que esta es una base excelente.

+1

+1. Ese se ve bien. Y definitivamente es un mejor comienzo que sumergirte en un código muy complicado. – Joey

+1

Esto fue genial. ¡Una buena introducción, buenos ejemplos y un poco de C# para unir todo! – Rudy

+0

El enlace está muerto. ¿Alguien todavía tiene el documento? –

2

antlr :)

es una buena manera de aprender acerca de programadores y analizadores

+0

El "inconveniente" (en este caso solamente) de ANTLR es que producirá el analizador para usted, en uno de varios idiomas de destino. Genial, ese suele ser el objetivo, pero en esta situación, SevenCentral se perderá la educación de escribir uno desde cero [para una gramática simple]. – mjv

+0

Una herramienta útil para desarrollar analizadores sintácticos complejos (incluso puede emitir código C#), pero tal vez no sea el mejor enfoque si desea aprender los antecedentes y aspectos básicos. – Noldorin

+0

Creo que es una buena manera de comenzar, tienes un conocimiento práctico de lo que es posible en términos de analizador sintáctico y luego puedes profundizar y construir el tuyo propio si aún quieres, tal vez un simple analizador decente recursivo. –

4

Si quiere aprender a escribir el analizador, esta podría no ser su respuesta, pero si solo quiere analizar y trabajar con los resultados del análisis, debería mirar definitivamente Irony.net. Es un conjunto de herramientas que ayuda a implementar idiomas (con .NET).

0

El mejor libro que he leído para el aprendizaje de los idiomas de análisis es "Little Idiomas"

Little Languages on Amazon

Si usted puede conseguir sus manos en el código fuente de .NET para System.Text.RegularExpressions , también verá una implementación en el mundo real de cómo construir un analizador.

Justin Rogers tiene algunos artículos excelentes sobre cómo construir analizadores genéricos en su blog:

Justin's Blog

Y, por último, si quieres entrar en el nuevo mundo de los analizadores y gramáticas, que realmente debería estar leyendo en 'Oslo' y cómo usar el lenguaje M y MGrammar. Le darán mucha flexibilidad a la hora de analizar y transformar el gráfico de objetos resultante en otras formas utilizables.

Los artículos de Justin son probablemente el más simple y fácil de usar con un analizador sin formato que está construido encima de .NET.

1

C# ha recorrido un largo camino desde 2.0. La reciente adición de árboles de expresiones y el tipado dinámico hace que las cosas sean mucho más interesantes para implementar compiladores.

sobre cómo crear un intérprete en C# 4.0 en CodeProject.com.