Thue (programovací jazyk) - Thue (programming language)

Thue ( / t ü / 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