Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
-7 / 1 / 0
Регистрация: 24.08.2013
Сообщений: 26

Как правильно прочитать данные из S-expression?

25.10.2015, 13:42. Показов 1969. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую.
С Лиспом не знаком.
А тут значится сервер отдаёт ответ в S-expression.
Я конечно могу выдрать нужное мне манипулируя какой либо регуляркой, но хотелось бы так как задумывалось разрабами сервера

И вот незадача.., Пол дня читал про скобочки, но хоть кол на голове чеши - непонятно.
Написано непонятно, остаётся масса вопросов и главное ни где не удалось найти вменяемого примера разбора скобочек на что то наглядное и понятное...

Как их читать?
Я так понял что парами... но как?
Это пары читать надо дискретно или они как цепочка?
Т.е. напр.: (знач1 знач2 знач3) это:
знач1 знач2
знач3 Nil
или
знач1 знач2
знач2 знач3
знач3 Nil

Как предположим выражение ( A ((B C (D E) F Nil) (G H) )) представить в виде словаря "ключ : значение" (значение соответственно тоже может быть словарём )?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.10.2015, 13:42
Ответы с готовыми решениями:

Как правильно прочитать данные?
Как правильно прочитать данные? "ER-200" 06:43 10:40 "Red Arrow" 23:55 07:55 "Express" 23:59 08:00 "Slow Train 1" 10:00 09:59...

C# и COM порт: как правильно прочитать данные
Здравствуйте. Написал простой код и не могу понять почему не работает. Кто подскажет буду очень признателен. using System; using...

Как правильно открыть c# проект в expression blend 4
Как правильно открыть c# проект в expression blend 4 что бы можно было его оформить(закрасить батоны, лейблы и тд)? когда я открываю, можно...

34
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
25.10.2015, 16:04
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Mitrich-Al Посмотреть сообщение
Можно ли список преобразовать к словарю/ассоциативному массиву?
Можно. По Вашему собственному усмотрению. Т.е. функция преобразования зависит от Вас или положенияч Луны.

Добавлено через 1 минуту
Цитата Сообщение от Mitrich-Al Посмотреть сообщение
Значит можно быть уверенным, что элементы должны быть на своих местах не зависимо от реализации. и вытаскивать их можно, преобразовав список к массиву по индексу
Так?
Совсем не обязательно. Вам уже мой товарищ два раза намекнул что без знания протокола эти данные просто мусор. Сумеете этот мусор слепить в картинку? Значит не зря едите свой хлеб.
0
-7 / 1 / 0
Регистрация: 24.08.2013
Сообщений: 26
25.10.2015, 16:05  [ТС]
___________________________
Хм...
ну вот предположим:

("CHARSET" "UTF-8") - Ежу понятно, не так ли? Почти русским языком написано...

Но вопрос?
Как парсить?
Что искать "CHARSET" и брать следующий за ним элемент? Вроде логично...
Но почему вся пара находится в выражении где то в середине в массе др скобок?
( A ((B C ("CHARSET" "UTF-8") F Nil) (G H) ))
Что означает эта её позиция?
Почему ВСЁ не набор пар например?
Как она увязана с др элементами? Или не увязана?
Что выступает ключём к получению ("CHARSET" "UTF-8") ?
Атом "А"?
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
25.10.2015, 16:05
Цитата Сообщение от Mitrich-Al Посмотреть сообщение
Хм кстати про вложенность...
Как она обычно трактуется?
Элемент списка является списком. Деревья, не?
0
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
25.10.2015, 16:06
Цитата Сообщение от Mitrich-Al Посмотреть сообщение
Хорошо список, так список, но список имеет логику для обращения к нему или четко по позиции вытаскиваются элементы?
Не имеет, только по позиции.

Цитата Сообщение от Mitrich-Al Посмотреть сообщение
Можно ли список преобразовать к словарю/ассоциативному массиву? (чисто графический пример если можно, функции на лиспе приводить не надо)
Вряд ли. С одной стороны, список — проще, потому что он заиндексирован номерами. С другой стороны, за счёт вложенности списками можно имитировать словари (правда, с порядком).

Цитата Сообщение от Mitrich-Al Посмотреть сообщение
Значит можно быть уверенным, что элементы должны быть на своих местах не зависимо от реализации. и вытаскивать их можно, преобразовав список к массиву по индексу
Если вы имеете в виду многомерные индексы типа такого:

Цитата Сообщение от Mitrich-Al Посмотреть сообщение
2.1.3.1 D
то да. Конечно, если ваш внутренний формат подразумевает доступ O(n), то вы не станете, например, итерировать по списку с помощью индексов, а то получается квадратичная сложность вместо линейной, как пишет castorsky.
0
-7 / 1 / 0
Регистрация: 24.08.2013
Сообщений: 26
25.10.2015, 16:07  [ТС]
______

Ясно логика, чисто в Соглашении Так?
Т.е. если написано бери следующий за "CHARSET" элемент то так и делай, если написано бери 10-й то значит так..
0
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
25.10.2015, 16:11
Цитата Сообщение от Mitrich-Al Посмотреть сообщение
Как она обычно трактуется?
Можно трактовать выражение ( A ((B C (D E) F Nil) (G H) )) так что:
А - ключ
((B C (D E) F Nil) (G H) ) - значение
в ((B C (D E) F Nil) (G H) ) напр:
Нет.

Перечитывайте, пока не поймёте, пример списка (A ((B C (D E) F Nil) (G H))):
Цитата Сообщение от helter Посмотреть сообщение
Список из двух элементов. Первый ― атом A. Второй ― список ((B C (D E) F Nil) (G H)). Второй список также имеет два элемента, первый из них ― (B C (D E) F Nil), второй ― (G H). Список (B C (D E) F Nil) состоит из 5 элементов, третий из которых является двухэлементным списком.
Цитата Сообщение от Mitrich-Al Посмотреть сообщение
Что выступает ключём к получению ("CHARSET" "UTF-8") ?
Атом "А"?
Я ещё раз — самый последний — повторю. В S-выражениях никакой этой информации нет. Вся информация — в мануале к конкретному протоколу вашего конкретного сервера.
1
-7 / 1 / 0
Регистрация: 24.08.2013
Сообщений: 26
25.10.2015, 16:17  [ТС]
Я ещё раз — самый последний — повторю. В S-выражениях никакой этой информации нет. Вся информация — в мануале к конкретному протоколу вашего конкретного сервера.
Т.е. Логика в Соглашении.

Я понял.
день прожит не зря, "магии" в S-expression специальной нет, можно раздербанить как представится нужным без боязни потерять нечто связанное со скобками.

Спасибо. )
0
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
25.10.2015, 16:23
Цитата Сообщение от Mitrich-Al Посмотреть сообщение
"магии" в S-expression специальной нет
Универсальность S-выражений даже позволяет использовать их как запись языков программирования.

Цитата Сообщение от Mitrich-Al Посмотреть сообщение
Я понял.
Цитата Сообщение от Mitrich-Al Посмотреть сообщение
без боязни потерять нечто связанное со скобками
Я думаю, это взаимоисключающие параграфы. Этак вы и HTML начнёте дербанить, не обращая внимания на тэги.
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
25.10.2015, 16:32
Цитата Сообщение от helter Посмотреть сообщение
Не имеет, только по позиции.
Вытаскивать элементы из списка по позиции -- безумие. (C# кстати, питонщики еще любят это делать, на тамошние списки совсем не списки).
Mitrich-Al, Список не подходит для разового доступа. он походит для группировки данных. Например вытащить все элементы удовлетворяющие критерию. Т.е. пройтись по списку ровно один раз порлностью (чем страдают select и poll в unix системах, и что замечательно бело замещено на epoll а linux).

Добавлено через 2 минуты
Цитата Сообщение от Mitrich-Al Посмотреть сообщение
Ясно логика, чисто в Соглашении Так?
да
Цитата Сообщение от helter Посмотреть сообщение
Универсальность S-выражений даже позволяет использовать их как запись языков программирования.
Bravo! =))
0
-7 / 1 / 0
Регистрация: 24.08.2013
Сообщений: 26
25.10.2015, 16:33  [ТС]
Я думаю, это взаимоисключающие параграфы. Этак вы и HTML начнёте дербанить, не обращая внимания на тэги.
ну это уже крайности, согласитесь (хотя..., почему бы и нет.., бывают задачи когда вся структура хтмл и не нужна).

В данном ключе я имею в виду что я лично глазками вижу связь между элементами S-expression напр: ("CHARSET" "UTF-8")
CHARSET ключ (или имя переменной)
UTF-8 - значение
О чём и сообщаю своему поделию.

Если не вижу то RTFM

А скобки либо игнорю либо использую если нахожу удобным напр для раскладки по массивам или ещё чего нибудь

В общем спасибо. Всё ясно
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
25.10.2015, 16:36
Цитата Сообщение от Mitrich-Al Посмотреть сообщение
В данном ключе я имею в виду что я лично глазками вижу связь между элементами S-expression напр: ("CHARSET" "UTF-8")
Эта связь должна быть описана соглашекнием, иначе это мусор.
0
-7 / 1 / 0
Регистрация: 24.08.2013
Сообщений: 26
25.10.2015, 16:57  [ТС]
Цитата Сообщение от castorsky Посмотреть сообщение
Эта связь должна быть описана соглашекнием, иначе это мусор.
Да, да, понятно...
Меня первоначально ввела в заблуждение информация про точечные пары. Показалось что эквивалентом должен быть словарь но к нему никак не удавалось привести без "разрывов" т.к. получались пустые ключи и вообще бредятина.
А оказалось что это просто коллекция и ничего более.
1
25.10.2015, 19:42

Не по теме:

этот питоновский новояз вымораживает, словарь у нормальных людей всегда был ассоциативным массивом

0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
29.10.2015, 20:44
Цитата Сообщение от Mitrich-Al Посмотреть сообщение
Как она обычно трактуется?
Как угодно. Зависит от функции, обрабатывающей это значение.
0
-7 / 1 / 0
Регистрация: 24.08.2013
Сообщений: 26
30.10.2015, 07:34  [ТС]
Что тов. korvin_, скучно? ;)

Тема исчерпана...

PS.
Тов. castorsky, я не знаю чего там в Питоне (никогда не интересовался)...
Каким тернистым путём прошла ваша мысль для того, что бы заключить, внезапно, О_о что я считаю словарь чем-то иным нежели как ассоциативным массивом навсегда останется для меня загадкой.
Эта тайна будет жить в моём сердце... ;)
Адью! )))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.10.2015, 07:34

Как прочитать данные из ячейки, и если она пуста добавить данные
Привет всем. У меня есть вот такой код: <?php $arrqq = array($row->id); foreach($arrqq as $d => $s) { $imagetext =...

Как правильно прочитать скрипт?
Разъясните, пожалуйста, что означает каждая из строк данного скрипта. Суть его заключается в том что при вводе данных в одну колонку в...

Как правильно прочитать объявление?
Как правильно прочитать данную конструкцию ((unsigned char*)(&a)) ? Вот код.Помогите пожалуйста. #include "stdafx.h" ...

Как правильно прочитать конструкцию?
LEA EDX,DWORD PTR SS: как это правильно читается можно по подробней пожалуйста?

Как правильно прочитать InputStream?
На сервер приходит HTTP запрос нужно как то его прочитать. public void run() { String headers = "HTTP/1.0 200...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
День 5 из 28: Codex подсказывает следующий запрос
and_y87 12.10.2026
9 октября 2026 года OpenAI запустила бету Composer predictions — подсказок следующего сообщения в текущем диалоге Codex. Это помощь с формулировкой запроса, а не автоматическое продолжение задачи. . . .
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru