23

¿El estándar especifica la gramática oficial de C++?¿Hay una gramática estándar de C++?

Realicé búsquedas, pero no las encontré en ninguna parte.

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

Por categorías, quiero decir

Click to enlarge tomado de here.

+30

La categoría es 'horrible lío'. – bmargulies

Respuesta

24

Sí, lo hace.

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

Puede purchase the C++03 standard o puede download the C++0x FCD (es el documento n3092 en esa página).

Para responder a "¿en qué categoría está?" pregunta, the C++ grammar is not context-free (también vea las preguntas vinculadas en las respuestas a esa pregunta; tienen ejemplos adicionales de problemas relacionados con la gramática C++ y el análisis C++).

+1

El último enlace SO es agradable. Por cierto, ahora es [¿Es C++ sin contexto o sensible al contexto?] (Http: // stackoverflow.com/questions/14589346/is-c-context-free-or-context-sensitive) – iammilind

2

Bjarne Stroustrup, el creador de C++, escribió un libro llamado The C++ Programming Language, que se ha actualizado muchas veces (leí la 3ª edición hace unos 10 años). Recuerdo que tenía detalles muy técnicos sobre la gramática (preprocesador y compilador).

Probablemente pueda encontrar este libro en una de sus librerías locales, puede ofrecerle más placer que un documento de estándares de ANSI, dependiendo de cuán específico necesita ser.

4

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

0

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

Advertencia

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

Así, han buscado y creo que este es el enlace correcto a la norma ISO oficial: http://www-d0.fnal.gov/~dladams/cxx_standard.pdf

+4

El PDF al que me he vinculado es para el borrador final del comité del próximo estándar C++ 0x; es la última versión del próximo estándar de C++, y como no se ha completado ni ratificado, no es "oficial". El PDF al que se vincula es el estándar C++ 98, al que se realizaron numerosas correcciones en 2003 para proporcionar el estándar C++ 03; la mayoría de los cambios fueron menores, pero hubo algunos cambios importantes. De hecho, estoy sorprendido de que haya un PDF de ese disponible gratuitamente; Creo que la única forma de obtener _legítimamente_ una copia de la norma ISO es comprándola (a través del enlace que brindé). –

+0

Bueno, entonces ambos aprendimos algo nuevo hoy: usted, que estos documentos ISO están disponibles gratuitamente, y yo, que el enlace que ha proporcionado es lo que quiero conservar en mi PC (: ¡Gracias! – Poni

+0

Error de página no encontrada en 16 de febrero de 2017. –

7

Alessio Marchetti poner una gramática BNF con hipervínculos para C++ hacia http://www.nongnu.org/hcb/.

Tener todo vinculado entre sí y en una sola página facilita navegar entre las reglas.

Cuestiones relacionadas