Uma linguagem dispõe de uma instrução que corresponde a um ciclo que faz variar uma variável de controlo entre dois limites, utilizando um incremento variável. Na instrução abaixo, partes em negrito correspondem a palavras chave da linguagem e partes em itálico correspondem a partes variáveis.
sweep variable from expression to expression step expression do instruction
variable corresponde a uma variável inteira ou real, expression corresponde a uma expressão com tipo compatível com a variável e instruction corresponde a uma instrução que faz uso da variável.
Escreva a classe que representa o nó correspondente a esta instrução, indicando todos os seus atributos. Defina ainda a função de visita (accept). Além do nó pedido, não é necessário definir outros, devem ser usados os que são fornecidos com a CDK.
Um exemplo de uso é indicado a seguir. Supõe-se que i é uma variável real, que f() é uma chamada a uma função que devolve um valor real e que print(i) é uma chamada a uma função que aceita um valor real.
sweep i from f()/3 to f()/2 step 0.1 do print(i)
[Expand] AST node: sweep_node |
---|
Uma linguagem dispõe de uma instrução que corresponde a um ciclo que faz variar uma variável de controlo entre dois limites, utilizando um incremento variável. Na instrução abaixo, partes em negrito correspondem a palavras chave da linguagem e partes em itálico correspondem a partes variáveis.
with variable run instruction between expression and expression stepping expression
variable corresponde a uma variável inteira ou real, expression corresponde a uma expressão com tipo compatível com a variável e instruction corresponde a uma instrução que faz uso da variável.
Escreva a classe que representa o nó correspondente a esta instrução, indicando todos os seus atributos. Defina ainda a função de visita (accept). Além do nó pedido, não é necessário definir outros, devem ser usados os que são fornecidos com a CDK.
Um exemplo de uso é indicado a seguir. Supõe-se que i é uma variável real, que f() é uma chamada a uma função que devolve um valor real e que print(i) é uma chamada a uma função que aceita um valor real.
with i run print(i) between f()/3 and f()/2 stepping 0.1
[Expand] AST node: with_node |
---|
Uma linguagem dispõe de uma instrução que corresponde a escolher uma função a executar, entre duas possíveis, com base numa condição. As duas funções em alternativa devem ter a mesma assinatura (i.e., receber os mesmos tipos de argumentos e retornar o mesmo tipo de dados). Na instrução abaixo, partes em negrito correspondem a palavras chave da linguagem e partes em itálico correspondem a partes variáveis.
with args if condition call func-name-1 otherwise func-name-2
args corresponde a uma sequência de expressões não vazia (separadas por vírgulas) compatível com os argumentos das duas funções, condition corresponde a uma expressão booleana (tipo inteiro, por simplicidade) e func-name-1 e func-name-2 são nomes de funções (correspondentes a funções declaradas nas condições descritas no primeiro parágrafo).
Escreva a classe que representa o nó correspondente a esta instrução, indicando todos os seus atributos. Defina ainda a função de visita (accept). Além do nó pedido, não é necessário definir outros, devem ser usados os que são fornecidos com a CDK.
Um exemplo de uso é indicado a seguir. Supõe-se que i e j são variáveis compatíveis com os argumentos de f e de g e que a é uma variável inteira.
with i, j if a > 3 call f otherwise g
[Expand] AST node: with_node |
---|
Uma linguagem dispõe de uma expressão que corresponde a chamar condicionalmente uma função sobre conjuntos alternativos de argumentos, dependendo de um valor lógico. Na expressão abaixo, partes em negrito são palavras chave da linguagem e partes em itálico são partes variáveis.
call function-name on expressions or expressions if expression
function-name corresponde ao nome da função cujos argumentos são compatíveis com as listas de expressões que seguem on e or. A condição que segue if determina se é usado o primeiro conjunto (condição verdadeira) de expressões ou o segundo (condição falsa) na chamada à função.
Escreva a classe que representa o nó correspondente a esta expressão, indicando todos os seus atributos. Defina ainda a função de visita (accept). Além do nó pedido, não é necessário definir outros: devem ser usados os que são fornecidos com a CDK.
Um exemplo de uso é indicado a seguir. Supõe-se que f é uma função que aceita dois inteiros e que i, j e k são variáveis inteiras.
call f on i, 3 or 2, j + 1 if k
[Expand] AST node: call_if_node |
---|
Uma linguagem dispõe de uma expressão que corresponde a chamar condicionalmente uma função sobre conjuntos alternativos de argumentos, dependendo de um valor lógico. Na expressão abaixo, partes em negrito são palavras chave da linguagem e partes em itálico são partes variáveis.
when expression call function-name on expressions or expressions
function-name corresponde ao nome da função cujos argumentos são compatíveis com as listas de expressões que seguem on e or. A condição que segue when determina se é usado o primeiro conjunto (condição verdadeira) de expressões ou o segundo (condição falsa) na chamada à função.
Escreva a classe que representa o nó correspondente a esta expressão, indicando todos os seus atributos. Defina ainda a função de visita (accept). Além do nó pedido, não é necessário definir outros: devem ser usados os que são fornecidos com a CDK.
Um exemplo de uso é indicado a seguir. Supõe-se que f é uma função que aceita dois inteiros e que i, j e k são variáveis inteiras.
when k call f on i, 3 or 2, j + 1
[Expand] AST node: when_node |
---|