LINUX.ORG.RU

Простой парсер CSS DIY

 ,


0

1

Добрый день.

Возникла необходимость написать самый примитивный парсер CSS файла (строго ограниченный набор свойств) на си. Размер кода, который получится очень имеет значение, все шьется в железку. си 99.

Что я надумал:
1. Делается функция, которая читает файл и разбивает его на отдельные блоки (имя{...}) в строки (делает список). 2. Делается функция, которая парсит эти блоки на предмет параметров (делает список строка(имя) + строка(значение)). 3. берется хеш от имени параметра и делается switch. 4. Разгребаются свичи. Как это можно сделать проще? Размер исходного кода и скомпиленного кода крайне критичен.

Как это можно сделать проще?

Всё, что ты надумал, только в один проход.

Apple-ch ★★ ()

Размер исходного кода и скомпиленного кода крайне критичен

Крайне - это сколько?

re2c ( http://re2c.org ) может неплохо помочь для выделения токенов. Ну и код будет небольшой

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

Воспользуйся каким-нибудь генератором парсеров (выше уже один подсказали). Генератор парсеров принимает на вход грамматику языка, который ты разбираешь, и возвращает сгенерированный парсер.

theNamelessOne ★★★★★ ()

Размер кода, который получится очень имеет значение, все шьется в железку. си 99

лепи форт.

ибо процы ща быстрые

а твой конечный автомат будет наиболее компактный в случае простейшего «адрессного интерпретатора» и «адрессов-токенов» состояний парсера.

всё уместиш в 1кТокенов (код) менее 1 кило кода интерпретатора и машиных примитивов и таблицу имён тегов.

удачи в нахождении колмогоровской сложностпарсера CSS

qulinxao ★★☆ ()

если же парсеры - кури простейший нисходящий парсер.

qulinxao ★★☆ ()

Я думал, тут заказ, а тут помочь просят. Собственно, ты всё правильно думаешь.

Размер исходного кода и скомпиленного кода крайне критичен.

-Os

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