LINUX.ORG.RU

Какой бы синтаксис придумать для функции?

 ,


0

3

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

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

можно но блин ну насколько же это мразотно выглядит. как будто пробежал окамловец и насрал. сделать можно сразу все варианты кстати.

может я чего-то простого не понимаю, и есть красивый вариант который мне в голову не приходит? что-то покрасивее вышеописанного?



Последнее исправление: ckotctvo (всего исправлений: 2)
Ответ на: комментарий от ugoday

надо еще символов из суахили и смайликов добавить чтоб програмист реально задолбался. еще можно ввести функцию автоматического оскорбления программиста и показывания дикпиков. чтоб знал что программирование это боль

ckotctvo
() автор топика
Ответ на: комментарий от ckotctvo

Если писать на ассемблере, то и усложнять ничего не придётся.

jpegqs
()
Ответ на: комментарий от LINUX-ORG-RU

Ты конечно извини, но банальщина. Слева-направо, сверху-вниз. Все как у всех. Никакого переменного выполнения, нет изюминки.

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

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

У меня в emacs всё делается весьма удобно. Остальным соболезную.

ugoday ★★★★★
()

Короче предлагаю универсальный вариант.


int a = 5;
String b = "aaaaaa";
Function<int> myFunction = (int a, String b) {
    return 5;
}

implement (int a, int b, int c) for Sting {
    print a+b+c;
} 

a(2); //error () is not definded for int
b(2); //error (x) is not definded for String
b(1,1,1); //print 3
myFunction(a, b); //=5
ya-betmen ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.