MarkIME
Definição da Sintaxe e Semântica Denotacional
da Linguagem de Programação
MarkIME
Palavras reservadas
abstract and while
document else for
head if not
or upper var
abstract and while
document else for
head if not
or upper var
Sintaxe
Valores e Identificadores
<digito> = “0 ” | “1 ” | “2 ” | “3 ” | “4 ” | “5 ” |
“6” | “7” | “8” | “9”
<digito> = “0 ” | “1 ” | “2 ” | “3 ” | “4 ” | “5 ” |
“6” | “7” | “8” | “9”
<sinal> = “null” | “-”
<letra> = “a” | “A” | “b” | “B” |
... | “z” | “Z”
<booleano> = “true” | “false”
<quebra_linha> = “\n” (* caractere de quebra de linha *)
<caractere_escapado> = “\$” | “\}” | “\{” | “\n” | “*”
Sintaxe
Números
<natural> = <digito> , { <digito> }
<natural> = <digito> , { <digito> }
<inteiro> = [ <sinal> ], { <natural> }
<inteiro> = [ <sinal> ], { <natural> }
<decimal> = <inteiro>, [“.”, <natural>]
<decimal> = <inteiro>, [“.”, <natural>]
<numero> = <inteiro> | <decimal>
Sintaxe
String
<caractere> = <letra> | <digito> | <caractere_especial>
<caractere> = <letra> | <digito> | <caractere_especial>
<caractere_string> = { <caractere> | <caractere_escapado> },
-<quebra_linha>
<caractere_string> = { <caractere> | <caractere_escapado> },
-<quebra_linha>
<string_comum> = “"”, {<caractere_string>}, ”"” |
{<caractere_string>}
<string_comum> = “"”, {<caractere_string>}, ”"” |
{<caractere_string>}
<linha> = { <string_comum> | <modificador> |
“$$”, <comando>, “$$”} , <quebra_linha>
<linhas> = { <linha> }
Sintaxe
Operadores
<operador_aritmético> = “+” | “-” | “/” | “*”
<operador_aritmético> = “+” | “-” | “/” | “*”
<operador_relacional> = “==” | “<=” | “>=”
“<” | “>” | “!=”
<operador_relacional> = “==” | “<=” | “>=”
“<” | “>” | “!=”
<operador_booleano_unário> = “not”
<operador_booleano_unário> = “not”
<operador_booleano_binário> = “and” | “or”
<operador_booleano_binário> = “and” | “or”
<operador_comando> = “=” | “if” | “else” | “while”
<operador_comando> = “=” | “if” | “else” | “while”
Sintaxe
Comandos
<id> = <letra> {<letra>|<digito>}
<declaração_variável> = [“var”], <id> “;”
<atribuição> = <id> “=” <numero> | <data> | <string>
<comando> = <função_predefinida> | <atribuição> |
<condicional> | <expressão_aritmética> | <loop>
<condicional> = "if(", <expressão_booleana>, ")",
"{", <comando>, “}”, ["else{", <comando>, "}"]
<atribuição> = <id> “=” <numero> | <data> | <string>
<comando> = <função_predefinida> | <atribuição> |
<condicional> | <expressão_aritmética> | <loop>
<condicional> = "if(", <expressão_booleana>, ")",
"{", <comando>, “}”, ["else{", <comando>, "}"]
Sintaxe
Comandos
<loop>= "while(", <expressao_booleana>, "){",
<comando>, "}"
<body> = "document{", <linhas>, "}"
<abstract> = "abstract{",<linhas>,"}"
<arquivo_fonte> = <abstract>, <body>
<cabeçalho> = "[", {<string>}, "]"
<corpo_programa> = [<cabeçalho>], {<comando> | <arquivo_fonte>}
<corpo_programa> = [<cabeçalho>], {<comando> | <arquivo_fonte>}
Sintaxe
Expressões
<expressão> = <expressão_aritmética> |
<expressão_booleana> |
<expressão_concatenação>
<modificador> = <italico> | <negrito> |
<caixa_alta> | <caixa_baixa> |
<hiperlink> | <lista>
Sintaxe
Expressões
<expressão_aritmética> ::= <numero> |
"(", <expressão_aritmética> ")" |
<expressão_aritmética>, <operador_aritmético>, <expressão_aritmética>
Sintaxe
Expressões
<expressão_booleana> ::=
<booleano> |
<operador_booleano_unário> <expressão_booleana> |<expressão_booleana> <operador_booleano_binário> <expressão_booleana> |
<expressão_aritmética> <operador_relacional> <expressão_aritmética>
Sintaxe
Expressões
<expressão_concatenação> = <string_comum>, “+”, <string_comum> | <string_comum>, “+”, <numero> |
<numero>, “+”, <string_comum>
Sintaxe
Formatação
<italico> = “*”,<string_comum>,“*” | “*”,<linhas>,“*”
*texto em itálico*
<negrito> = “**”,<string_comum>,“**” | “**”,<linhas>,“**”
**texto em negrito**
Sintaxe
Listings
<lista> = {“*”, <linha>} | {<inteiro>, “.”, <linha>}
* list a
* list g
* list c
Sintaxe
Caixa Alta / Baixa
<caixa_alta> = “upper(”, <string_comum>, “)”
<caixa_baixa> = “lower(”, <string_comum>, “)”
upper(“teste”) = TESTE
Sintaxe
Hiperlinks
<hiperlink> = “[”, {<string_comum>} , “](”, <linha>, “)”
[ link ] ( http://teste.com )
Funções Semânticas
Expressões Aritméticas
A : ExpressaoAritmetica → (Estado → Número)
Funções Semânticas
Expressões Lógicas
B : ExpressaoBooleana → (Estado → Booleano)
Funções Semânticas
Expressões Sobre Texto
T : ExpressaoTexto → (Estado → Texto)
Funções Semânticas
Comandos
C : Comando → (Estado → Estado)
Funções Semânticas
Comando de Atribuição
δ : Estado = Identificador → Valor
Equações Semânticas
Expressões Aritméticas
Equações Semânticas
Expressões Booleanas
Equações Semânticas
Expressões Relacionais
Equações Semânticas
Expressões Sobre Texto
Equações Semânticas
Comando de Atribuição
Equações Semânticas
Comando IF
Equações Semânticas
Comando IF ELSE
Equações Semânticas
Comando WHILE
MarkIme - Fases 3 e 4
By Rayssa Küllian
MarkIme - Fases 3 e 4
- 638