Thue (programovací jazyk) - Thue (programming language)
Thue ( / t ü eɪ / TOO -ay ) je esoterický programovací jazyk vynalezen John Colagioia počátkem roku 2000. Jedná se o meta-jazyk, který může být použit k definování nebo rozpoznat jazyky typu 0 z Chomského hierarchie . Protože je schopen definovat jazyky takové složitosti, je také sám Turing-Complete . Thue je založen na nedeterministickém systému přepisování řetězců zvaném semi-thue gramatika , který je sám pojmenován po norském matematikovi Axelu Thueovi . Autor to popisuje následovně: "Thue představuje jeden z nejjednodušších možných způsobů, jak konstruovat programování založené na omezení. Pro paradigma založené na omezeních jsou jazyky jako OISC pro imperativní paradigma; jinými slovy, je to dehtová jáma ." "
Pravidla výroby
Program Thue začíná řádkem, což je řada pravidel nahrazování, každé z těchto forem:
lhs ::= rhs
Rulebase končí symbolem osamělé produkce na řádku:
::=
Počáteční stav je řada symbolů, které následují po rulebase.
Thue spotřebovává počáteční symboly a nahrazuje výsledek pravidel pro každý ze symbolů počátečního stavu.
Thue skončí, když lhs nelze nalézt ve výsledném stavu.
Poznámky
- :: = je vyslovováno může být .
- lhs je „levá strana“.
- rhs je „pravá strana“.
- " :: = " nikdy nemůže být lhs.
- „:::“ je vstupní proud.
- „~“ je výstupní proud.
- Semi-Thue systémy jsou izomorfní na neomezené gramatiky .
Volání Thue
Při vyvolání pomocí 'd' (ladění) vytiskněte stav. Při vyvolání pomocí 'l' (levá strana) použijte pravidla zleva doprava. Při vyvolání pomocí 'r' (pravá strana) použijte pravidla zprava doleva. Poslední 'l' nebo 'r' přepíše předchozí přepínače.
Ukázkové programy
Zde je tradiční „Hello World!“ v úterý:
a::=~Hello World! ::= a
Následující program Thue provádí přírůstek binárního čísla zadaného jako počáteční stav obklopený znaky „_“, v tomto případě číslem 1111111111:
1_::=1++ 0_::=1 01++::=10 11++::=1++0 _0::=_ _1++::=10 __::=1 ::= _1111111111_
Následující ukázkový program má demonstrovat Thueův nedeterminismus (a kromě toho ukázat příklad nekonečné smyčky). Program vydává bity v nedefinovaném (a dost možná náhodném) sledu.
b::=~0 b::=~1 ac::=abc ::= abc
Viz také
externí odkazy