2012-08-06 28 views
7

Estoy desarrollando un analizador de C++ (para un IDE), por lo que ahora intento comprender la gramática de C++ en detalles. Aunque encontré una excelente fuente de gramática en http://www.nongnu.org/hcb/, tengo problemas para entender algunas partes de ella, y, especialmente, qué construcciones de lenguaje "real" corresponden a varias producciones.gramática de C++ BNF con ejemplos de análisis/comparación

Así que estoy buscando una guía de gramática C/C++ BNF con ejemplos de código que coincidan con varias producciones/reglas. ¿Hay alguno?

+0

+1 para el enlace. Creo que Eclipse es un IDE de código abierto. ¿Qué tal si echamos un vistazo a su código fuente? – iammilind

+0

@BartKiers Estoy interesado en las construcciones que son comunes tanto para C como para C++, como los declaradores. – intelfx

+0

@intelfx, ah, está bien, pensé que solo estabas interesado en C++. –

Respuesta

7

Una gramática hipervinculada (supuestamente) no es necesariamente una en la que pueda compilar fácilmente un analizador. Eso está determinado por la naturaleza de su motor de análisis sintáctico y por el dialecto real de C y C++ que le interesa (ANSI? GNU? C99? C++ 11? MS?).

Crear un analizador de C++ que funcione es realmente difícil. Vea mi respuesta al Why C++ cannot be parsed with a LR(1) parser? por algunas de las razones. Si quieres un analizador "bueno", te sugiero que uses uno de los existentes. Uno que vale la pena mirar podría ser Elsa, ya que es de código abierto.

+0

Bueno, no es desde cero, ya hay un analizador (el IDE es KDevelop 4), y quería mejorarlo ligeramente. El analizador es (va a ser) C++ 11. Pero gracias por el enlace; Lo veré. – intelfx

+0

... Desafortunadamente, Elsa no es C++ 11. – intelfx

+0

Y, un analizador C++ 11 (incluida la comprobación de tipos) es en realidad * mucho * más trabajo que un analizador C++ 98 (con la comprobación de tipos correspondiente). –

Cuestiones relacionadas