-
- Сам файл конфига 20кб. И прикинь, он одномоментно вольётся через UART. Разобрать и записать куда надо не успеешь. Вот я о чём. А для одного алгоритма разбора строк 200 байт, например нужно (там может комментариев стольько, в строке, на 200 fk0(225 знак., 13.03.2012 22:44)
- Ну что за чушь, конфиг разбирается на лету посимвольно, в экстремальном случае нужен буфер только на 1 (один) символ. Машина состояний рулит. - =AlexD=(14.03.2012 07:57)
- Дадада, вообще весь компьютер можно представить в виде конечного автомата. Только памяти для хранения состояния нужно не меньше, чем было памяти у ЭВМ. Также и тут. Число состояний будет измеряться переменной на несколько порядков более fk0(1002 знак., 14.03.2012 11:39)
- Символы тупо разбираются на лету синтаксическим анализатором с выкидыванием всего лишнего - один автомат, поиск ключевых слов - второй автомат, поиск имён параметров - третий, разбор значений параметров - четвёртый (это если правила сложные, а =AlexD=(214 знак., 14.03.2012 13:00)
- Уже 4 автомата, замечательно. А им что, состояние хранить не надо? А там, случайно, автомат не со стеком состояний получается? Одни вопросы. Я в отличии от, хотя бы несколько парсеров за жизнь написал. Работающих. И в отличии от fk0(916 знак., 14.03.2012 14:48)
- Ну не стоит собачиться. Истина посередине. Некоторые автоматы вырождаются в простейшие функции. Есть здравый смысл у AlexD. - Vladimir Ljaschko(14.03.2012 15:07)
- Я всё не пойму, ты правда даун, или прикидываешься? Всё сказанное мной из моей реальной практики. Четыре автомата - четыре байта хранения состояний. Плюс накладных расходов пару указателей. Сущие копейки. Короче завязывай с куревом. - =AlexD=(14.03.2012 15:01)
- За такую манеру разговора за пределами интернета ты давно бы в табло получил. А если по существу: изначальное утверждение (отматываем тред на 3 сообщение выше) мол "вообще не требует памяти, нужен один символ" -- ЛОЖНО (память автомата -- fk0(1597 знак., 14.03.2012 15:52)
- Чтож ты так нервничаешь, успокойся. AlexD говорил про 1 байт для приема, а не для работы всего парсера. А четыре автомата это не очень то сложно, AlexD прав. А 4 байта состояний автоматов этот вовсе не 2^32 состояний, используется всего несколько Михаил Е.(50 знак., 14.03.2012 16:30)
- Попробуй дать оценку минимально возможному количеству состояний. Во-первых речь уже не о так называемом "недетерминированном конечном автомате" (Структуры данных и алгоритмы - Ахо, Хопкрофт, Ульман -- для справки). Потому, что он должен же как-то fk0(1968 знак., 14.03.2012 17:09 - 17:13)
- Есть такой проект -- re2c. Генерирует из заданного описания прямой C-код ДКА (без таблиц) для разбора регулярных выражений с высокой скоростью. Я ему ради интереса задал регулярное выражение требующее разбора одного из 28 токенов. На выходе fk0(8517 знак., 14.03.2012 18:46 - 18:48)
- Извини, сейчас статьи некогда читать, работы много:)) В прикрепленном файле (самый маленький нашел) пример моего автомата. Состояние определяется переменной step. Никаких таблиц, всего 4 состояния. Статьи потом погляжу. Михаил Е.(14.03.2012 18:09)
- Я здесь парсера не вижу в упор. - fk0(14.03.2012 18:49)
- На тебе парсер, если делать нехрена. Я тебе про автоматы, а ты про космические корабли. Михаил Е.(14.03.2012 22:57)
- Я здесь парсера не вижу в упор. - fk0(14.03.2012 18:49)
- Попробуй дать оценку минимально возможному количеству состояний. Во-первых речь уже не о так называемом "недетерминированном конечном автомате" (Структуры данных и алгоритмы - Ахо, Хопкрофт, Ульман -- для справки). Потому, что он должен же как-то fk0(1968 знак., 14.03.2012 17:09 - 17:13)
- Если ты не в состоянии придумать алгоритм, который ищет совпадение в таблице отсортированных слов посимвольно, сохраняя только указатель и счётчик, то это характеризует исключительно только твои умственные способности. =AlexD=(225 знак., 14.03.2012 16:29)
- Свои способности ты сам уже охрактеризовал. Указатель КУДА? На единственный байт памяти? Не надо юлить и заниматься словоблудием. В этих автоматах есть память в "неявном виде". - fk0(14.03.2012 16:46)
- Да, на "единственный байт" :-)) - =AlexD=(14.03.2012 16:52)
- Свои способности ты сам уже охрактеризовал. Указатель КУДА? На единственный байт памяти? Не надо юлить и заниматься словоблудием. В этих автоматах есть память в "неявном виде". - fk0(14.03.2012 16:46)
- Чтож ты так нервничаешь, успокойся. AlexD говорил про 1 байт для приема, а не для работы всего парсера. А четыре автомата это не очень то сложно, AlexD прав. А 4 байта состояний автоматов этот вовсе не 2^32 состояний, используется всего несколько Михаил Е.(50 знак., 14.03.2012 16:30)
- За такую манеру разговора за пределами интернета ты давно бы в табло получил. А если по существу: изначальное утверждение (отматываем тред на 3 сообщение выше) мол "вообще не требует памяти, нужен один символ" -- ЛОЖНО (память автомата -- fk0(1597 знак., 14.03.2012 15:52)
- Уже 4 автомата, замечательно. А им что, состояние хранить не надо? А там, случайно, автомат не со стеком состояний получается? Одни вопросы. Я в отличии от, хотя бы несколько парсеров за жизнь написал. Работающих. И в отличии от fk0(916 знак., 14.03.2012 14:48)
- Забыл сказать. Если у него там тупо ИМЯ = значение, то далее всё просто. А если сложная грамматика, то после разбивки на токены и начинается автомат. Его лучше бы записать в виде EBNF и руками на бумажке записать все переходы, потом кодировать. fk0(54 знак., 14.03.2012 11:45)
- Символы тупо разбираются на лету синтаксическим анализатором с выкидыванием всего лишнего - один автомат, поиск ключевых слов - второй автомат, поиск имён параметров - третий, разбор значений параметров - четвёртый (это если правила сложные, а =AlexD=(214 знак., 14.03.2012 13:00)
- Дадада, вообще весь компьютер можно представить в виде конечного автомата. Только памяти для хранения состояния нужно не меньше, чем было памяти у ЭВМ. Также и тут. Число состояний будет измеряться переменной на несколько порядков более fk0(1002 знак., 14.03.2012 11:39)
- Не, это понятно, я построчно буду передавать, с ACK на каждую строку. - Vladimir Ljaschko(13.03.2012 22:50)
- Кто мешает файл конфига разбить на три-пять-десять? - Shura(13.03.2012 22:45)
- На миллибиты. - fk0(14.03.2012 00:12)
- Ну что за чушь, конфиг разбирается на лету посимвольно, в экстремальном случае нужен буфер только на 1 (один) символ. Машина состояний рулит. - =AlexD=(14.03.2012 07:57)
- Сам файл конфига 20кб. И прикинь, он одномоментно вольётся через UART. Разобрать и записать куда надо не успеешь. Вот я о чём. А для одного алгоритма разбора строк 200 байт, например нужно (там может комментариев стольько, в строке, на 200 fk0(225 знак., 13.03.2012 22:44)