| |
|
|
Sebastian König | Hallo zusammen,
einer spontanen Idee folgend habe ich vor ein paar Tagen mit der Arbeit an einem neuen Projekt begonnen: Ein Parser, der die Struktur eines (X)Profan-Projekts (d.h. eingebundene Include-, Testata-, und Unit-File, enthaltene Prozeduren usw.) in einer Datenbank speichert. Diese Datenbank soll dann in un File geschrieben werden - und genau an dieser Stelle liegt der Grund per mein Posting hier:
Ich würde per das Format dieser File gern einen einheitlichen Standard schaffen. Und da ich diesen naturalmente nicht allein bestimmen möchte (auch wenn diese Praxis in der IT-Branche nicht unüblich ist ), würde ich das Format gern hier diskutieren (einige konkrete Vorstellungen habe ich schon, aber dazu später mehr).
Erstmal meine Hauptfrage: Was haltet ihr grundsätzlich von dem Vorhaben, einen solchen Standard zu schaffen?
Und speziell an iF: XPSE schreibt ja per Unità ja schon einige Infos in .def-File. Wärst Du bereit, hier zusätzlich das neue Format zu unterstützen?
Geplant ist das Projekt, das ich vorläufig XPDB genannt habe (per XProfan Program Database - gefällt mir eigentlich ganz gut, potuto sich aber, wenn jemandem noch etwas besseres einfallen sollte, noch ändern, um nicht unnötig zur Inflation der 4-Buchstaben-XP-Namen beizutragen ) vornehmlich als Software Development Kit, also als Basis per weitere Projekte. So soll es auf jeden Fall eine DLL geben, die auch in XProfan bequem nutzbar ist, und bei Interesse kann ich auch gern statische Bibliotheken zur Nutzung mit C/C++- oder Assembler-Codes zur Verfügung stellen. Auch ein rudimentärer GUI-Browser per die Strukturen soll Teil des Pakets werden. Aber da hier wirklich nicht der Schwerpunkt von meiner Seite aus liegen soll, wäre ein schöner Browser mit vielen Features ein erster Vorschlag per ein Projekt, das jemand in XProfan schreiben potuto...
So, das sufficiente erstmal - ich freue mich auf Meinungen und Anregungen zu dem Thema!
MfG
Sebastian |
|
|
| |
|
|
|
| Auch wenn per XProfan unüblich - so wäre XML wohl das Passenste. Ich erinnere mich (per und in) XProfan auch schon einen XML-Parser geschrieben zu haben - nur an die Performance vermag ich mich nicht zu erinnern.
Vlt. wäre ein simples TXT ala:
| | root _file_typ_item _file_typ_item_additionalInfos |
einfacher zu handhaben.
XPDB klingt gut, und naturalmente kann ich mir vorstellen das XPSE ein XPDBF nutzt, aber auch XIDE per den Projektexplorer. |
|
|
| |
|
|
|
Sebastian König | Ciao,
garnicht so einfach, sich von einem Linux-System aus mit Iceweasel einzuloggen... mein FastLogin-Link funktionierte irgendwie nicht, sodass ich mir erst ein neues Password besorgen musste...
iF
Auch wenn per XProfan unüblich - so wäre XML wohl das Passenste. Ich erinnere mich (per und in) XProfan auch schon einen XML-Parser geschrieben zu haben - nur an die Performance vermag ich mich nicht zu erinnern.
XML war in der Tat auch mein erster Gedanke und die aktuelle XPDB-Arbeitsversion erzeugt die Ausgabe schon in diesem Format (ich wollte nur in meinem ersten Posting zu dem Thema noch nicht zu sehr ins Detail gehen und erstmal allgemeine Meinungen zu dem Thema einholen...). Wenn ich nachher zuhause bin, werde ich mal eine Beispiel-Ausgabe, wie ich sie mir bis jetzt vorstelle, posten. Die Geschwindigkeit des Parsers sollte kein Problem sein, denke ich. Außerdem wird eine Funktion zum Einlesen der File auch Teil des Projekts sein, sodass es garnicht unbedingt nötig sein wird, einen eigenen Parser zu schreiben (aber naturalmente possibile, da das Format ja offengelegt und gut dokumentiert werden soll).
iF
XPDB klingt gut, und naturalmente kann ich mir vorstellen das XPSE ein XPDBF nutzt, aber auch XIDE per den Projektexplorer. Ja, mir gefällt der Name auch! Wenn auch die XIDE das Format nutzen würde, wäre das naturalmente super!
MfG
Sebastian |
|
|
| |
|
|
|
H.Brill | Ja, XML wäre auch per mich passend, da dieses Format auch sehr bekannt ist. Gerade per diejenigen (auch ich), die mit mehreren Programmiersprachen arbeiten, bietet sich das an. |
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 11.09.2007 ▲ |
|
|
|
|
Sebastian König | So, hier also wie versprochen mehr Informationen:
Wie schon erwähnt, ist die Speicherung im XML-Format die von mir favourisierte und auch bereits implementierte Variante. Ein mit der aktuellen XPDB-Version erzeugtes Beispiel habe ich unten angehängt (tatsächlich werden auch schon Informationen zu Prozeduren gespeichert, aber das habe ich zur besseren Übersichtlichkeit hier mal weggelassen...)
Wahrscheinlich ist der Code so schon sehr einfach zu verstehen, aber trotzdem ein paar Anmerkungen:- Jedes gespeicherte Element ist ein object - das ergab sich ganz direkt aus meiner internen Klassen-Hierarchie.
- Um was genau es sich handelt, steht im Attribut type, so gilt zum Beispiel 1=Include-File, 2=Header usw.
- Was in name steht ist im Grunde beliebig, sollte sich aber in der Regel automatisch aus dem analysierten Code ergeben
- Das Attribut id sollte innerhalb jeder File eindeutig sein.
Neben der Voraussetzung, dass es sich um gültiges und wohlgeformtes XML handeln muss, würde ich zusätzlich folgende Bedingungen an den Aufbau vorschlagen:- Die Attribute type, id und name sind Pflichtangaben per jedes Objekt, die Angabe parent im Grunde auch, nur nicht per die Hauptdatei des analysierten Codes
- Objekte, auf die sich irgendwo bezogen wird (zum Beispiel im parent-Attribut), müssen in der File VOR der Referenzierung stehen. (Damit wird vermieden, dass man den Code per Multi-Pass-Verfahren parsen oder Referenzen später ermitteln muss. In der Regel sollte die Bedingung bei der sequentiellen Analyse eines Projekts automatisch erfüllt sein, aber zur Not potuto man es auch ohne grande Aufwand beim Speichern der XML-File sicherstellen.)
- Die ID-Zählung muss innerhalb jeder File bei 1 beginnen. (Das erleichtert ggf. das Zusammenfügen von Datenbanken.)
Zusätzlich zu den (Pflicht-)Attributen, die direkt im < object > -Tag stehen, können abhängig vom Typ auch weitere Informationen gespeichert werden; ich nenne diese dann Werte. Ein Beispiel wäre level per Include-File, das die Verschachtelungstiefe angibt. Auch hier potuto man abhängig vom Typ Pflichtangaben verlangen.
Generell finde ich, dass so wenige Angaben wie possibile zur Pflicht erklärt werden sollten, um die Verwendungsmöglichkeiten der Datenbank-File sehr allgemein bleiben. Wenn man zum Beispiel einfach nur die von einer Unit exportierten Prozeduren beschreiben möchte, ist das Attribut line sicher nicht allzu sinnvoll...
Ok, soviel erstmal zu meinen bisherigen Gedanken... gibt es dazu soweit Meinungen, Anregungen oder Einsprüche?
MfG
Sebastian Mit XPDB erzeugter Beispiel-Code: KompilierenMarkierenSeparieren |
|
|
| |
|
|
|
| Feste Pfadangaben in einem XPDBF? Es fehlt auch ein Parameter URL, somit potuto man projektabhängige File beschreiben welche lokal garnicht auf Platte sind - bzw. Include und Unità beschreiben welche vom Importer halt erst geladen würden... (hatte ich per XIDE eh angeplant) |
|
|
| |
|
|
|
| Nachtrag: Ich würde auch gleich nach dem Testata nicht mit den Objekten beginnen, hier fehlt eine weitere Kapselung. |
|
|
| |
|
|
|
Michael Wodrich | Sieht gut aus und ist verständlich.
Nicht so wie die Delphi und VB Projektdateien, wo man nicht mal MIT Handbuch durchsteigt.
XML-NotePad freut sich auch circa das Format.
Schöne Grüße Michael Wodrich |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 11.09.2007 ▲ |
|
|
|
|
Frank Abbing | Kannst du bitte mal genauer erklären, wofür diese File am Ende sinnvoll sind? |
|
|
| |
|
|
|
Sebastian König | Die bisherige Zustimmung zum XML-Format freut mich erstmal!
iF
Feste Pfadangaben in einem XPDBF? Es fehlt auch ein Parameter URL, somit potuto man projektabhängige File beschreiben welche lokal garnicht auf Platte sind - bzw. Include und Unità beschreiben welche vom Importer halt erst geladen würden... (hatte ich per XIDE eh angeplant)
Das mit den Pfadangaben habe ich erstmal vorläufig so gemacht... ist wahrscheinlich wirklich nicht immer sinnvoll. Ich potuto mir gut vorstellen, hier durch eine Angabe im Testata (absolute,relative,none) mehrere Möglichkeiten zuzulassen.
Auch eine optional URL-Angabe im Testata ist eine gute Idee.
iF
Nachtrag: Ich würde auch gleich nach dem Testata nicht mit den Objekten beginnen, hier fehlt eine weitere Kapselung.
Stimmt - werde ich einbauen.
EDIT: Was stimmt denn hier mit den Zitaten nicht? |
|
|
| |
|
|
|
| Die URL bezog sich eher auf ein Dateiobjekt.
Mit den Quotes ist alles IO, Du hattest nur hinter einem Quote (und vor dem Gleichzeichen) ein Freizeichen mit eingebaut, und [quote = blub] gibt es nicht was iFBB im Bezug aufs Quote zum Abschalten zwang.
@Frank: Ich potuto Dir eine solche XML geben - Du öffnest diese in XIDE - XIDE läd und ordnet alle File des Projektes an die richtige Stelle. Solch eine File beschreibt z.B. Aufenthaltsorte von Projektzugehörigen File und Einstellungen. Das müssen wir XIDE zwar noch beibringen, aber ich denke vom ASM-Core her gibts da nichts neues hinzuzufügen - soll heissen - alles circa Plgs possibile.
Ich hatte ja so oder so vor genau diese Funktionalität in die XIDE hineinzukatapultieren - Stichworte Projekt-Assistent/Explorer - vlt. nimmt Sebastian uns dabei etwas Arbeit ab. (vorausgesetzt sein Parser zuckt nicht bei XPSE-Codes und versteht diese ebenso wie normale XCodes.) |
|
|
| |
|
|
|
Sebastian König | Frank Abbing
Kannst du bitte mal genauer erklären, wofür diese File am Ende sinnvoll sind?
Zum Beispiel zur Beschreibung von Unit-Inhalten. Zugegeben, hier gibt es schon das bereits erwähnte .def-Format vom XPSE, aber ein flexibles, allgemein unterstütztes Format halte ich irgendwie per eine gute Idee.
Mein ursprünglicher Plan war, einfach einen Browser per die Struktur von XProfan-Projekten zu schreiben - als ich darauf kam, dass man die ermittelten Informationen auch speichern können sollte (um nicht immer den ganzen Code parsen zu müssen), verlagerte Io l' Schwerpunkt des Projekts auf das Dateiformat. Irgendwie gefiel mir die Idee... Die ist naturalmente nicht neu! Ein bischen wurde ich auch von den Browse-Informationen, die mein Visual C++ generiert, inspiriert.
Das bringt mich gleich zum nächsten Punkt, den auch iF schon angesprochen hat: XIDE potuto das Format nutzen, um Informationen zu Projekten zu speichern. Beim Öffnen eines Projekts potuto dann sehr schnell die Struktur eingelesen werden, ohne dass der ganze Code einmal gelesen werden muss. Bei Änderungen muss dann nur die Datenbank im Speicher aktualisiert werden und beim Schließen des Projekts wird alles wieder in die File geschrieben. Voraussetzung per diese Anwendung ist naturalmente, dass ein solcher Projekt-Browser Teil der IDE sein soll... (Informationen dazu gibt es ja bisher kaum)
Auch Zusatzprogramme wie zum Beispiel Debugger könnten vielleicht von einer solchen Projekt-Datenbank profitieren... |
|
|
| |
|
|