Git Product home page Git Product logo

42's People

Contributors

brazhenko avatar hyperclick avatar kosyan62 avatar makondratev avatar slava-nya avatar youpaw avatar

Forkers

slava-nya

42's Issues

fulfill libcc with libft functions

all usefull functions from libft must be implemented with the same signature as in original libc:
e.g. memcpy() NOT ft_memcpy. lookup cc.h header for info how way make it

usage:

add printing usage for all builtins

Описание проекта

Заполнить в файле README.md черновое описание нашего проекта(Description), сделать выдержки из сабджекта.

Реализовать лексический анализатор строки

Лексический анализатор принимает на вход строку, считанную из ридлайна, либо из файла, и строит по данной строке AST-дерево. Дерево строится на основе полного списка лексем. На данный момент из списка лексем убраны лексемы для шелл скриптинга, но в дальнейшем, возможно, будут добавлены. При разработке нужно это учесть.
Прототип дерева, которое должно получится на выходе:
{
char *node_name;
int node_code;
int index;
int length;
left_node;
right_node;
}

где index - это индекс вхождения слова в считанной строке
len - длина слова
right_node и left_node ветви дерева
node_name должно хранить значение одной из лексем из общего списка лексем
node_code код лексемы из списка
верхней нодой дерева всегда будет пайп который имеет хотя бы одного ребенка (в противном случае файл или введеная строка пустые или имеют только пробельные символы)

Разработка в отдельной ветке, на выходе должна получится либа Lexlib, в которой должна присутствовать функция lexer.
Прототип функции
int lexer(char *line, t_ast **ast)

где line это строка из ридлайна или файла
ast - адрес дерева с вышописанным прототипом (на выходе должно содержать построенное дерево либо null в случае ошибки)
int - возвращаемый код ошибки, либо 0

Все возможные ошибки нужно задефайнить в .h файле. При возникновении ошибки печатать на стандартный вывод ошибок соответствующее сообщение об ошибке.

Полный список лексем:
lexem_cutted_list.pdf
#UPD убрал compound_list, пока без него тоже
Мануал по лексическому анализу:
Основы синтаксического разбора.pdf

Оформить инициализацию readline

Отдельный сишник с инициализацией tty, отдельный сишник с restore_tty, отдельный сишник с остальной инициализацией (вызывает инициализацию tty)

SHLVL

SHLVL does not change

Реализовать лексический анализатор

Лексический анализатор принимает на вход строку считанную из ридлайна, либо файловый дескриптор и исходя из списка лексем генерирует из строки массив токенов.
Перед генерацией токенов лексер разбирает все бэкслэши и кавычки в соответствии с posix.
Ссылки на правила формирования и распознание токенов posix.

Разработка ведется в соответствующей ветке lexer.

Для лексера готов прототип .h файла с прототипами функций.

Реализовать фреймворк тестирования

Нужно написать тулзу (не важно на чем) которая будет брать собранный нами бинарь и запускать его в сгенеренной песочнице направляя в него набор команд и сравнивая вывод с выводом той же команды у шелла. Для тестирования можно сравнивать вывод шелла и шелла. Основное требования чтобы было просто добавлять команды для тестирования (каждая команда запускается в новой песочнице, но неплохо было бы сделать запуск последовательный команд в одной песочнице). Фреймворк должен выводить сам тест, пройден он или нет и дифф с шеллом чтобы можно было понять где ошибка, если вылетает сега, то тоже это выводить. В идеале бинари запускать с валгриндом и показывать есть ли утечки.

Реализовать парсер

Разработка ведется в ветке parser
После релиза лексера нужно будет его по нормальному подключить
Прототип .h файла в папке libparse

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.