Здравствуйте, wl., Вы писали:
wl.>немного похожи на json. Чем подобное парсят?
Емнип, boost::Qi, Spirit2, вроде hana из последнего. Описываешь грамматику и оно само всё парсит. Но придётся вспоминать базу.
local function load_data(name)
local res,fn,err={},loadfile(name)
if err then error(err,2) end
setmetatable(_G,{__newindex=function(t,n,v) res[n]=v end})
local ok,err=pcall(fn)
setmetatable(_G,nil)
if err then error(err) end
return res
end
data=load_data "data.lua"
Здравствуйте, so5team, Вы писали:
S>Здравствуйте, wl., Вы писали:
wl.>>немного похожи на json. Чем подобное парсят?
S>Сейчас я бы смотрел сперва на lexy. S>Если хочется поупарываться C++ными шаблонами, то есть еще PEGTL и Boost.Spirit.
S>Если не хочется выписывать DSL прямо в C++, а проще подключить внешний инструмент, то можно глянуть на Ragel, Coco/R или упоминавшийся выше Antlr4.
Здравствуйте, wl., Вы писали:
wl.>немного похожи на json. Чем подобное парсят?
Кроме символа '=' вместо символа ':' — не заметил отличий от json. Но, может, проглядел. Я бы взял какой-нибудь готовый json парсер, например nlohman, и, если он искаропки не поддерживает замену разделителя ключ-значение, то нашел бы, где он там явно задаётся, и заменил бы его
Здравствуйте, Marty, Вы писали:
M>Здравствуйте, wl., Вы писали:
wl.>>немного похожи на json. Чем подобное парсят?
M>Кроме символа '=' вместо символа ':' — не заметил отличий от json. Но, может, проглядел. Я бы взял какой-нибудь готовый json парсер, например nlohman, и, если он искаропки не поддерживает замену разделителя ключ-значение, то нашел бы, где он там явно задаётся, и заменил бы его
В json текстовые ключи в кавычки надо заключать ещё.
Здравствуйте, Sm0ke, Вы писали:
M>>Кроме символа '=' вместо символа ':' — не заметил отличий от json. Но, может, проглядел. Я бы взял какой-нибудь готовый json парсер, например nlohman, и, если он искаропки не поддерживает замену разделителя ключ-значение, то нашел бы, где он там явно задаётся, и заменил бы его
S>В json текстовые ключи в кавычки надо заключать ещё.