¿Hay una gramática estándar de C++?


¿Especifica el estándar la gramática oficial de C++?

Busqué, pero no lo encontré en ninguna parte.

Además, quiero leer un poco sobre la gramática de C++ en detalle, como en qué categoría de gramáticas cae, etc. Cualquier enlace que me apunte en la dirección correcta sería útil.

Por categoría, quiero decir

Haga clic para ampliar tomado de aquí.

Author: Brian Tompsett - 汤莱恩, 2010-05-17

5 answers

Sí, lo hace.

La gramática se describe en detalle en todo el estándar y se resume en el Apéndice A: Resumen Gramatical (es el Apéndice A tanto en el estándar C++03 como en el borrador final del comité C++0x).

Puede comprar el estándar C++03 o puede descargar el C++0x FCD (es el documento n3092 en esa página).

Para responder al "¿en qué categoría está?"pregunta, la gramática de C++ es no libre de contexto (véase también preguntas vinculadas en las respuestas a esa pregunta; tienen ejemplos adicionales de problemas relacionados con la gramática de C++ y el análisis de C++).

 26
Author: James McNellis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:02:14

Alessio Marchetti puso una gramática BNF hipervinculada para C++ en http://www.nongnu.org/hcb/.

Tener todo vinculado y en una sola página hace que sea fácil navegar entre las reglas.

 7
Author: Nate Kohl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-23 03:24:10

Andrew Birkett tiene una visión completa del análisis de C++ en su sitio web . Cubre algunas de las dificultades para crear una gramática de C++ (mezcla de análisis léxico, sintáctico y semántico) e incluye enlaces a varias gramáticas de C++.

 5
Author: Josh Kelley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-17 14:32:45

Bjarne Stroustrup, el creador de C++, escribió un libro llamado El Lenguaje de programación C++ que se ha actualizado muchas veces (leí la 3a edición hace unos 10 años). Recuerdo que tenía detalles muy técnicos con respecto a la gramática (pre-procesador y compilador).

Probablemente pueda encontrar este libro en una de sus librerías locales, puede ofrecerle más disfrute que un documento estándar de ANSI, dependiendo de lo específico que necesite ser.

 2
Author: Sprague,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-17 14:28:56

No estoy seguro, pero por lo que veo, el enlace de James McNellis (al pdf) contiene una nota en la primera página:

Advertencia

Este documento no es una ISO Estándar Internacional. Es distribuido para su revisión y comentario. Se está sujeto a cambios sin previo aviso y no puede ser referido como un Estándar Internacional.

Por lo tanto, buscado y creo que este es el enlace correcto a la oficial ISO: http://www-d0.fnal.gov / ~dladams / cxx_standard. pdf

 0
Author: Poni,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-17 14:59:03