Documente Academic
Documente Profesional
Documente Cultură
Convenciones
En general, si algn smbolo aparece con maysculas es un smbolo no terminal. Si es con minsculas y/o algn separador (";", ",", "[", "]", "(", ")", etc.) es smbolo terminal. Las siguientes convenciones deben ser aplicadas en el lenguaje: 1. Letra: a | b | c | ... | z | A | B | ... | Z 2. Dgito: 0 | 1 | ... | 9 3. Signo: - | + 4. Identificador: Letra [ Letra | Dgito ]* 5. Entero sin signo: Nmero [ Nmero ]* 6. Entero con signo: Signo Nmero [ Nmero ]*
Gramtica
La gramtica del lenguaje de programacin es el siguiente (con PROGRAMA como smbolo inicial): PROGRAMA BLOQUE program IDENTIFICADOR; BLOQUE. DEF_CONSTANTES DEF_TIPOS DEF_VARIABLES DECL_FUNCS_PROCS SENT_COMPUESTA const DEF_CONSTANTE {; DEF_CONSTANTE }; |
DEF_CONSTANTES
DEF_CONSTANTE CONSTANTE
IDENTIFICADOR = CONSTANTE ENTERO-CON-SIGNO | ENTERO-SIN-SIGNO | IDENTIFICADOR SIGNO IDENTIFICADOR type DEF_TIPO {; DEF_TIPO }; | IDENTIFICADOR = TIPO TIPO_SIMPLE | array[ TIPO_SIMPLE ] of TIPO SIMPLE TIPO_SUBRANGO | IDENTIFICADOR CONSTANTE .. CONSTANTE
DEF_TIPOS
DEF_TIPO TIPO
TIPO_SIMPLE
TIPO_SUBRANGO
DEF_VARIABLES
var DECL_VARIABLE {; DECL_VARIABLE }; | IDENTIFICADOR {, IDENTIFICADOR } : TIPO IDENTIFICADOR | VAR_COMPONENTE IDENTIFICADOR [ EXPRESION ]
DECL_VARIABLE VARIABLE
VAR_COMPONENTE
DECL_FUNCS_PROCS
DECL_PROC
ENC_PROC procedure IDENTIFICADOR; | procedure IDENTIFICADOR ( PARAMS_FORMALES {; PARAMS_FORMALES } ); PARAMS_FORMALES GRUPO_PARAMS | var GRUPO_PARAMS
GRUPO_PARAMS
DECL_FUNC
ENC_FUNC BLOQUE
SENTENCIA
SENT_SIMPLE | SENT_ESTRUCT SENT_ASIGNACION | LLAM_PROC | VARIABLE := EXPRESION SENT_COMPUESTA | SENT_CONDICIONAL | SENT_WHILE SENT_IF | SENT_CASE begin SENTENCIA {; SENTENCIA} end if EXPRESION then SENTENCIA [ PARTE_ELSE ] else SENTENCIA
SENT_SIMPLE
SENT_ASIGNACION SENT_ESTRUCT
SENT_CONDICIONAL
case EXPRESION of LISTA_CASE {; LISTA_CASE } end ET_CASE : SENTENCIA | CONSTANTE {, CONSTANTE } while EXPRESION do SENTENCIA EXP_SIMPLE | EXP_SIMPLE OP_RELACIONAL EXP_SIMPLE = | <> |< |> | <=
LISTA_CASE
OP_RELACIONAL
| >= EXP_SIMPLE TERMINO | EXP_SIMPLE OP_SUMADOR TERMINO SIGNO TERMINO + || or FACTOR | TERMINO OP_MULTIPL FACTOR * | div | and VARIABLE | CONST_NO_SIGNADA | LLAM_FUNC | ( EXPRESION ) | not FACTOR ENTERO_SIN_SIGNO | IDENTIFICADOR
OP_SUMADOR
TERMINO
OP_MULTIPL
FACTOR
CONST_NO_SIGNADA
LLAM_FUNC
IDENTIFICADOR | IDENTIFICADOR ( PAR_ACTUAL {, PAR_ACTUAL } ) IDENTIFICADOR | IDENTIFICADOR ( PAR_ACTUAL {, PAR_ACTUAL } ) EXPRESION | VARIABLE
LLAM_PROC
PAR_ACTUAL