Найти - Пользователи
Полная версия: Как создать синтаксический анализатор кода?
Начало » Центр помощи » Как создать синтаксический анализатор кода?
1 2 3 4
FishHook
dmitriyLutsenko
В чем Ваша проблема? Что за пассивная агрессия? Может, у Вас нет опыта написания проектов схожей тематики, но за других -то не надо говорить.

ну… подождём более других
dmitriyLutsenko
py.user.next
Об этом я и говорю. Кришнаит такой, с розовыми соплями, одной ногой в канализационном люке, жрёт с помойки и со столиков в Макдональдсе тайком, где люди не доели еду и оставили крошку-картошку, но при этом счастлив и всем говорит “да вы ничего не понимаете просто! а я-то понимаю как раз! я счастье напрямую черпаю из космоса! а вы дураки все! ха-ха-ха-хари-хари-рама!”.
Да почему ты со мной так общаешься? Что за сравнение? Я тебе что плохого то сделал? Может, обидел я тебя чем?
dmitriyLutsenko
Ситуация у меня такая.
Курс лекций по компиляторам в вузе моему потоку не читали. По печальному стечению обстоятельств преподаватель по предмету поменялся. И тему курсовой работы я получил новую. “Сделать переводчик с одного языка на другой”. Дали такие требования:
распознать переменные, конструкцию if-else, присвоение =, операции сравнения <, >, ==
Все.
Кода, по конструкции сложнее этого, не будет:
program Hello;
var
a: integer;
b: integer;
{c: integer;}
begin
a := 1;
b := 2;
{c := 3;}
if a < b then
writeln('a < b')
else
writeln('a >= b');
{if c < b then
writeln('c < b')
else
writeln('c >= b');
}
end.
Новый преподаватель понимает, какая у нас ситуация, и что эта тема больше для полноценного диплома, нежели курсовой проект(даже на уровне лабораторной работы). Поэтому оценивает по принципу: “Главное, чтобы работало”.
dmitriyLutsenko
FishHook
ну… подождём более других
Да, уже дождался

Слишком горячий прием для новичка
dmitriyLutsenko
py.user.next
Напиши транслятор, который хотя бы пустую программу на одном языке в пустую программу на другом языке транслирует. Начни с этого. Это такой Hello World в компиляции.
Попробую реализовать
FishHook
dmitriyLutsenko
Я вообще не понял, нафига ты на меня наехал, мне кажется, мой пост был вполне информативен.
Я повторю мысль, если она была непонятна сразу. Ты пытаешься получить на форуме знания. Это не то, как форумы работают и для чего они предназначены. Знания дают учебники. Ну просто невозможно вместить в сообщение в несколько десятков строк хоть сколько-нибудь полезную информацию по теории синтаксического анализа, даже если бы кто-то хотел этим заниматься. Да даже просто, как устроена структура, содержащая граф абстрактного синтаксиса, в двух словах не расскажешь. Посмотри в мой профиль на дату регистрации, некий опыт общения онлайн налицо, правда? Вот руководствуясь этим опытом, я тебе первым же сообщением дал понять, что форум - не источник знаний и ты зря теряешь время. На форум приходят за помощью в решении конкретных проблем, когда собственных мозгов не хватает, тогда на помощь приходит коллективный разум. Еще раз повторю, в виде резюме: учебных материалов по теме - миллион, реализаций в открытом коде - миллион, всё отлично гуглится. Ну в чем проблема то?
dmitriyLutsenko
FishHook
dmitriyLutsenkoЯ вообще не понял, нафига ты на меня наехал, мне кажется, мой пост был вполне информативен.
Если я тебя обидел, то извини.

На меня часто наезжают на форумах. Задаешь вопрос любой сложности - получаешь по шапке. Начиная от “в гугле забанили?” до послания “Ты никто и твой код хуже фекалий. А помогать не буду, потому что гладиолус.”.

Не отвечать на подобное, значит дать другим возможность жестко меня троллить и обесценить необходимость решения вопроса. Знаю - проходил уже.

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








FishHook
dmitriyLutsenko
- может, есть репозитории с реализацией задачи смежной тематики?

Так любой опен-сорсный продукт, который чего-то транслирует/компилирует можно посмотреть. Да тот же питон. Вот, например, как устроен модуль ast в питоне
https://github.com/python/cpython/blob/3.10/Lib/ast.py, а вот так в го https://pkg.go.dev/go/ast, а вот в расте https://doc.rust-lang.org/beta/nightly-rustc/rustc_ast/ast/index.html

ищите и обрящете
dmitriyLutsenko
FishHook
Так любой опен-сорсный продукт, который чего-то транслирует/компилирует можно посмотреть. Да тот же питон. Вот, например, как устроен модуль ast в питоне
https://github.com/python/cpython/blob/3.10/Lib/ast.py, а вот так в го https://pkg.go.dev/go/ast, а вот в расте https://doc.rust-lang.org/beta/nightly-rustc/rustc_ast/ast/index.html
ищите и обрящете
Спасибо тебе большое за жесткую но конструктивную помощь
py.user.next
FishHook
таблетку забыл выпить?
Велика вероятность, что он не сможет реализовать это. Сначала надо трансляцию пустой программы реализовать, затем реализовать трансляцию программы с одним оператором, затем поменять оператор с одного на другой, но чтобы код продолжал транслировать как то, так и это правильно. И так далее.

FishHook
Вот, например, как устроен модуль ast в питоне
а вот так в го
а вот в расте
А на расстоянии миллиарда световых лет обнаружена кротовая нора, ну-ка слетай туда и узнай, куда она ведёт. Если ведёт в прошлое, то можно слетать через неё и препода замочить ещё в зародыше, не дать отцу препода оплодотворить мать препода, который вот этот вот, который ничего не читал им, а потом ещё и сменился, вовремя соскочил, называется.

Ты ему такие вещи предлагаешь. Он код читать не умеет даже. Какие деревья в питоне? Тут пластмассовый горшок нужен в углу, чтобы если он обделается на простой трансляции, чтобы ему было куда какать.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB