Russian Qt Forum
Сентябрь 21, 2024, 13:58 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QLALR  (Прочитано 8822 раз)
SABROG
Гость
« : Май 17, 2009, 11:43 »

Увидел, что используя эту утилиту можно сгенерить парсер для xml файлов. Но встал вопрос с пониманием этой штуки.
Как я понял, правила для парсинга задаются в .g файле, который потом прогоняется утилитой qlalr и на выходе мы должны получить готовый исходник (.cpp) парсера xml. Правильно? Или qlalr может автоматический создать xml парсер для любого формата xml'я? И в некоторое замешательство меня привел такой кусок из примера dummy-xml:

Код
C++ (Qt)
   inline int nextToken()
   {
       switch (*bufptr++) {
       case '\0':
           return EOF_SYMBOL;
 
       case '<':
           in_tag = true;
           return LEFT_ANGLE;
 
       case '>':
           if (! in_tag)
               break;
           in_tag = false;
           return RIGHT_ANGLE;
           break;
 
       } // switch
 
       return ANY;
   }
 

Т.е. тут вообще не используется модуль QtXml, а разбор идет по-тексту...

Может кто-нибудь подробней объяснить предназначение этой утилиты?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Май 17, 2009, 12:30 »

Я как-то тоже в неё сунулся, но снаскоку не понял. В лаборатории тролей написано, что руководство надо читать по оригинальной софтине, т.е. Lalr
Записан

Юра.
SABROG
Гость
« Ответ #2 : Май 17, 2009, 12:39 »

Я так понял это вообще алгоритм так называется. Пытался найти документацию, но что-то безуспешно. Рунет похоже вообще мало что о нем знает.
---
Хотя нет, знает. Но все абстрактно и поверхностно. А это вообще очень полезно:

Цитировать
-Как познакомиться с девушкой (советы хакера)-

Не стоит начинать с демонстрации своих успехов в области построения таблиц для LALR(1)-компилятора - это понятно не всем девушкам. Для начала лучше ограничиться спокойными занятиями типа игры в "Lines" ("Шарики"). Можно показать, как вы разогнали свой Word и как он теперь не только исправляет ошибки, но и дописывает слова в процессе ввода. Совершенно исключен "Doom", так как даже самой терпеливой девушке уже после двух часов обычно надоедает смотреть, как вы в него играете, и после окончания уровня вас может ждать сюрприз похлеще босса - соседний стул окажется пуст. Во время игры в "Lines" несколько раз, как бы случайно, проведите мышкой не по столу, а по ее руке. Когда девушка привыкнет, замените мышку своей рукой. Далее обычно применяется нисходящий разбор с возвратами, неоднократно доказавший свою эффективность. После его окончания, когда у нее заблестят глаза и зарумянятся щеки, приступайте наконец к кульминационному моменту, ради которого, собственно, вы это все и затевали, - "Тетрису" в четыре руки!
« Последнее редактирование: Май 17, 2009, 12:46 от SABROG » Записан
Rcus
Гость
« Ответ #3 : Май 17, 2009, 12:46 »

Про LALR обычно рассказывают на 3-4 курсе, предмет "Теория языков программирования и методов трансляции" Улыбающийся

Поскольку вспоминать это не хочется могу посоветовать Dragon Book (http://en.wikipedia.org/wiki/Compilers:_Principles,_Techniques,_and_Tools#Second_edition), этой книгой можно убить (без шуток), но там полюбому есть нужная глава. Улыбающийся А еще можно курить доки по flex/lex и bison/yacc

ADD: Все же спрошу, чем не угодил QtXml и QXmlStreamReader?
« Последнее редактирование: Май 17, 2009, 12:50 от Rcus » Записан
SABROG
Гость
« Ответ #4 : Май 17, 2009, 12:53 »

Юр, как же так? http://www.forum.crossplatform.ru/index.php?showtopic=8

Сцылко не работаит Грустный
--
Нашел http://horna.org.ua/books/compilers/Aho%20-%20compilers.djvu
--
Rcus, ну дык погоня за скоростью, весом, автоматизацией, знаниями. А то как-то не правильно иметь папку utils в исходниках Qt и не понимать для чего там программы нужны.
« Последнее редактирование: Май 17, 2009, 12:56 от SABROG » Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #5 : Май 17, 2009, 13:28 »

>>Юр, как же так?
А я её не читал, она большая и в электронном виде. Я большие книги читаю только в бумажном.

>>А то как-то не правильно иметь папку utils в исходниках Qt и не понимать для чего там программы нужны.
помоему троли QLALR используют для создания парсера QtScript, где-то я такое читал.
« Последнее редактирование: Май 17, 2009, 13:31 от lit-uriy » Записан

Юра.
SABROG
Гость
« Ответ #6 : Май 17, 2009, 14:44 »

Почитал я книжечку. Все-равно, что читать книгу на неизвестном тебе языке. Формулы какие-то, символы с закорючками, слова незнакомые с которыми ничего в мозгу не ассоциировано. Пример калькулятор даже понять не смог.

.g файл походу вообще самопридуманный Qtшниками. Из его структуры ничего не понятно. Например те же %decl, %impl, %parser.
Записан
drsm
Гость
« Ответ #7 : Май 19, 2009, 19:43 »

Синтаксический анализ

LR-анализатор

LALR parser
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.146 секунд. Запросов: 22.