es:manual:ssl
Diferencias
Muestra las diferencias entre dos versiones de la página.
Próxima revisión | Revisión previa | ||
es:manual:ssl [2021/06/16 11:20] – creado root | es:manual:ssl [2021/07/07 17:46] (actual) – [Aspectos semánticos] root | ||
---|---|---|---|
Línea 3: | Línea 3: | ||
Para cubir ciertas funcionalidades como el manejo de variables de perfil, variables de sesión, preguntas condiciones, | Para cubir ciertas funcionalidades como el manejo de variables de perfil, variables de sesión, preguntas condiciones, | ||
- | Es un lenhguaje sencillo, con una sintaxis similar a la familia de C, Java y Javascript, con muchas menos funcionalidades (ya que solo se pretende usar para escribir pequeños trozos de código) y con algunas facilidades añadidas para manejar los ítems y las respuestas de los alumnos. | + | Es un lenhguaje sencillo, con una sintaxis similar a la familia de C, Java y Javascript, con muchas menos funcionalidades (ya que solo se pretende usar para escribir pequeños trozos de código) y con algunas facilidades añadidas para manejar los ítems y las respuestas de los alumnos. En esta sección no se pretende describir exhaustivamente el lenguaje ni enseñar su funcionamiento. Calquier programador acostumbrado a Java o Javascript entenderá facilmente como usarlo. Se hará especial hincapié en las diferencias con estos lenguajes. |
En cada una de las secciones de Siette donde se usa el lenguaje se describe su funcionalidad. En esta página se describe el lenguaje en si desde el punto de vista léxico y sintáctico: | En cada una de las secciones de Siette donde se usa el lenguaje se describe su funcionalidad. En esta página se describe el lenguaje en si desde el punto de vista léxico y sintáctico: | ||
==== Aspectos léxicos ==== | ==== Aspectos léxicos ==== | ||
+ | |||
+ | === Separadores y comentarios === | ||
+ | Los espacios en blanco, tabuladores uy fin de línea solo sirven para separar las palabras. Se utilizan dos tipos de comentarios al igual que en Java/ | ||
+ | |||
+ | * < | ||
+ | * < | ||
+ | |||
+ | === Constantes numéricas === | ||
+ | En SSL no hay tipos, no se hace distinción entre números enteros y números reales. Todas las operaciones que implican números se ejecutan como números reales. Desde el punto de vista léxico las constantes numércias se escriben de la misma forma que en Java/ | ||
+ | |||
+ | === Constantes de cadenas de caracteres === | ||
+ | al igual que en Javascript las constantes de caracteres se pueden escribir de dos formas, con comillas simples, o comillas dobles al principio y al final de la cadena. Se pueden utilizar caracteres de escape habituales para fin de línea, tabuladores, | ||
+ | |||
+ | === Palabras reservadas === | ||
+ | Son palabras reservadas aquellas que tienen un significado especial en el lenguaje, entre ellas: | ||
+ | |||
+ | int float char boolean | ||
+ | true false | ||
+ | if else | ||
+ | do while | ||
+ | for in to downto step | ||
+ | switch | ||
+ | return | ||
+ | print length | ||
+ | round | ||
+ | |||
+ | 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 === | ||
+ | Siguen las mismas reglas que en Java/ | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | === Operadores === | ||
+ | Los operadores son tambien los habituales en Java/ | ||
+ | |||
+ | ^Operador ^Tipo ^Asociatividad ^ | ||
+ | |< | ||
+ | |< | ||
+ | |(int) (float) (char) (boolean) (string) |Cast, unario, notacion prefija | Derecha | | ||
+ | |* / % |Aritméticos, | ||
+ | |+ - |Aritméticos, | ||
+ | |< | ||
+ | |== != |Relacionales, | ||
+ | |! |Lógico, unario, notación prefija |Derecha | | ||
+ | |&& |Lógico, binario |Izquierda | | ||
+ | |< | ||
+ | |?: |Operador condicional, | ||
+ | |= += -= *= /= %= |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.1623842438.txt.gz · Última modificación: 2021/06/16 11:20 por root