2010-04-27 24 views
12

Estoy buscando la gramática C en el código fuente GCC, más específicamente para la gramática en la forma yacc/bison.Gramática C en código fuente GCC

+6

¿Eso es más una afirmación que una pregunta? (Decidí corresponder al formular mi declaración como una pregunta. ¡Diversión!) –

+0

¿Intentaron buscar en Google? Busqué "c yacc gramática" y se me ocurrió http://www.lysator.liu.se/c/ANSI-C-grammar-y.html entre muchos otros éxitos. –

+0

@Neil, quizás no es a lo que se refería Hurkai, pero GCC tiene algunas extensiones C, y la gramática C genérica no encajaría con precisión. –

Respuesta

12

encontrado la gramática C en la especificación Yacc en la versión GCC 3.3 en el archivo "c-parse.y"

+2

http://yaxx.googlecode.com/svn/branches/yaxx-proc/gcc-3.4.0/gcc/c-parse.y –

7

GCC de la versión 4.3 no contiene gramática C explícitamente escrita. El análisis sintáctico y semántico se realizó simultáneamente, sin presentar el árbol de sintaxis como una estructura de datos separada.

Fuente de información: He leído el código fuente de GCC.

10

No encontrará un archivo yacc/bison de gramática C dentro del código fuente actual de GCC. Fue hecho en el pasado, antes de los tenedores de egcs. No te puedo dar la versión exacta y la ubicación, pero le puedo decir que debería estar en el 2.x

La versión actual de GCC tiene su propio analizador C

+0

Entonces, hay una especificación de gramática en el código fuente de GCC, ¿verdad? El que se analizará con el analizador C de GCC. ¿Sabes en qué archivo lo encuentro? – Haruki

+0

@Hurkai lo puedes encontrar en comentarios a subrutinas que realizan el análisis :-) –

7

g de GCC++ pasó de un yacc (Analizador basado en bisontes hace años (probablemente por lo menos 5 años). Comenzaron a usar un analizador decente recursivo porque C++ es difícil en yacc.

Después de usar este analizador en C++ durante varios años, cambiaron C a un análisis utilizando decente recursivo también.

Tendrá que volver varias versiones para localizar la gramática en formato bisonte, pero está disponible. Usted debe tratar de búsqueda de código de Google con

gcc yyparse

Actualización: Google Code Search apagado en 2012

http://en.wikipedia.org/wiki/Google_Code_Search

antigua: http://yaxx.googlecode.com/svn/branches/yaxx-proc/gcc-3.4.0/gcc/c-parse.y

para encontrar una versión de gcc eso lo tiene y luego deberías poder encontrar el archivo fuente yacc/bison allí. Sin embargo, será viejo.

+6

Creo que quisiste decir _descent_, aunque el analizador es _decente_ lo suficiente :) –

4

GCC no utiliza un analizador generado; su analizador es un analizador sintáctico de descenso recursivo escrito a mano.

+1

es cierto de la versión 4.6+ – Jack

+1

@Jack: ¡Interesante! ¿Me puede indicar alguna documentación? Sé que cambiaron * de * un analizador generado * a * el nuevo escrito a mano por razones de rendimiento y (más importante) de mantenimiento, probablemente en algún lugar alrededor del marco de tiempo 3.4-4.2 (no lo recuerdo exactamente). ¿Cuáles fueron las razones para volver atrás y qué generador de analizadores utilizan? –

0

La gramática C se pueden encontrar en los comentarios en c-analizador. c archivo en fuentes GCC. Aunque no es un yacc/bison como ya se ha dicho.

Cuestiones relacionadas