Как избежать пробелов в ключевых словах - PullRequest
1 голос
/ 29 февраля 2012

Я проектирую язык. Меня беспокоит то, что называть «иначе, если». Мой язык использует отступ для блоков, поэтому мне нужно ключевое слово "else if".

Python использует "elif" (meh ...), а Ruby использует "elsif" (yuck!). Лично я ненавижу использовать сокращения, поэтому я не хочу использовать ни одно из них. Вместо этого я думаю просто использовать «else if», где между «else» и «if» может появиться произвольное количество пробелов.

Я заметил, что это не часто встречается в языках программирования. C # имеет ключевое слово yield return, но это единственный пример, который я могу вспомнить.

За этим стоит проблема реализации? Я создал свой файл lex, и он принимает ключевое слово без проблем. Я волнуюсь, есть кое-что, о чем я не думал.

Ответы [ 2 ]

2 голосов
/ 29 февраля 2012

Пока вы не разрешаете встроенные комментарии / переводы строк, нет ничего плохого в ключевых словах из нескольких слов. Единственное, что else if может ввести в заблуждение ваших языковых пользователей, заставляя их писать else while или else for. Вам будет сложно объяснить им, что ваше else if является ключевым словом, а не двумя утверждениями, следующими друг за другом.

1 голос
/ 10 марта 2012

Из любопытства зачем использовать ключевое слово "else if"?Вы можете просто иметь ключевое слово «else», а следующее - это выражение ... выражение «if».

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

Идея состоит в том, что if в «else if» - это только началовыражение после ключевого слова "else".

Пример того, что я имею в виду, согласно комментариям

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

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

Приведенная выше концепция заключается в том, что return 4 ничем не отличается от if и это "аргументы".Пока вы назначаете начало следующей команды в той же строке (даже если это не считается хорошей формой), вы можете трактовать if в else if как только начало следующего выражения.

...