Anda di halaman 1dari 2

.3.1a.

Sentencias
1. Introduccin
Al igual que los lenguajes naturales [2], los lenguajes computacionales tienen una gramtica, es decir, un conjunto de reglas que describen los elementos que componen el lenguaje y la forma correcta de utilizarlos ( 1.2.1).. Una parte de la gramtica, la sintaxis, se ocupa de las reglas para combinar adecuadamente los elementos del lenguaje de forma que tengan un sentido.. En el caso de los lenguajes naturales, la sintaxis ensea a formar las oraciones y expresar conceptos.. En el caso de los lenguajes computacionales, ensea a construir sentencias que describan operaciones correctas de un computador.

2. Sintaxis de las sentencias C++


Si nos referimos concretamente a la sintaxis, sus reglas pueden ser expresadas en forma de una lista, que adecuadamente interpretada, describe estas reglas sintcticas.. A continuacin se expone la sintaxis permitida en C++ para las sentencias ("Statements"). . Junto a una traduccin, ms o menos afortunada al espaol [1], hemos incluido el original ingls para que no quepa la ms mnima ambigedad al respecto, ya que el rigor y el "purismo" son imprescindibles al tratar estos aspectos gramaticales del lenguaje. Una lista de este tipo describe la sintaxis de lo que se denomina una Gramtica Independiente del Contexto de Chomsky [3]. En este caso define la sintaxis de una sentencia (primera entrada de la lista).. Nos describe que una sentencia est compuesta por los elementos que siguen en la lista (sangrados).. Aqu tendramos que interpretar:. Una sentencia est compuesta por una sentencia etiquetada, o una sentencia compuesta, o una sentenciaexpresin, Etc.. A su vez, las entradas sucesivas de la lista (en azul), describen la sintaxis de cada elemento.. Por ejemplo, una sentencia compuesta est formada a su vez por una lista-de-declaraciones que puede ir seguida de una lista-de-sentencias; todo ello entre corchetes { } (el smbolo <xxx> indica que el componente xxx es opcional).. A su vez, la lista-de-declaraciones est formada por ... Etc. Etc. Resulta evidente que muchas de estas definiciones son recursivas. . Por ejemplo, vemos que una lista-dedeclaraciones est formada por una declaracin o una lista-de-declaraciones seguida de una declaracin. Es decir, una lista-de-declaraciones puede contener a su vez otra lista de declaraciones. La lista indica que una sentencia-expresin est constituida por una expresin seguida de un punto y coma ( ;), aunque la expresin es opcional.. Quiere esto decir que un punto y coma aislado es una sentencia-expresin sintcticamente correcta en C++; es lo que se denomina sentencia-expresin nula. Nota: Como este "libro" est dirigido principalmente a estudiantes de C++ que necesiten del lenguaje para sus aplicaciones prcticas, debemos advertir aqu que estas cuestiones "gramaticales" son estrictamente formales, lo que dicho sencilla y llanamente, significa que de una de estas listas no es posible sacar ninguna idea concreta de qu es una sentencia, ni la menor indicacin de para qu sirven.. Son simplemente una indicacin exquisitamente exacta de cmo se usan desde el punto de vista formal, lo que para el programador de a pie tiene escaso o nulo valor [4]. sentencia: sentencia etiquetada sentencia compuesta sentencia-expresin sentencia de seleccin sentencia de iteracin sentencia de salto sentencia ensamblador declaracin simple bloque-intento ( 1.6) (labeled-statement) (compound-statement) (expression-statement) (selection-statement) (iteration-statement) (jump-statement) (asm-statement) (declaration) (try-block)

sentencia etiquetada:

identificador : sentencia case expresin constante : sentencia default : sentencia sentencia compuesta: ( 3.2.6) (<declaration-list> <statement-list>)

{ <lista-de-declaraciones> <lista-de-sentencias> } lista-de-declaraciones: declaracin lista-de-declaraciones. declaracin lista-de-sentencias: sentencia lista-de-sentencias. sentencia sentencia-expresin: <expresin> ; sentencia ensamblador ( 4.10):

asm tokens nueva-lnea (newline) asm tokens; asm { tokens; <tokens;>= <tokens;>} sentencia de seleccin ( 4.10.2):

if ( expresin ) statement if ( expresin ) statement else statement switch ( expresin ) statement sentencia de iteracin ( 4.10.3):

while ( expresin lgica ) sentencia do sentencia while ( expresin ) ; for (sentencia de inicio-for <expresin> ; <expresin>) sentencia sentencia de inicio-for: sentencia-expresin declaracin simple sentencia de salto ( goto identificador ; continue ; break ; return <expresin> ; 4.10.4):