2012-02-29 2 views
1

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

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

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

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

+0

«yield return» не является ключевым словом в C#. «yield» - это ключевое слово * contextual *, которое имеет только особый смысл в некоторых контекстах. –

ответ

2

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

1

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

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

Идея заключается в том, что если в «еще, если» это только начало выражения после «другого» ключевого слова.

образец того, что я имею в виду, в комментариях

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 как только начало следующего выражения.

+0

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

Смежные вопросы