Предыстория: я делаю парсер который можно быстро перенастроить на какой-нибудь другой язык. Парсер умеет в типы, и проблемы различить
int y=foo(100);
int x(y);
от
typedef int y;
int x(y);
проблемы как таковой нету но ощущается ощущение некрасоты и необходимости очень много тестировать, особенно когда это всё будет прикручиваться к редактору: там в силу требований быстро подсказывать и подсвечивать возникает много нюансов. И один из них это то, что парсер где-то должен вычислять является ли буковка типом или ссылкой на переменную. это не проблема была бы, если бы не нужно при этом было учитывать ситуацию когда объявление типа находится ниже по тексту. В общем гемор.
Упрощением было бы всегда указывать явно что перед нами функция: тогда можно было предварительно распарсить редактируемую строку, оставив «висячие» ссылки на типы которые будут ниже по тексту.
но для этого нужен хороший красивый синтаксис, например:
int func x(y z)
int fn x(y z)
парсится идеально но выглядит вырвиглазно. конечно можно сделать тип опциональным, но вдруг есть менее вырвиглазные варианты? например
function(int) x(y z) //тип явный
function x(y z) //тип по тому что возвращают
сделать
function x(y z) -> int
можно но блин ну насколько же это мразотно выглядит. как будто пробежал окамловец и насрал. сделать можно сразу все варианты кстати.
может я чего-то простого не понимаю, и есть красивый вариант который мне в голову не приходит? что-то покрасивее вышеописанного?


