Вы находитесь на странице: 1из 4

FRBA Sintaxis y Semntica de Lenguajes Mdulo 5 Subconjunto BNF del ANSI Cl

Muchnik Pgina 1 de 4
SUBCONJUNTO BNF DEL ANSI C
Identificadores
<identificador> ->
<no dgito> |
<identificador> <no dgito> |
<identificador> <dgito>
<no dgito> -> uno de
_ a b c d e f g h i j k l m n o p q r s t u v w x y z
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
<dgito> -> uno de
0 1 2 3 4 5 6 7 8 9

Constantes (parcial)
<constante> ->
<constante entera> |
<constante real> |
<constante carcter>
En general, en computacin las constantes enteras no son un subconjunto de
las constantes reales.
Constante Entera (parcial)
<constante entera> ->
<constante decimal> <sufijo entero>?
<constante decimal> ->
<dgito no cero> |
<constante decimal> <dgito>
<dgito no cero> -> uno de
1 2 3 4 5 6 7 8 9
<dgito> -> uno de
0 1 2 3 4 5 6 7 8 9
<sufijo entero> ->
<sufijo "unsigned"> <sufijo "long">? |
<sufijo "long"> <sufijo "unsigned">?
<sufijo "unsigned"> -> uno de
u U
<sufijo "long"> -> uno de
l L











FRBA Sintaxis y Semntica de Lenguajes Mdulo 5 Subconjunto BNF del ANSI Cl
Muchnik Pgina 2 de 4
Constante Real (parcial)
<constante real> ->
<constante fraccin> <sufijo real>?
<constante fraccin> ->
<secuencia dgitos>? . <secuencia dgitos> |
<secuencia dgitos> .
<secuencia dgitos> ->
<dgito> |
<secuencia dgitos> <dgito>
<dgito> -> uno de 0 1 2 3 4 5 6 7 8 9
<sufijo real> -> uno de f F l L
Constante Carcter (parcial)
<constante carcter> ->
'<carcter-c>' |
'<secuencia de escape>'
<carcter-c> -> cualquiera excepto
' \
<secuencia de escape> ->
<secuencia de escape simple>
<secuencia de escape simple> -> uno de
\' \" \? \\ \a \b \f \n \r \t \v

Constantes Cadena (parcial)
<constante cadena> ->
"<secuencia caracteres-s>"
<secuencia caracteres-s> ->
<carcter-s> |
<secuencia caracteres-s> <carcter-s>
<carcter-s> ->
cualquiera excepto " \ |
<secuencia de escape>
<secuencia de escape> ->
<secuencia de escape simple>
<secuencia de escape simple> -> uno de
\' \" \? \\ \a \b \f \n \r \t \v


















FRBA Sintaxis y Semntica de Lenguajes Mdulo 5 Subconjunto BNF del ANSI Cl
Muchnik Pgina 3 de 4
Gramtica de Estructura de Frases (parcial)
Expresiones (parcial)
<expresin> ->
<expresin de asignacin>
<expresin de asignacin> ->
<expresin unaria> <operador asignacin> <expresin de asignacin>
<operador asignacin> -> uno de
= += =
<expresin O lgico> ->
<expresin Y lgico> |
<expresin O lgico> || <expresin Y lgico>
<expresin Y lgico> ->
<expresin O inclusivo> |
<expresin Y lgico> && <expresin de igualdad>
<expresin de igualdad> ->
<expresin relacional> |
<expresin de igualdad> == <expresin relacional> |
<expresin de igualdad> != <expresin relacional>
<expresin relacional> ->
<expresin aditiva> |
<expresin relacional> < <expresin aditiva> |
<expresin relacional> > <expresin aditiva> |
<expresin relacional> <= <expresin aditiva> |
<expresin relacional> >= <expresin aditiva>
<expresin aditiva> ->
<expresin multiplicativa> |
<expresin aditiva> + <expresin multiplicativa> |
<expresin aditiva> - <expresin multiplicativa>
<expresin multiplicativa> ->
<expresin de conversin> |
<expresin multiplicativa> <expresin unaria> |
<expresin multiplicativa> / <expresin unaria> |
<expresin multiplicativa> % <expresin unaria>
<expresin unaria> ->
<expresin sufijo> |
++ <expresin unaria> |
-- <expresin unaria>
<expresin sufijo> ->
<expresin primaria> |
<expresin sufijo> [<expresin>] | /* arreglo */
<expresin sufijo> (<lista de argumentos>?) | /* invocacin */
<expresin sufijo> ++ |
<expresin sufijo> --
<lista de argumentos> ->
<expresin de asignacin> |
<lista de argumentos> , <expresin de asignacin>
<expresin primaria> ->
<identificador> |
<constante> |
<constante cadena> |
(<expresin>)

FRBA Sintaxis y Semntica de Lenguajes Mdulo 5 Subconjunto BNF del ANSI Cl
Muchnik Pgina 4 de 4
Sentencias (parcial)
<sentencia> ->
<sentencia expresin> |
<sentencia compuesta> |
<sentencia de seleccin> |
<sentencia de iteracin> |
<sentencia etiquetada>
<sentencia expresin> ->
<expresin>? ;
<sentencia compuesta> ->
{<lista de declaraciones>? <lista de sentencias>?}
<lista de declaraciones> ->
<declaracin> |
<lista de declaraciones> <declaracin>
<lista de sentencias> ->
<sentencia> |
<lista de sentencias> <sentencia>
<sentencia de seleccin> ->
if (<expresin>) <sentencia> |
if (<expresin>) <sentencia> else <sentencia> |
switch (<expresin>) <sentencia>
/* La expresin que controla un switch debe ser de tipo entero. */
<sentencia de iteracin> ->
while (<expresin>) <sentencia> |
do <sentencia> while (<expresin>) ; |
for (<expresin>? ; <expresin>? ; <expresin>?) <sentencia>
<sentencia etiquetada> ->
case <expresin constante> : <sentencia> |
default : <sentencia>
<sentencia de salto> ->
break ; |
return <expresin>? ;

Вам также может понравиться