mlctct синтаксис

Mee8YT

Эксперт
Регистрация
3 Май 2023
Сообщения
369
и так, много изменений
во первых, нету фабрик, мне их лень делать, во вторых, имена событий, функций и циклов не обязательно писать в формате свободного текста, тобеж не обязательно ставить 2 этих символа
в третьих, я отказался от идеи делать $ в аргументах
а значит переключатели придётся заполнять либо поочерёдно со всеми аргументами, либо через ключевое имя

эти изменения связаны с тем, что я взялся на проект, конкретно за компилятор (хотя это больше на транслятор похоже)
 

maxim34a

Эксперт
Регистрация
10 Июн 2023
Сообщения
572
эти изменения связаны с тем, что я взялся на проект
поч? как ты реализуешь всё? регулярками? простыми чеками? лексерами? AST строишь?

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

Mee8YT

Эксперт
Регистрация
3 Май 2023
Сообщения
369
максимум для лексера, чтобы правильно тип токена определить
простыми чеками
БУЭЭ
да
нет, я слишком маленький для этого
в аси пытались ast сделать, но не вышло
я даже близко к этому притрагиваться не буду, слишком страшное дело
просто разбиваю на токены, токены собираю в действия, всё примитивно
в плане поч
почему изменения?
если да, то я раньше хотел обычными проверками обойтись, по этому тот-же вариант с $ в начале аргумента имел смысл, а с токенами не имеет
как ты реализуешь всё
ну, разбиваю всё на токены, затем в парсинге из токенов собираю частицы имён блоков и значений аргументов, в завершающем этапе собираю аргументы и их наименования в один блок, а из блоков делаю линии, эти линии перевожу в джсон
токенизацию фулл взял у асии, а уже дальнейшие этапы включая парсинга самопис
сейчас дописываю парсинг, конкретно определение аргументов и их значений
 

maxim34a

Эксперт
Регистрация
10 Июн 2023
Сообщения
572
почему изменения?
да
ну, разбиваю всё на токены, затем в парсинге из токенов собираю частицы имён блоков и значений аргументов, в завершающем этапе собираю аргументы и их наименования в один блок, а из блоков делаю линии, эти линии перевожу в джсон
вот поч мне и не нравятся лексеры - сначала парсишь текст в токены, потом токены в блоки, потом ещё что-то... а в джсон зачем перевод? и зач тебе линии делать? пофиг на какой линии строка. или про что ты? вот глянь в джаве:
1741359981747.pngи на одной линии
 

Mee8YT

Эксперт
Регистрация
3 Май 2023
Сообщения
369
да

вот поч мне и не нравятся лексеры - сначала парсишь текст в токены, потом токены в блоки, потом ещё что-то... а в джсон зачем перевод? и зач тебе линии делать? пофиг на какой линии строка. или про что ты? вот глянь в джаве:
Посмотреть вложение 10922и на одной линии
ну ээ
я в джаве нуб, по этому делаю на питоне
а в джсон зачем перевод
мод чекает джсон формат, который создаст питон
когда наберусь опыта сделаю компилятор на джаве
в джаве у меня только поверхностные знания, в питоне много опыта
когда фулл проект будет готов на питоне, я смогу удобно перенести смысл кода на джаву
пофиг на какой линии строка. или про что ты?
я про строку кода
1741360154371.png
Сообщение объединено:

и на одной линии
а так да, у меня пофиг как ты пишешь код: с новой строки, сколько пробелов - всё это пофиг, хоть в 1 строку делай
это потому что я использую синтаксис схожий с джавой, и он не на обывателя:
обыватель заебется ставить каждый раз ;
 

maxim34a

Эксперт
Регистрация
10 Июн 2023
Сообщения
572
мод чекает джсон формат, который создаст питон
так а зачем? зачем тебе прокладка ввиде джсона? почему бы сразу не давать моду парсить то, что получилось при токенизации и разбитии на строки?
я в джаве нуб, по этому делаю на питоне
когда наберусь опыта сделаю компилятор на джаве
а, из-за этого? так ты просто щас фигней занимаешься. лучше уж подтяни джаву да вместе с чат гпт сделай. вся проблема в парсерах не в знании ЯП, а в знании, как это реализовать. если ты умеешь лексеры на пайтоне - умеешь и на джаве.
это потому что я использую синтаксис схожий с джавой, и он не на обывателя:
вот в том и проблема - зач такой мод не обывателю? вообще не обыватели не кодят на МЛ. это как кодить на ассемблере - на print(1) у тебя уйдет 10 строк, а в пайтоне - 1.
 

Mee8YT

Эксперт
Регистрация
3 Май 2023
Сообщения
369
умеешь и на джаве
я на джаве не знаю как словари работают, какие лексеры, лол
вот в том и проблема - зач такой мод не обывателю?
обыватель на мл и на блоках не закодит ничего, задавая вопрос "а что такое переменная", а тут ещё Не-блочный вариант...
 

Mee8YT

Эксперт
Регистрация
3 Май 2023
Сообщения
369
брат надо тебе учиться...
как только мод начну делать, так и научусь
Сообщение объединено:

причём код плагина к+ я свободно читаю, понимаю там всё, а в самой базе я ноль
 

Mee8YT

Эксперт
Регистрация
3 Май 2023
Сообщения
369
щас учись. вот что ты конкретно не понимаешь? все изи же. ооп знаешь?
самые базовые конструкции, чтобы свой лексер писать
те же словари
как мне получать символ по индексу?
как в коде узнать, стоит ли \n
как читать файл
как писать моды
и много всего ещё
Сообщение объединено:

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

maxim34a

Эксперт
Регистрация
10 Июн 2023
Сообщения
572
сам же знаешь, я свой мод забилдить не смог, лол
да будто бы в мавене и грейдле кто то разбирается)))
как читать файл
как писать моды
ну это ты далеко берешь))
как мне получать символ по индексу?
#charAt(int index) в стрингах
как в коде узнать, стоит ли \n
charAt(int index) == '\n', т.е сравнение к символу
далеко берешь. тебе сначала надо разобраться с синтаксисом, типами данных, циклами, условиями(&& || & |), затем на массивы[], а уже после этого можно в коллекции идти, где и будет твой ключ - значение, то есть Map
 

Mee8YT

Эксперт
Регистрация
3 Май 2023
Сообщения
369
да будто бы в мавене и грейдле кто то разбирается)))
факт
тебе сначала надо разобраться с синтаксисом, типами данных, циклами, условиями(&& || & |)
уже знаю
а уже после этого можно в коллекции идти, где и будет твой ключ - значение, то есть Map
кто эти дуратские названия придумал, почему высокоуровневые языки люди придумывали, а джаву придумывали замудренные задроты
какая карта, какие хэш мапы...
 

maxim34a

Эксперт
Регистрация
10 Июн 2023
Сообщения
572
Ну вот у тебя база есть...
какие хэш мапы...
Просто подвид мапы, завязанный на хэшах. Там их несколько.

Типа смотри: есть ArrayList, а есть LinkedArrayList. Оба - по сути самые обычные массивы, эррэйлист очень часто используют. В чем разница? Линкед сохраняет порядок добавления, обычный - нет. Типа: в обычный добавишь по порядку числа 2, 3, 1, 4 и они будут в порядке 1, 2, 3, 4; добавишь в линкед и будут в порядке 2, 3, 1, 4
 

Apotheoses

Эксперт
Регистрация
19 Июн 2023
Сообщения
72
LinkedList
Линкед сохраняет порядок добавления, обычный - нет. Типа: в обычный добавишь по порядку числа 2, 3, 1, 4 и они будут в порядке 1, 2, 3, 4; добавишь в линкед и будут в порядке 2, 3, 1, 4
Оба сохраняют порядок добавления

ArrayList реализован внутри в виде обычного массива. Поэтому при вставке элемента в середину, приходится сначала сдвигать на один все элементы после него, а уже затем в освободившееся место вставлять новый элемент. Зато в нем быстро реализованы взятие и изменение элемента – операции get, set, так как в них мы просто обращаемся к соответствующему элементу массива.

LinkedList реализован внутри по-другому. Он реализован в виде связного списка: набора отдельных элементов, каждый из которых хранит ссылку на следующий и предыдущий элементы. Чтобы вставить элемент в середину такого списка, достаточно поменять ссылки его будущих соседей. А вот чтобы получить элемент с номером 130, нужно пройтись последовательно по всем объектам от 0 до 130. Другими словами операции set и get тут реализованы очень медленно.
 
Сверху