Question

Je conçois une langue. Je suis troublé par ce qu'il faut appeler "d'autre si". Mon langage utilise l'indentation pour les blocs, j'ai donc besoin d'un mot-clé pour "else if".

Python utilise "elif" (meh ...) et Ruby utilise "elsif" (beurk!). Personnellement, je déteste utiliser des abréviations, donc je ne veux utiliser aucun de ces éléments. Au lieu de cela, je pense simplement utiliser "else if", où un nombre arbitraire d'espaces peut apparaître entre "else" et "si".

J'ai remarqué que cela ne se produit pas très souvent dans les langages de programmation. C # a "Retour de rendement" comme mot clé, mais c'est le seul exemple auquel je peux penser.

Y a-t-il un problème de mise en œuvre derrière cela? J'ai créé mon fichier lex et il accepte le mot-clé sans problème. Je crains qu'il y ait quelque chose auquel je n'ai pas pensé.

Était-ce utile?

La solution

Tant que vous n'autorisez pas les commentaires en ligne / Newlines, il n'y a rien de mal avec les mots clés multi-mots. La seule chose est que else if pourrait être déroutant pour vos utilisateurs de langue, les tentant d'écrire else while ou else for. Vous aurez du mal à leur expliquer que votre else if est un mot-clé et non deux instructions qui se suivent.

Autres conseils

Par curiosité, pourquoi prendre la peine d'avoir un mot-clé "else if"? Vous pouvez simplement avoir un mot-clé "else" et la prochaine chose est une expression ... une expression "if".

<expression> := IF | somethingelse
IF <expression> THEN <expression> ELSE <expression>

L'idée étant que le si dans "else if" n'est que le début de l'expression après le mot clé "else".

Un échantillon de ce que je veux dire, selon les commentaires

if (x == 1)
    return 5
else return 4

if (x == 1)
    return 5
else if (x == 2)
    return 6
else
    return 7

Le concept ci-dessus étant que le return 4 n'est pas différent du if Et ce sont des "arguments". Tant que vous allouez le début de la commande suivante sur la même ligne (même si ce n'est pas considéré comme une bonne forme), vous pouvez traiter le if dans else if comme le début de la prochaine expression.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top