FAUX
voient le faux pour d'autres significations de faux. Le FAUX est un langage de programmation ésotérique conçu par le Wouter van Oortmerssen dans le 1993 , baptisé du nom de sa valeur booléenne du préféré . C'est un petit en avant - comme la langue de empiler-orientée par , avec la syntaxe conçue pour faire le code en soi assombri par , confondant, et illisible. Il est également remarquable pour avoir un compilateur de seulement 1024 bytes (écrits dans 68000 ). Selon van Oortmerssen, FAUX a fourni l'inspiration pour différentes langues ésotériques bien connues, y compris le Brainfuck et le Befunge .
FAUX est notamment plus menable que la plupart des langages de programmation ésotériques. Les opérations fondamentales qu'il fournit sont raisonnablement sensibles, et là ne sont aucune complexité gratuite. À ces égards elle se tient dans le contraste radical au Intercal de béhémoths et au Malbolge . La difficulté de la programmation dans FAUX vient la plupart du temps de la nature de bas niveau de la langue, qui a la sensation d'a En avant-comme langage d'assemblage. Le reste de la maladresse de la langue vient de la syntaxe ponctuation-basée concise, que beaucoup de personnes trouvent plus difficile qu'une syntaxe mot-basée plus conventionnelle.
Les opérations de dispositifs de langue arithmétique de base et logique, les variables, les sous-routines en tant qu'expressions du calcul du lambda, les rapports du flux de commande , et les opérations de l'entrée-sortie . Des opérations FAUSSES sont faites using une pile . Sa structure est en grande partie basée sur le programmation en avant le langage .
La pile
Tout dans la langue est défini par la façon dont il opère la pile. Quand une valeur est produite, elle est simplement poussée sur la pile ; quand un opérateur est produit, un certain nombre d'opérandes sont sautés de la pile, l'opération est effectuée sur eux, et un certain nombre de résultats sont refoulés sur la pile. Par exemple, dans l'expression1 3_+ : 1 de : pousse le nombre entier 1 sur le
3 de pile : pousse le nombre entier 3 sur le _ de pile : les bruits 3 de la pile, la nie, et pousse -3 le + : bruits 1 et -3 de la pile et des poussées leur somme , -2. de Les sous-routines agissent également sur la pile - c'est la manière dont elles sont donné à des arguments et à des valeurs de retour ; ils voient la même pile que le reste du programme.
Types de données
Les types de données qui peuvent être employés dans le programme sont des caractères du ASCII (qui sont précédés par le' (simple-citer)), valeurs booléennes à 32 bits des nombres entiers du (0 représentations fausses ; -1 représentation vraie), et expressions de calcul de lambda. Celles-ci peuvent être employées sur la pile ou être stockées dans les variables .
Opérateurs de base
FAUX opérations unaires binaires de de soutiens et de dans la notation de polonais inversé , aussi bien que les opérations qui agissent sur seule la pile. Les opérateurs arithmétiques sont +, -, *, et / (les opérateurs binaires, qui sautent deux éléments de la pile et poussent (respectivement) leur somme , différence , produit , ou quotient ) et le _ (soulignage) est la négation unaire (qui saute un élément et pousse sa négation ).
Les opérateurs logiques sont Les opérateurs de pile sont (avec des exemples du → de Une sous-routine très de base d'exemple : 3 ! Ceci pousse 3 sur la pile, pousse l'expression Par exemple, a ; 1= ? essais si la variable a est égale à 1, et si oui, courses l'expression Par exemple, [2f ; !]# court l'expression Les expressions de lambda peuvent contenir des cordes. Par exemple : a ; 1= ? imprimerait le " ; true" ; si la variable a est égale à 1. Monde bonjour : " ; Bonjour monde ! " ; Utilité de copie de dossier. Utilisation : < Calculatrice factorielle du pour les numéros 1 à 8 : ?]f : {fac () dans FAUX} " ; calculer le factoriel de : " ; ß^ß'0-$$0>~ \ 8>|$ " ; résultat : " ; ~ ? entrée ! " ; ? " ; " ; Écrire à tout le les nombres premiers jusqu'à 100 : 99 9 [\ $@$@$@$@ \/*= ? 0=, \ ?]?]# .
=, > ; , & ; , | (opérateurs binaires d'égalité , de plus grand que , de conjonction logique , et de disjonction logique ), et ~ (négation logique unaire). example input de forme resulting stack) :
$ - Reproduit l'élément le plus élevé de la pile : → 0 1 1 de 0 1$
% - Supprime l'élément le plus élevé de pile : 0 1% → 0
\ - échanges les deux éléments le plus élevé de pile : → 0 2 1 de 0 1 2 \
@ - Tourne le troisième article de pile jusqu'au dessus : 0 1 2 3@ → 0 2 3 1
ø - Sélection : Copie le nième article de pile jusqu'au dessus : 7 8 9 2ø → 7 8 9 7 Variables
Les variables sont les lettres minuscules simples (a-z). Toutes les variables sont globales. : (deux points) place une variable à la valeur au dessus de la pile (IE, 3a : assigne la valeur 3 à l'a) et au variables ; (point-virgule) lit leurs valeurs (IE, a ; pousserait 3 sur la pile si a a été assigné 3). L'utilisation lourde de la pile dans FAUX élimine beaucoup de besoin de variables, et ils utilisation principal avec des sous-routines. Sous-routines
Les sous-routines sont des expressions du calcul du lambda, et sont des morceaux de code contenus entre le et le (période) imprime l'article le plus élevé de pile comme nombre entier. . Le " ; apply" ; l'opérateur est ! . Il prend l'expression de calcul de lambda sur la pile et la court. Noter que si la valeur sur la pile n'est pas une expression de lambda, le programme se comportera anormalement. (qui prend la pile courante et incrémente la valeur supérieure par 1), et s'applique ceci à 3, laissant la pile en tant que 4. Flux de commande
FAUX a deux rapports du flux de commande , si et tandis que. Si
Le " ; if" ; l'opérateur est ? . Il prend les deux éléments supérieurs de pile, le dessus étant une expression de lambda ; la seconde étant un booléen, et courses l'expression de lambda si le booléen est vrai. qui assigne 3 au B. Tandis que
Le " ; while" ; l'opérateur est #. Il prend les deux éléments principaux de pile, les deux expressions de lambda, et évalue continuellement le deuxième élément, puis l'élément supérieur, jusqu'à ce que le second arrête le renvoi vrai (c'est-à-dire, laissant un booléen vrai sur la pile). (qui met 2 sur la pile et court pour quelqu'expression de lambda soit contenu en le f) variable tant que la variable a est égale à 1. Cordes
Les cordes de que ne sont pas de vraies données saisissent FAUX ; elles existent seulement en tant que constantes de chaîne et ne peuvent pas être stockées directement sur la pile ni dans les variables, et ne peuvent pas être modifiées. Cependant, elles peuvent être contenues dans les expressions de lambda (qui peuvent être stockées). Quand une corde est produite elle est simplement imprimée comme rendement. Les cordes sont n'importe quel caractère que l'ordre entre double-cite (" ; " ; ), y compris des caractères NL. Ainsi, un programme consistant simplement en " ; Bonjour monde ! " ; imprimerait le " ; Bonjour monde ! " ; suivi d'une nouvelle ligne. Entrée-sortie
Indépendamment des cordes, qui s'impriment, FAUSSES a un certain nombre d'opérateurs pour l'entrée-sortie et derrière les jets de norme de .
le , (virgule) imprime l'article le plus élevé de pile comme caractère du ASCII .
^ lit un caractère simple d'entrée standard et le pousse sur la pile.
ß rince l'entrée standard et les trains de sorties standard. Commentaires
Des commentaires sont délimités par le { et } . Des commentaires ne peuvent pas être nichés. Coder les exemples
Programmes d'échantillon pris de la page Web FAUSSE de langage de programmation : copy ; > infile ; outfile ß [,] # Voir également
programmation en avant le langage , dont la structure de FAUX a été dérivée.
Langage de programmation ésotérique
langage de programmation Empiler-orienté par Random links: Énergie foncée | 1989 en Inde | Processus de Ketazine | Aerarium | Exposition obligatoire | FALSO