LINUX.ORG.RU

Знает кто-нибудь реализацию AST на Си?


0

1

Пишу свой микро-парсер для подмножества языка Си. Парсер готов, а вот со структурой дерева и алгоритмом обхода непонятки. Си++ не годиться - я в нем не понимаю, LLVM тоже пользовать нехочу - полработы уже сделано, без всяких лишних зависимостей. Все что встретил в сети - LLVM и/или C++.

★★★★★

Парсер готов, а вот со структурой дерева и алгоритмом обхода непонятки.

какие там могут быт непонятки? почитай про то как AST делаются (этоне сложно) и вперёд, раз уж задумал велосипед строить

shty ★★★★★
()

> Пишу свой микро-парсер для подмножества языка Си.

Си++ не годиться - я в нем не понимаю


разрыв шаблона...
во школьнички пошли...
это звучит как заявление - я изобрел машину времени, но ничего не понимаю в ядерном синтезе, подскажите помогите
не смешно?))

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

Просто чувак вообще кодить не умеет и вообще не понимает что ему надо(я не про цпп).

anonymous
()

Может, токенизатор готов? Если парсер написан, то уж придумать структуру данных для AST — легче легкого.

note173 ★★★★★
()
Ответ на: комментарий от note173

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

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

А чем же 'токенизатор' отличается от лексера? Ты же понимаешь, что тебе с этим аст, еще работать? И понимаешь что аст это весьма-общая вещь, зависящая от миллиона факторов

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

токенизатор разбивает текст на поток токенов, поступающий на обработку лексера, который уже разбивает его на значащие блоки. С АСТ работать буду в lua, я его планирую экспортировать из Си в Lua

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

за lcc - спасибо, там очень все прозрачно оказалось

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

Да, он не сложный, мне же не все множество Си надо.

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

Спасибо. Раньше не сталкивался с комиляторами с этой стороны.

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

это пипец какой ржач))))
ох уж эти луа кодеры...
а нафига вам вообще тогда Си? пишите все на луа

токенизатор разбивает текст на поток токенов, поступающий на обработку лексера, который уже разбивает его на значащие блоки.


за вас уже все придумали, называется flex & bison
а за AST дерево кроме wiki еще может быть написано в книге дракона о компиляторах

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

я не луа кодер. В моей программе плагины на луа. И для одного плагина нужен парсер

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

XVilka ★★★★★
() автор топика

use Common Lisp

anonymous
()

Не изобретай велосипедов. Делай AST в виде обычного бинарного дерева (сериализуемого в S-выражения), это гибче чем городить вагон структур. Если парсер уже есть, то AST само собой получится.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.