Какой символ оператора деления Вы выбрали бы?

Я в настоящее время разрабатываю и реализую маленький язык программирования как проект дополнительного кредита в уроке, который я посещаю. Моя проблема состоит в том, что язык имеет три числовых типа: Долго, дважды, и Часть. Части могут быть записаны на языке как правильные или неправильные дроби (например, "2 1/3" или "1/2"). Этот факт приводит к проблемам, таким как "2/3.5" (Длинный/Двойной) и "2/3" (Длинный/Длинный) не обрабатываемый правильно лексическим анализатором. Лучшее решение, которое я вижу, состоит в том, чтобы изменить оператор деления. До сих пор я думаю "\", лучшее решение, так как "//" запускает комментарии.

Вы выбрали бы "\" при разработке языка?

Вы выбрали бы что-то еще? Если так, что?

Примечание: изменение путем фракционируется, записаны, не возможно.

Заранее спасибо за Вашу справку,

Править-

Текущие операторы:

** (питание)

* (умножиться)

% (модуль)

+ (добавить)

- (вычтите и отрицание),

~ (обратная величина)

! (НЕТ)

> (больше)

< (меньше)

>= (больше-равный)

<= (менее - равный)

== (равенство)

<> (неравенство)

& (И)

| (ИЛИ)

^ (XOR)

?? (пустой-указатель-coalesing)

= (присвоение)

Примечание: Я не нахожусь ни под какими строго обязательными требованиями своего учителя; однако, я в основном убедил его, что мог превратить калькулятор простой дроби на язык. Изменение синтаксиса части шло бы вразрез с синтаксисом дробного калькулятора для частей, которого предпочтительно избегают.

8
задан Anthony Forloney 29 April 2010 в 14:37
поделиться

12 ответов

Я не совсем уверен, в чем проблема, поскольку не знаю теории грамматики. Но я бы попробовал изменить правильный синтаксис дробей, например, на 2_1/3, с подчеркиванием, а не пробелом.

Насчет использования \ в качестве оператора деления - мне бы это точно не понравилось, поскольку он используется практически во всех языках в качестве управляющего символа. Я бы не рекомендовал такую перегрузку значений.

5
ответ дан 3 November 2019 в 12:49
поделиться

Я думаю, что двухсимвольный / | - возможная идея. / - это деление, а | выглядит как дробь, повернутая на 90 градусов.

Если вы разрешаете квадратные или унарные операторы, я могу порекомендовать вам [2 1/2] или # 1/2 .

1
ответ дан 3 November 2019 в 12:49
поделиться

Еще одна причина, по которой не следует использовать \ в качестве замены для / , заключается в том, что это может вызвать путаницу относительно того, какой операнд - числитель и знаменатель.Например, арифметические операторы MATLAB включают в себя правое деление / и левое деление \ . Значение 1/2 равно 0,5, а значение 1 \ 2 равно 2. Другими словами, / имеет числитель слева, а \ имеет числитель справа.

3
ответ дан 3 November 2019 в 12:49
поделиться

Ответ APL: ÷. Я думаю, это узнаваемо.

9
ответ дан 3 November 2019 в 12:49
поделиться

А как насчет того, чтобы требовать, чтобы тип Fraction использовал двойное значение во всех случаях; т.е. 2.0 / 3.5 vs 2 / 3.5 Тогда новый оператор не требуется.

1
ответ дан 3 November 2019 в 12:49
поделиться

Как насчет того, чтобы сделать дроби основным типом данных? Рассматривать оператор деления как инфиксный конструктор?

1
ответ дан 3 November 2019 в 12:49
поделиться

Допускаете ли вы в своей грамматике компактные операторы if типа

condition ? trueblocks : falseblocks;

-? Если нет, то вы можете использовать ':' в качестве оператора деления. В конце концов, это стандартный математический символ для деления (вручную, на бумаге) во многих (большинстве?) местах вокруг слова.

7
ответ дан 3 November 2019 в 12:49
поделиться

Вы можете принять несколько нестандартное соглашение J: % для деления (потому что это вроде как символ деления) и | для деления по модулю.

Но тогда вам нужно найти что-нибудь еще для побитового ИЛИ. Возможно, / ?

1
ответ дан 3 November 2019 в 12:49
поделиться

Я не буду выбирать '\', потому что он менее доступен, чем '/' на клавиатурах. а также более широко используется. так что ваши программисты будут больше чувствовать себя дома.

0
ответ дан 3 November 2019 в 12:49
поделиться

Я бы избегал \ как сумасшедший, поскольку это сбивает ожидания людей.

Я бы продолжал использовать /, но вывел бы проблему из лексера в парсер, где с ней будет легче справиться, и вы сможете выдавать разумные сообщения об ошибках.

1
ответ дан 3 November 2019 в 12:49
поделиться

Если это для класса, я бы просто использовал ключевое слово типа dividedby. В противном случае вам придется выяснять, что означает / по контексту. Других подходящих одиночных символов действительно нет.

Однако имейте в виду, что ваш учитель может попросить вас решить контекстную задачу, и в этом случае он хочет, чтобы вы использовали слеш. Я бы спросил.

1
ответ дан 3 November 2019 в 12:49
поделиться

Как насчет слова "div"?

6
ответ дан 3 November 2019 в 12:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: