LINUX.ORG.RU

Qod. Опубликовал исходники компилятора, над которым работаю

 , qod, ,


4

4

Финально определился с названием языка, подчистил разные хвосты и написал README. Теперь наконец-то можно посмотреть на нечто большее, чем просто фрагменты кода в постах на форуме: https://github.com/wandrien/qod/

Драфты по дизайну языка пока еще не готовы. Если перед НГ завала работы не будет, то может выложу их в течение пары недель. Черновики пишу на русском, осилить всё чётко сформулировать на английском в разумные сроки я точно не смогу. На русском-то не всегда получается.

Надеюсь, что после публикации материалов по языку, мне щедро насыпят в панамку как конструктивной, так и не очень, критики.

А пока можно посмотреть на сам код вживую.

★★★
Ответ на: комментарий от wandrien
when P1 == nDICT & P2 == nDICT:
			return true;

when P1 == nDICT & P2 != nDICT:
			exit;
when P1 != nDICT & P2 == nDICT:
			exit;

тут 6 сравнений вместо двух. со всеми вытекающими. от эффективности кода, до читаемости и потенциала к ошибкам.

alysnix ★★★
()
Ответ на: комментарий от alysnix

до читаемости и потенциала к ошибкам.

Да, вот так должно выглядеть:

forever do
  when P1 == nDICT & P2 == nDICT:
    return true;

  when P1 == nDICT:
    return false;
  when P2 == nDICT:
    return false;
  when Dict[P1].pType != Dict[P2].pType:
    return false;

  P1 = Dict[P1].pNext;
  P2 = Dict[P2].pNext;
end:forever

от эффективности кода

А вот это буллшит.

wandrien ★★★
() автор топика
Последнее исправление: wandrien (всего исправлений: 1)
Ответ на: комментарий от alysnix

Вот кстати, фишка. Допустим я убрал return false в самом конце, но забыл заменить один из exit на return false:

	word P1 = Dict[pARGS1].pFirst;
	word P2 = Dict[pARGS2].pFirst;
	forever do
		when P1 == nDICT & P2 == nDICT:
			return true;

		when P1 == nDICT:
			return false;
		when P2 == nDICT:
			return false;
		when !T_Equal(Dict[P1].pType, Dict[P2].pType):
			exit;

		P1 = Dict[P1].pNext;
		P2 = Dict[P2].pNext;
	end:forever
end

Получаем ошибку компиляции:

ошибка: Функция должна возвращать значение
wandrien ★★★
() автор топика