Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 30.05.2022, 19:01
Аспирант
Отправить личное сообщение для Дмитрий Луценко Посмотреть профиль Найти все сообщения от Дмитрий Луценко
 
Регистрация: 24.05.2022
Сообщений: 36

Спасибо за Вашу критику
Получается, можно сделать следующие выводы:
- Реализация компилятора на JS - гиблое дело.
- Лучше самому изучать учебники по компиляторам и хоть как-то сделать этот проект, нежели просить кого-то сделать его. Проблема в том, что я не могу сделать сам, не хватает уверенных знаний и терпения.

Вот то, что мне сказал преподаватель:
- сделай лексический анализатор (выведи результат его работы), передавай результат в следующий анализатор
- сделай синтаксический анализатор (выведи результат его работы) , передавай результат в следующий анализатор
- сделай семантический анализатор (выведи результат его работы), передавай результат на синтезатор
- Синтез кода (выведи результат его работы).

Вот тебе список того, что должна распознать программа(int,<название_пере енной> if, else и далее по требованиям)
На чем делать будешь анализаторы и синтезатор - выбирай сам.
Язык входной грамматики - какой хочешь
Язык выходной грамматики - какой хочешь.

Библиотеки flex, bison и тп не используй. Нужна собственная реализация.

Это были все требования преподавателя, я практически буквально его процитировал.

Можно тогда получить советы: Как правильно составить ТЗ, чтобы все его поняли, или как мне реализовать каждый шаг?

Сейчас критику я воспринимаю спокойнее, торопиться мне уже некуда.
Просто хочу уже закрыть вопрос с этим несчастным компилятором.
Ответить с цитированием
  #12 (permalink)  
Старый 31.05.2022, 12:23
Аспирант
Отправить личное сообщение для Дмитрий Луценко Посмотреть профиль Найти все сообщения от Дмитрий Луценко
 
Регистрация: 24.05.2022
Сообщений: 36

Согласно всем обсуждениям, написать транслятор на JS - задача трудновыполнимая и дорогостоящая.

Зазря только всех всполошил да и сам свое время потерял.
Спасибо большое за ваши советы и критику.

Буду решать своими силами, на сколько это возможно.
Ответить с цитированием
  #13 (permalink)  
Старый 31.05.2022, 15:38
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Она такая же трудновыполнимая, как и в другом языке.

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

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

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

Так что с вашим бюджетом, вам к студентам
Да и шанс, что со относительно свежими знаниями в голове студент не сольется спустя неделю - выше
Может стоит поискать среди студентов вашего факультета?
Ответить с цитированием
  #14 (permalink)  
Старый 31.05.2022, 15:44
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Студенты вашего факультета будут потенциально лучше из-за одинаковой программы
Потому что объем и качество изучаемого материала может отличаться

Где-то для сдачи достаточно написать калькулятор, и хорошо если не с польской нотацией
А где-то есть отдельные подробные факультативы с очень глубоким изучением теории грамматик, и вроде даже исследование новых подходов(в общем случае разбор грамматики идет в комплекте с отдельным математическим аппаратом)
Ответить с цитированием
  #15 (permalink)  
Старый 31.05.2022, 15:59
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Также хочу отметить что 3 подзадачи не равноценны по сложности

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

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

В качестве первой вехи(рискую предположить, что на этом этапе уже часть разработчиков отсеется после пробы), поддержать синтаксис только объявление переменных с таким тестовым примером
int a = 1, b, c = 2;
int d = 3;

Его особенность в том, что в нем есть
1. под-список из разных типов нод(VariableDeclarator с инициализацией и без)
2. под-список из одинаковых сущностей(VariableDeclaration-ы)

Захват под-списка, без зацикливания - это один из примеров, который отделяет правильно выбранную архитектуру для данного типа грамматики

Затем усложнить пример до
int a = 1, b, c = 2;
cout << a;
int d = 3;

Тут уже VariableDeclaration-ы перемешаны с Statement-ами

Ну а затем остальные пункты синтаксиса
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что именно делает код Яндекс метрики? GDR Events/DOM/Window 12 18.08.2014 23:37
Как вызвать свою функцию из «чужого» кода в Java Script, не переписывая «чужой» код? korobochkin Библиотеки/Тулкиты/Фреймворки 2 19.07.2014 16:17
Ошибка при вставке php кода в js код zevilz Общие вопросы Javascript 6 10.10.2012 19:21
Запуск кода с фрейма, код в родительском окне - КАК ? lamer Javascript под браузер 7 06.05.2012 15:15
Разбиение по строкам в JavaScript'е кода Tesessssss Events/DOM/Window 3 31.07.2010 10:27