Disponible la nueva versión "donationware" 7.3 de OrganiZATOR
Descubre un nuevo concepto en el manejo de la información.
La mejor ayuda para sobrevivir en la moderna jungla de datos la tienes aquí.

Curso C++

[Home]  [Inicio]  [Índice]


1.3.1b  Sintaxis de las expresiones C++

§1  Sinopsis:

En este epígrafe se incluye una descripción formal de la gramática permitida a las expresiones en C++.  Como puede verse, las expresiones son definidas recursivamente, de forma que las subexpresiones pueden ser anidadas sin ningún límite formal, aunque quizás el compilador pueda reportar un error de límite de memoria si no puede compilar una expresión muy compleja.

Como en el caso de las sentencias ( 1.3.1a),  en los casos que pudieran resultar dudosos, junto a la traducción al español se ha incluido el original inglés.


Expresiones primarias:       (primary-expression):

literal

this

:: identificador

:: nombre de función-operador       (operator-function-name)

:: nombre cualificado

(expresión)

expresión-de-identificación

literal:

constante entera                      (integer-constant)

constante carácter                    (character-constant)

constante fraccionaria               (floating-constant)

cadena de caracteres               (string-literal)

expresión-de-identificación:

nombre (no cualificado)

nombre-cualificado

nombre (no cualificado):

identificador

nombre de función-operador

conversion-function-name

~ nombre-de-clase

nombre-cualificado

nombre-cualificado:       (qualified-name)

nombre-cualificado-de-clase :: nombre

expresiones:        (postfix-expression)

primary-expression

postfix-expression  [ expression ]

postfix-expression  ( <expression-list> )

simple-type-name   ( <expression-list> )

postfix-expression  .  name

postfix-expression  ->  name

postfix-expression  ++

postfix-expression  --

const_cast < identificación-de-tipo > ( expresión )

dynamic_cast < identificación-de-tipo > ( expresión )

reinterpret_cast < identificación-de-tipo > ( expresión )

static_cast < identificación-de-tipo > ( expresión )

typeid ( expresión )

typeid ( nombre-de-tipo )

lista de expresiones:         (expression-list)

expresión-de-asignación

lista-de-expresiones  ,  expresión-de-asignación

expresión-unitiaria:          (unary-expression)

postfix-expression

++  expresión unitaria

- -   expresión-unitaria

operador-unario  expresión-de-modelado

sizeof  expresión-unitaria

sizeof ( nombre-de-tipo )

expresión de asignación-de-memoria      (allocation-expression)

expresión-de-desasignación

operador-unario:   (alguno de los siguientes)

&  *  +  -  !  ~

expresión-de-asignación-de-memoria:     (allocation-expression)

<::> new <placement> new-type-name <inicializador>

<::> new <placement> (nombre-de-tipo) <inicializador>

placement:

(lista-de-expresiones )

new-type-name:

especificadores-de-tipo <declarador-new>

declarador-new:       (new-declarator)

ptr-operator <new-declarator>

declarador-new  [ <expresión> ]

expresión de desasignación:   (deallocation-expression)

<::> delete  expresión-de-modelado

<::> delete [ ]  expresión-de-modelado

expresión-de-modelado:    (cast-expression)

expresión-unitaria

( nombre-de-tipo )  expresión-de-modelado

expresión-pm:   (pm-expression)

expresión-de-modelado

pm-expresion   .*   expresión-de-modelado

pm-expresion   ->*   expresión-de-modelado

expresión-multiplicativa:    (multiplicative-expression)

expresión-pm

expresión-multiplicativa  *  pm-expression

expresión-multiplicativa  /  pm-expression

expresión-multiplicativa  %  pm-expression

expresión-aditiva:    (additive-expression)

expresión-multiplicativa

expresión-aditiva  +   expresión-multiplicativa

expresión-aditiva  -   expresión-multplicativa

expresión-de-desplazamiento:    (shift-expression):

expresión-aditiva

expresión-de-desplazamiento  <<  expresión-aditiva

expresión-de-desplazamiento  >>  expresión-aditiva

expresión relacional:   (relational-expression)

expresión-de-desplazamiento

expresión-relacional  <   expresión-de-desplazamiento

expresión-relacional  >   expresión-de-desplazamiento

expresión-relacional  <=  expresión-de-desplazamiento

expresión-relacional >=  expresión-de-desplazamiento

expresión-de-igualdad:   (equality-expression)

expresión-relacional

expresión-de-igualdad  ==  expresión-relacional

expresión-de-igualdad  !=  expresión-relacional

expresión-AND:    (AND-expression)

expresión-de-igualdad

expresión-AND  &   expresión-de-igualdad

expresión-de-OR-exclusivo:   (exclusive-OR-expression)

expresión-AND

expresión-de-OR-exclusivo  ^  expresión-AND

expresión-de-OR-inclusivo:   (inclusive-OR-expression)

expresión-de-OR-exclusivo

expresión-de-OR-inclusivo  |  expresión-de-OR-exclusivo

expresión-lógica-AND:   (logical-AND-expression)

expresión-de-OR-inclusivo

expresión-lógica-AND  &&  expresión-de-OR-inclusivo

expresión-lógica-OR:    (logical-OR-expression)

expresión-lógica-AND

expresión-lógica-OR  ||  expresón-lógica-AND

expresión condicional:

expresión-lógica-OR

expresión-logica-OR  ?  expresión  :  expresión-condicional

expresión-de-asignación:   (assignment-expression)

expresión condicional

expresión-unitiaria  operador-de-asignación  expresión-de-asignación

operador-de-asignación  (alguno de los siguientes):

=      *=     /=     %=     +=       -=

<<    =>    >=    &=      ^=       |=

expresión:

expresión-de-asignación

expresión,  expresión-de-asignación

expresión-constante:

expresión-condicional