Nota : Toda programa ha de empezar con un comentario.Las variables que se van a utilizar
han de declararse al inicio del programa.Solo trabajamos con variables , no existen
constantes.
La grámatica
Axioma : I
Variable : {I,S,L,declaracion_var,lista_d_var,lista_id,tipo_base,asig,operando,exp_a,exp_b}
Tokens :{ comentario,inicion fin,si,entonces,fsi,en_caso_contrare,mientras,hacer,fmientras,var,
fvar,entero,real,booleano,caracter,string,identificador,y,o,no,parentesis_abierto,
parantesis_cerrado,operador_rel,+,*,/}
Todo debe ir entre los tokens INICIO y FIN , que hacen referencia a las palabras inicio
y fin respectivamente. Los saltos condicionales , su condicion es una expresion booleana.
I -> COMENTARIO INICIO declaracion_var L FIN
S -> SI exp_b ENTONCES S FSI
S -> SI exp_b ENTONCES S EN_CASO_CONTRAREO S FSI
S -> MIENTRAS exp_b HACER S FMIENTRAS
S -> asig
S -> exp_b
L -> L S
L -> S
Declaración de Tipos
Acotamos la declaracion de tipos a entero,caracter,real,string,booleano
Esquema
tipo_base -> ENTERO | CARACTER | REAL | STRING | BOOLEANO
Declaración de Variables
Las variables de declaran indicante el tipo y a continuacion el identificado o identificadores.
Esquema :
declaracion_var -> VAR lista_d_var FVAR
lista_d_var -> tipo_base lista_id lista_d_var | /*epsilon*/
lista_id -> IDENTIFICADOR , lista_id | IDENTIFICADOR
Asignación
La asignación ,solo de expresiones aritméticas sencillas.
Esquema :
asig -> operando := exp_a
Expresiones
El lenguaje trabaja con expresiones aritmeticas y logicas sencillas .Los operandos han de ser variables.
Esquema expresiones aritméticas :
operando -> IDENTIFICADOR
exp_a -> exp_a + exp_a
exp_a -> exp_a * exp_a
exp_a -> - exp_a
exp_a -> (exp_a)
exp_a -> operando
Esquema expresiones lógicas :
exp_b -> exp_b Y exp_b
exp_b -> exp_b O exp_b
exp_b -> NO exp_b
exp_b -> (exp_b )
exp_b -> exp_a OPERADOR_REL exp_a