lua Datei parsen
-
Hallo,
ich muss eine Anwendung in C schreiben, die eine Lua datei parsen soll, die lua datei sieht ungefähr so aus:
UploadData = {
["intellect_mana"] = "5180",
["defensesParry_increasePercent"] = "0.00",
["item_finger2_id"] = "29285",
["pvp_rank"] = 0,
["item_legs_id"] = "24262",
["spirit_base"] = 150,
["Race"] = "Untoter",
["Bosskills"] = {
["Terestian Illhoof"] = 1,
["Prince Malchezaar"] = 1,
["The Lurker Below"] = 1,
["Nightbane"] = 1,
["Hydross the Unstable"] = 1,
["Netherspite"] = 1,
["Shade of Aran"] = 1,
["The Curator"] = 1,
["Gruul the Dragonkiller"] = 1,
["Magtheridon"] = 1,
},
["item_wrist"] = "Interface\\Icons\\INV_Bracer_07",
["item_shirt"] = "Interface\\Icons\\INV_Shirt_01",
["item_mainHand"] = "Interface\\Icons\\INV_Staff_06",
["rangedDamage_max"] = 312.0899963378906,
["item_waist_tooltip"] = "Gurt der Zerstörung--Seelengebunden--Taille--100 Rüstung--+18 Ausdauer--+13 Intelligenz--+9 Zauberschaden--+4 Kritische Zaubertrefferwertung und +5 Zauberschaden--Sockelbonus: +4 Ausdauer--Haltbarkeit 35 / 35--Benötigt Stufe 70--Anlegen: Erhöht kritische Zaubertrefferwertung um 20.--Anlegen: Erhöht durch Zauber und magische Effekte verursachten Schaden und Heilung um bis zu 39.--|cff00ff00{Hergestellt von Moktursk}|r--{Zum Sockeln Shift-Rechtsklick}--",
["resistances_fire"] = 33,
["max_mana"] = 8291,
["agility_armor"] = "74",
["Class"] = "Magier",
["defensesParry_percent"] = 0,
["XP"] = 132,
["ArenaTeam"] = {
{
["bgR"] = 2927,
["borderB"] = 0.2941176470588235,
["weekPlayed"] = 0,
["emblemG"] = 0.5450980392156862,
["borderR"] = 0.5529411764705883,
["bgB"] = 0.1254901960784314,
["playerPlayed"] = 0,
["seasonWins"] = 0,
["teamRating"] = 1500,
["Members"] = {
{
["weekPlayed"] = 0,
["class"] = "Magier",
["weekWin"] = 0,
["seasonPlayed"] = 0,
["online"] = 1,
["name"] = "Aninra",
["level"] = 70,
["seasonWin"] = 0,
["rank"] = 1,
}, -- [1]
{
["seasonPlayed"] = 0,
["seasonWin"] = 0,
["name"] = "Blindeyez",
["class"] = "Krieger",
["weekPlayed"] = 0,
["level"] = 70,
["weekWin"] = 0,
["rank"] = 0,
}, -- [2]
{
["seasonPlayed"] = 0,
["seasonWin"] = 0,
["name"] = "Kadnezar",
["class"] = "Hexenmeister",
["weekPlayed"] = 0,
["level"] = 70,
["weekWin"] = 0,
["rank"] = 1,
}, -- [3]
{
["seasonPlayed"] = 0,
["seasonWin"] = 0,
["name"] = "Smub",
["class"] = "Druide",
["weekPlayed"] = 0,
["level"] = 70,
["weekWin"] = 0,
["rank"] = 1,
}, -- [4]
},
["weekWins"] = 0,
["teamRank"] = 0,
["seasonPlayed"] = 0,
["borderG"] = 5,
["teamName"] = "Schmackes",
["bgG"] = 0.5882352941176471,
["emblemR"] = 2,
["emblem"] = 0.2352941176470588,
["emblemB"] = 0.5607843137254902,
["teamSize"] = 3,
}, -- [1]
{
["bgR"] = 804,
["borderB"] = 0.9450980392156863,
["weekPlayed"] = 0,
["emblemG"] = 0.8509803921568627,
["borderR"] = 0.8627450980392157,
["bgB"] = 0,
["playerPlayed"] = 0,
["seasonWins"] = 7,
["teamRating"] = 1534,
["Members"] = {
{
["weekPlayed"] = 0,
["class"] = "Magier",
["weekWin"] = 0,
["seasonPlayed"] = 0,
["online"] = 1,
["name"] = "Aninra",
["level"] = 70,
["seasonWin"] = 0,
["rank"] = 1,
}, -- [1]
{
["seasonPlayed"] = 0,
["seasonWin"] = 0,
["name"] = "Badmole",
["class"] = "Priester",
["weekPlayed"] = 0,
["level"] = 70,
["weekWin"] = 0,
["rank"] = 1,
}, -- [2]
{
["seasonPlayed"] = 12,
["seasonWin"] = 7,
["name"] = "Bandits",
["class"] = "Schurke",
["weekPlayed"] = 0,
["level"] = 70,
["weekWin"] = 0,
["rank"] = 1,
}, -- [3]
{
["seasonPlayed"] = 12,
["seasonWin"] = 7,
["name"] = "Capslock",
["class"] = "Hexenmeister",
["weekPlayed"] = 0,
["level"] = 70,
["weekWin"] = 0,
["rank"] = 0,
}, -- [4]
{
["seasonPlayed"] = 0,
["seasonWin"] = 0,
["name"] = "Euryale",
["class"] = "Magier",
["weekPlayed"] = 0,
["level"] = 70,
["weekWin"] = 0,
["rank"] = 1,
}, -- [5]
{
["weekPlayed"] = 0,
["class"] = "Jäger",
["weekWin"] = 0,
["seasonPlayed"] = 0,
["online"] = 1,
["name"] = "Janos",
["level"] = 70,
["seasonWin"] = 0,
["rank"] = 1,
}, -- [6]
{
["weekPlayed"] = 0,
["class"] = "Priester",
["weekWin"] = 0,
["seasonPlayed"] = 12,
["online"] = 1,
["name"] = "Moktursk",
["level"] = 70,
["seasonWin"] = 7,
["rank"] = 1,
}, -- [7]
{
["seasonPlayed"] = 12,
["seasonWin"] = 7,
["name"] = "Nobleman",
["class"] = "Paladin",
["weekPlayed"] = 0,
["level"] = 70,
["weekWin"] = 0,
["rank"] = 1,
}, -- [8]
{
["seasonPlayed"] = 12,
["seasonWin"] = 7,
["name"] = "Quathul",
["class"] = "Krieger",
["weekPlayed"] = 0,
["level"] = 70,
["weekWin"] = 0,
["rank"] = 1,
}, -- [9]
.
.
.
.
etcMeine Frage ist welchen datenstruktur(Baum) ist hier am besten geeignet und dazu bitte eine Erklärung wie man die Elementen darin Einfügt.ein Element besteht aus Index und Value, das ist was immer zwischen Anführungstzeichen ist!
Danke schom im voraus.
-
Warum besorgst du dir nicht einfach LUA?
Und warum muss es ausgerechnet diese Datenstruktur sein, könntest du nicht etwas mehr zu denem Vorhaben sagen?
Kannst du dir nicht selber ein Format zum Speichern von Daten schreiben?
-
was meinst du mit dem LUA?, was an der Format der speichern angeht, habe ich keinen Einflusß!
-
http://www.gamedev.de/index.php?name=News&file=article&sid=177
http://de.wikipedia.org/wiki/Lua
Ansonsten: Was verstehst du unter Parsen!? Ich verstehe dein Problem nicht, am Besten du schreibst mal mehr zu deinem Vorhaben...
-
Die Elementen der Datei müssen erkannt werden:
jedes Element hat einen Wert: Beispiel ["intellect_mana"] = "5180", aber manchmal könnte ein Element mehrere Elementen haben wie der:
["Bosskills"] = {
["Terestian Illhoof"] = 1,
["Prince Malchezaar"] = 1,
["The Lurker Below"] = 1,
}der ["Bosskills"] ist selbst Nachfolger der Upload Element und der ist gleichzeitig einen Vater von mehreren Nachfolger.
diese Verschachtlung muß beachtet werden beim Speichern der Elementen in dem Datenstruktur.
UploadData = {
["intellect_mana"] = "5180",
["defensesParry_increasePercent"] = "0.00",
["item_finger2_id"] = "29285",
["pvp_rank"] = 0,
["item_legs_id"] = "24262",
["spirit_base"] = 150,
["Race"] = "Untoter",
["Bosskills"] = {
["Terestian Illhoof"] = 1,
["Prince Malchezaar"] = 1,
["The Lurker Below"] = 1,
-
Implementiere doch wie Dummie schon gesagt hat Lua in dein Projekt. Dann brauchst du da überhaupt nichts parsen, denn Lua würde das von sich aus tuen und du könntest auf alle Tabellen zugreifen.
-
ist das möglich ohne Lua? da ich die Applikation mit C implemtieren muß!
-
sahrab00 schrieb:
ist das möglich ohne Lua? da ich die Applikation mit C implemtieren muß!
hast du eigenltich irgendeinen schimmer, was lua überhaupt ist?
-
Hallo,
Lua ist in Ansi C geschrieben, so steht es jedenfalls bei Wikipedia.
Du könntest dir den Quellcode besorgen und in der Dokumentation nachlesen, welche Funktionen für das Einlesen von Luna-Dateien gebraucht werden.
Diese könnest du dann benutzen.
http://www.lua.org/mirrors.htmlWenn du aber den Parser selber schreiben willst, dann brauchst du schon ganz exakte Angaben und Kenntnisse über dieses Dateiformat.
Gruß,
p.
-
proggingmania schrieb:
Hallo,
welche Funktionen für das Einlesen von Luna-Dateien gebraucht werden.
Diese könnest du dann benutzen.Ähm, das wird mal absolut 0 funktionieren
Das was er da oben hat ist die Lua Tabellenstruktur. Da müsste er zig hundert Funktionen des Lua Parsers übernehmen. Er braucht einfach nur Lua in sein Projekt einbinden und die Datei dann mit lua_dofile ausführen. Dann kann man über den Lua Stack auf die einzelnen Variablen aus der Datei zugreifen.Aber ohne nen blassen Schimmer von Lua zu haben (und scheinbar auch keine Lust sich einzulesen) wird das natürlich nicht so einfach.
-
Hast du denn überhaupt genaue Informationen über das Dateiformat ?
Hast du auch Infos darüber, ob Lua das Format überhaupt lesen kann ?MfG