(→Tipos de Dados) |
(→Manipulação de Nomes) |
||
Line 15: | Line 15: | ||
= Manipulação de Nomes = | = Manipulação de Nomes = | ||
+ | |||
+ | Os nomes ([[#Identificadores|identificadores]]) correspondem a constantes, variáveis e funções. Nos pontos que se seguem, usa-se o termo entidade para as designar indiscriminadamente, usando-se explicitando-se quando a descrição for válida apenas para um subconjunto. | ||
== Espaço de nomes e visibilidade dos identificadores == | == Espaço de nomes e visibilidade dos identificadores == | ||
+ | |||
+ | O espaço de nomes global é único, pelo que um nome utilizado para designar uma entidade num dado contexto não pode ser utilizado para designar outras (ainda que de natureza diferente). | ||
+ | |||
+ | Os identificadores são visíveis desde a declaração até ao fim do alcance: ficheiro (globais) ou função (locais). A reutilização de identificadores em contextos inferiores encobre declarações em contextos superiores: redeclarações locais podem encobrir as globais até ao fim de uma função. É possível utilizar símbolos globais nos contextos das funções, mas não é possível defini-los (ver [[#Símbolos globais|símbolos globais]]). | ||
== Validade das variáveis == | == Validade das variáveis == | ||
+ | |||
+ | As entidades globais (declaradas fora de qualquer função), existem durante toda a execução do programa. As contantes e variáveis locais a uma função existem apenas durante a sua execução. Os argumentos formais são válidos enquanto a função está activa. | ||
= Convenções Lexicais = | = Convenções Lexicais = |
AVISOS - Avaliação em Época Normal |
---|
Esclarecimento de dúvidas:
|
Requisitos para desenvolvimento, material de apoio e actualizações do enunciado (ver informação completa em Projecto de Compiladores):
|
Processo de avaliação (ver informação completa em Avaliação do Projecto):
|
A linguagem pwn é uma linguagem imperativa e é apresentada de forma intuitiva neste manual. São apresentadas características básicas da linguagem (tipos de dados, manipulação de nomes); convenções lexicais; estrutura/sintaxe; especificação das funções; semântica das instruções; semântica das expressões; e, finalmente, alguns exemplos.
A linguagem é fracamente tipificada (são efectuadas algumas conversões implícitas). Existem 4 tipos de dados, todos compatíveis com a linguagem C, e com alinhamento em memória sempre a 32 bits:
Os tipos suportados por cada operador e a operação a realizar são indicados na definição das expressões.
Os nomes (identificadores) correspondem a constantes, variáveis e funções. Nos pontos que se seguem, usa-se o termo entidade para as designar indiscriminadamente, usando-se explicitando-se quando a descrição for válida apenas para um subconjunto.
O espaço de nomes global é único, pelo que um nome utilizado para designar uma entidade num dado contexto não pode ser utilizado para designar outras (ainda que de natureza diferente).
Os identificadores são visíveis desde a declaração até ao fim do alcance: ficheiro (globais) ou função (locais). A reutilização de identificadores em contextos inferiores encobre declarações em contextos superiores: redeclarações locais podem encobrir as globais até ao fim de uma função. É possível utilizar símbolos globais nos contextos das funções, mas não é possível defini-los (ver símbolos globais).
As entidades globais (declaradas fora de qualquer função), existem durante toda a execução do programa. As contantes e variáveis locais a uma função existem apenas durante a sua execução. Os argumentos formais são válidos enquanto a função está activa.
Os exemplos não são exaustivos e não ilustram todos os aspectos da linguagem. Podem obter-se outros na página da disciplina.
Exemplo da definição de função num ficheiro (ficheiro factorial.pwn):
(---)
Exemplo da utilização da função noutro ficheiro (ficheiro main.pwn):
(---)
Casos omissos e erros serão corrigidos em futuras versões do manual de referência.