Thue
Thue é uma linguagem de programação esotérica inventada por John Colagioia no início de 2000. É uma meta-linguagem que pode ser usada para definir ou reconhecer linguagens do tipo 0 da hierarquia de Chomsky. Porque ela é capaz de definir linguagens de tal complexidade, é também Turing completa ela mesma. Thue é baseado em um sistema de reescrita de strings não determinístico chamado gramática Thue-semi, que por sua vez é nomeado após (e, possivelmente, criado pelo) matemático norueguês Axel Thue; inspiração também é tirada do grue. O autor descreve-o como segue: "Thue representa uma das maneiras mais simples possíveis de interpretar programação baseada em restrições. São para o paradigma baseado em restrições que linguagens como a OISC são para o imperativo paradigma, em outras palavras, é uma tar pit. "
Regras de produção
Um programa Thue começa com uma regra base, que é uma série de regras de substituição, cada uma das seguinte forma:
lhs ::= rhs
A regra base termina com um símbolo de produção solitário em uma linha:
::=
O estado inicial é uma série de símbolos que se seguem a regra base.
Thue consome os símbolos iniciais e substitui o resultado das regras de cada um dos símbolos de estado inicial.
Thue termina quando lhs não pode ser encontrado em um estado resultante.
Notas
- ::= é pronunciado pode ser.
- lhs é "lado esquerdo(left hand side)".
- rhs é "lado direito (right hand side)".
- "::=" não pode nunca ser lhs.
- ":::" é um fluxo de entrada.
- "~" é um fluxo de saída.
- Sistemas semi-Thue são isomórficos a gramáticas irrestritas.
Chamando Thue
Quando chamado com 'd' (debug), imprime o estado. Quando chamado com 'l' (lado esquerdo), aplica as regras da esquerda para a direita. Quando chamado com 'r' (lado direito), aplica as regras da direita para a esquerda. O último 'l' ou 'r' substitui as opções anteriores.
Programas de Exemplo
Aqui está o tradicional "Olá Mundo!" em Thue:
a::=~Hello World! ::= a
O programa Thue a seguir executa um incremento de um número binário introduzido como o estado inicial cercado por caracteres "_", neste caso, o número 1111111111:
1_::=1++ 0_::=1 01++::=10 11++::=1++0 _0::=_ _1++::=10 ::= _1111111111_
O programa de exemplo a seguir é para demonstrar o não-determinismo de Thue (e para mostrar um exemplo de um loop infinito, além). O programa gera saídas de bits em uma seqüência indefinida (e possivelmente aleatória).
b::=~0 b::=~1 ac::=abc ::= abc
Ligações externas
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.