Créer un langage et une implémentation de type Muriel

9

Muriel est un langage où la seule façon de boucler est de créer une quine et de l'exécuter. Votre travail consiste à créer votre propre langue avec cette propriété et sa mise en œuvre dans une langue préexistante.

Nous définirons un langage semblable à Muriel comme suit:

  1. Il a une commande intégrée pour exécuter du code dans son propre langage, similaire à la @commande de Muriel ou à celle de python exec.
  2. C'est Turing complet.
  3. Si vous supprimez la commande d'exécution intégrée, elle n'est plus terminée.

Muriel ressemble à Muriel avec @comme commande d'exécution intégrée. Schtroumpf est également semblable à Muriel (sa commande d'exécution intégrée est x). Python n'est pas comme Muriel, car il est toujours complet si vous le supprimez exec.

Votre travail consiste à créer un langage de programmation de type Muriel, puis à en fournir une implémentation dans le langage de votre choix. Votre score est la longueur de l'implémentation, que vous essayez de minimiser.

Remarques:

  1. Votre exécution intégrée n'a pas besoin de fonctionner exactement comme Muriel. C'est à vous de voir comment il gère la fin du programme enfant, les erreurs, la portée, etc.
  2. Le langage dans lequel vous écrivez l'implémentation ne peut pas lui -même ressembler à Muriel. (C'est ainsi ce @n'est pas une entrée valide.) Elle doit également avoir existé avant ce poste.
PyRulez
la source
Underload est- il un langage semblable à Muriel?
alephalpha
@JerryJeremiah Ma modification est-elle plus claire?
PyRulez
@alephalpha Ce wiki dit "Sans ^, le programme restant diminuera toujours en taille, s'arrêtant éventuellement." Si c'est vrai, alors oui, Underload ressemble à Muriel.
PyRulez
Que faites-vous si votre langue cible a plusieurs evalcommandes? (Par exemple, Python execet eval) Exiger la suppression de tous pour perdre TCness?
CalculatorFeline
1
@PyRulez Je pense que cela devrait être un concours de popularité plutôt qu'un code-golf, car sinon le choix du langage d'implémentation en ferait un défi de caméléon
Uriel

Réponses:

3

Python 3 et "Le sous-ensemble TC minimum de Underload mais avec les caractères modifiés 2019, inversés et avec un 0sur le dessus", 156 octets

c=input()
n=1
t=c
s=[]
while c:
 *c,i=c
 if n:
  if"6">i:n+=int(i)-1
  if n:t=[i]+t
  else:s+=[t];t=[]
 elif"2"==i:n=1
 elif"2">i:s+=s[-1:]
 else:c+=s.pop()

Essayez-le en ligne!

Explications dans l'en-tête, code commenté dans le pied de page.

CalculatorFeline
la source
3
Grand tableau
Uriel