es:manual:ssl
Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
es:manual:ssl [2021/06/16 14:23] – [Aspectos léxicos] root | es:manual:ssl [2021/07/07 17:46] (actual) – [Aspectos semánticos] root | ||
---|---|---|---|
Línea 34: | Línea 34: | ||
round | round | ||
- | a las que hay que añadir los identificadores predefinidos. | + | a las que hay que añadir los identificadores predefinidos. Actualmente no todas las sentencias correspondientes a algunas de estas palabras reservadas están implementadas, |
=== Identificadores === | === Identificadores === | ||
Siguen las mismas reglas que en Java/ | Siguen las mismas reglas que en Java/ | ||
- | * '' | + | * '' |
+ | * '' | ||
=== Operadores === | === Operadores === | ||
Línea 47: | Línea 48: | ||
|< | |< | ||
|< | |< | ||
- | |(int) (char) (boolean) (string) |Cast, unario, notacion prefija | Derecha | | + | |(int) (float) (char) (boolean) (string) |Cast, unario, notacion prefija | Derecha | |
|* / % |Aritméticos, | |* / % |Aritméticos, | ||
|+ - |Aritméticos, | |+ - |Aritméticos, | ||
- | |< <= > >= |Relacionales, | + | |< |
|== != |Relacionales, | |== != |Relacionales, | ||
|! |Lógico, unario, notación prefija |Derecha | | |! |Lógico, unario, notación prefija |Derecha | | ||
Línea 58: | Línea 59: | ||
|= += -= *= /= %= |Asignación, | |= += -= *= /= %= |Asignación, | ||
+ | |||
+ | ==== Aspectos sintácticos ==== | ||
+ | |||
+ | Desde un punto de vita sintactico un programa es una lista de sentencias, que a su vez pueden ser simples o compuestas. El lenguaje no tiene tipos y no requiere de sentencias de declaración. Tampoco tiene funciones, salvo algunas predefinidas. Para describir la sintaxis se utiliza una gramática de contexto libre siguiendo la notación clásica de [[wpes> | ||
+ | |||
+ | < | ||
+ | axioma: listaSent | ||
+ | ; | ||
+ | |||
+ | listaSent: listaSent sent | ||
+ | | ||
+ | ; | ||
+ | |||
+ | sent: sentComp | ||
+ | | asig optPYC | ||
+ | | sentReturn optPYC | ||
+ | | sentIf | ||
+ | | sentWhile | ||
+ | | sentDo optPYC | ||
+ | | sentFor | ||
+ | | sentPrint | ||
+ | ; | ||
+ | |||
+ | optPYC: ';' | ||
+ | | | ||
+ | ; | ||
+ | |||
+ | sentComp: ' | ||
+ | ; | ||
+ | </ | ||
+ | |||
+ | === Expresiones === | ||
+ | Son prácticamente las mismas que en Javascript, añadiendole el [[wp> | ||
+ | |||
+ | < | ||
+ | exp: exp ' | ||
+ | | exp ' | ||
+ | | exp ' | ||
+ | | exp '/' | ||
+ | | exp ' | ||
+ | | ' | ||
+ | | cond '?' | ||
+ | | exp '?:' | ||
+ | | ' | ||
+ | | ' | ||
+ | | ' | ||
+ | | var | ||
+ | | asig | ||
+ | | CONSTANTE_ENTERA | ||
+ | | CONSTANTE_REAL | ||
+ | | CONSTANTE_STRING | ||
+ | ; | ||
+ | |||
+ | var: IDENTIFICADOR | ||
+ | ; | ||
+ | </ | ||
+ | |||
+ | === Condiciones === | ||
+ | Son expresiones lógicas que tienen como resultado un valor booleano. | ||
+ | |||
+ | < | ||
+ | cond: exp ' | ||
+ | | exp ' | ||
+ | | exp '<' | ||
+ | | exp '< | ||
+ | | exp '> | ||
+ | | exp '>' | ||
+ | | cond ' | ||
+ | | cond '&&' | ||
+ | | ' | ||
+ | | ' | ||
+ | | ' | ||
+ | | ' | ||
+ | ; | ||
+ | </ | ||
+ | |||
+ | === Sentencias de asignación === | ||
+ | Lo mas destacable de las sentencias de asignación de SSL es que puede asignarse a una variable el valor booleano de una condición | ||
+ | |||
+ | < | ||
+ | asig: var ' | ||
+ | | var ' | ||
+ | | var ' | ||
+ | | var ' | ||
+ | | var ' | ||
+ | | var '/ | ||
+ | | ' | ||
+ | | ' | ||
+ | | var ' | ||
+ | | var ' | ||
+ | ; | ||
+ | </ | ||
+ | |||
+ | === Sentencia if === | ||
+ | |||
+ | < | ||
+ | sentIf: ' | ||
+ | | ' | ||
+ | ; | ||
+ | </ | ||
+ | |||
+ | |||
+ | === Sentencia while === | ||
+ | |||
+ | < | ||
+ | sentWhile: ' | ||
+ | ; | ||
+ | </ | ||
+ | |||
+ | |||
+ | === Sentencia do-while === | ||
+ | |||
+ | < | ||
+ | sentDo: ' | ||
+ | ; | ||
+ | </ | ||
+ | |||
+ | |||
+ | === Sentencia for === | ||
+ | < | ||
+ | sentFor: ' | ||
+ | ; | ||
+ | </ | ||
+ | |||
+ | === Sentencia return === | ||
+ | La sentencia return puede devolver un valor numérico, una cadena de caracteres o bien el valor booleano correspondiente a una expresión. | ||
+ | |||
+ | < | ||
+ | sentFor: ' | ||
+ | | ' | ||
+ | ; | ||
+ | </ | ||
+ | |||
+ | |||
+ | === Sentencia print === | ||
+ | < | ||
+ | sentPrint: ' | ||
+ | ; | ||
+ | </ | ||
+ | |||
+ | === Arrays === | ||
+ | Pueden definirse arrays unidimensionales son la siguiente sintaxis: | ||
+ | |||
+ | < | ||
+ | asig: var ' | ||
+ | ; | ||
+ | listaExp: listaExp ',' | ||
+ | | exp | ||
+ | ; | ||
+ | </ | ||
+ | |||
+ | y acceder a sus elementos mediante: | ||
+ | |||
+ | < | ||
+ | var: IDENTIFICADOR ' | ||
+ | ; | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Aspectos semánticos ==== | ||
+ | |||
+ | El lenguaje no tiene tipos. Cuando se realiza una operación SSL intenta acomodar la semántica de la operación a un posible tipo que infiere de sus operadores. Así por ejemplo, la operación '' | ||
+ | |||
+ | Las operaciones entre números se hacen siempre considerando que los operadores son números reales. | ||
es/manual/ssl.1623853416.txt.gz · Última modificación: 2021/06/16 14:23 por root