Представляете, сегодня я поделал немного Иколайси и вдруг осознал, что надо переписывать часть кода, а конкретно компиляцию операндов (и выражений, выражение это разновидность операндов).
Суть вот пококова: В Лайси имя Name может быть субнеймами разделёнными через точку. libname.modulename.variablename, как-то так. Когда-то давно я хотел сделать, чтобы переменные можно было называть с точками в названиях, но понял, что это фуватен солюшн (если вы яснопонимаете). Короче, имена с точками только для использования, а не декларации. Такие точки и возникают, если, например, импортировать библиотеку. Но также точки могут случиться, если происходит обращение к членам. У вас есть члены? Члены могут быть у структур, но также это могут быть не члены, а псевдонимы или методы. У людей тоже есть члены — ручки, ножки, почки и прочие листочки. Но это не к тексту, а к разбавлению внимания. В любом случае, я понял, что операнды надо перед компиляцией обрабатывать. Сначала нахожу что за переменная используется по имени итерирую, обрезая правую часть имени. Если это темплейт, так вообще у операнда должен быть постфикс вызова функции. Вот, потом члены надо преобразовать в постфиксы (про постфиксы ниже), то есть надо будет нормально взять и определить, что за индексы у членов (структуры), а если это метод, то вообще взять переменную и первый операнд (имя) станет аргументов для вызова. Постфиксы в моей реализации компилятора Лайси это то, что добавляется к операндам при взаимодействии с ними едиными. Индекс '', референс ->, члены .membername, функ калл (x,y,z)! Соответственно, придётся теперь нормально обрабатывать постфиксы, чтобы разработка облегчилась. Ни одну из фич я до сих пор не ввёл, всё в нескольких сложных копошусь.