| |
|
|
- page 1 - |
|
Sebastian König | allô zusammen,
einer spontanen concept folgend habe je avant un paire Tagen avec qui travail à einem neuen projet begonnen: un Parser, qui qui Struktur eines (X)Profan-Projekts (d.h. eingebundene Include-, En-tête-, et Unit-Fichiers, enthaltene Prozeduren usw.) dans einer banque de données speichert. cet banque de données soll ensuite dans un Dossier geschrieben volonté - et oui c'est ca à cette Stelle liegt qui Grund pour mon Posting ici:
je serait pour cela Format cette Fichiers gern une einheitlichen Standard créer. et là je cette naturellement pas seul bestimmen voudrais (aussi si cet Praxis dans qui IT-Branche pas unüblich ist ), serait je cela Format gern ici diskutieren (quelques konkrete Vorstellungen habe je déjà, mais en supplément später plus).
Erstmal mon Hauptfrage: quoi haltet son grundsätzlich de dem projet, une solchen Standard trop créer?
et speziell à iF: XPSE écrit oui pour Unités oui déjà quelques Infos dans .def-Fichiers. Wärst Du bereit, ici zusätzlich cela neue Format trop soutien?
Geplant ist cela projet, le moi vorläufig XPDB genannt habe (pour XProfan Program Database - comme mir eigentlich pas mal, pourrait sich mais, si quelqu'un et avec ca besseres envahir sollte, encore changement, um pas unnötig zur inflation qui 4-Buchstaben-XP-Namen beizutragen ) vornehmlich comme Software Development Kit, alors comme la base pour weitere Projekte. So soll es sur jeden le cas une DLL donner, qui aussi dans XProfan bequem nutzbar ist, et chez intérêt peux je aussi gern statische Bibliotheken zur Nutzung avec C/C++- ou bien Assembler-Codes zur Disposition se mettre. aussi un rudimentärer GUI-Browser pour qui Strukturen soll partie des Pakets volonté. mais là ici wirklich pas qui Schwerpunkt de meiner page aus liegen soll, wäre un plus beau Browser avec vielen Features un erster Vorschlag pour un projet, cela quelqu'un dans XProfan écrivons pourrait...
So, cela suffisant erstmal - je suis mich sur Meinungen et Anregungen trop dem Thema!
MfG
Sebastian |
|
|
| |
|
|
| |
|
- page 2 - |
|
|
Sebastian König | iF
qui URL bezog sich plutôt sur un Dateiobjekt.
aussi c'est naturellement possible. principale wird cela wahrscheinlich im Zusammenhang avec Unités Verwendung trouver.
iF
avec den Quotes ist alles IO, Du hattest seulement derrière einem quote-part (et avant dem Gleichzeichen) un Freizeichen avec incorporé, et [quote-part = blub] gibt es pas quoi iFBB im Bezug aufs quote-part zum débrancher zwang.
Ah, ok.
iF
je hatte oui so ou bien so avant oui c'est ca cet Fonctionnalité dans qui XIDE hineinzukatapultieren - Stichworte projet-Assistent/Explorer - vlt. nimmt Sebastian uns dabei quelque chose travail ab. (vorausgesetzt son Parser zuckt pas chez XPSE-Codes et versteht cet aussi que normale XCodes.) Würde je bien sûr gern faire . je pourrait pour aus meinem Code une statische Bibliothèque avec Low-Level-Zugriff sur qui de mir erstellte banque de données-super bereitstellen - chez besoin aussi avec einer pas objektorientierten Schnittstelle, weil qui Zugriff puis dans ASM peut-être quelque chose compliqué wäre. ici pourrait je mich entier à Euren désirer orienter.
Bislang verarbeitet mon Parser seulement reines XProfan (et en seulement une kleinen partie, là je avec qui travail daran justement seulement begonnen habe...) Unterstützung pour XPSE voudrais je gern einbauen - mais selbst parsen halte je pour unnötige travail... on doch simple XPSE appel et qui Ausgabe weiterarbeiten, ou bien? |
|
|
| |
|
|
|
| Sebastian König
iFqui URL bezog sich plutôt sur un Dateiobjekt. aussi c'est naturellement possible. principale wird cela wahrscheinlich im Zusammenhang avec Unités Verwendung trouver.
J'ai pensé là plutôt pas absolument à Unités, plutôt moins un offenes (mini!) CVS quoi qui XProfan.Com bereits sous qui coiffe trägt (à cause de XIDE). Hiermit soll es possible son aus XIDE heraus un komplettes projet hochzuladen et dedans de XIDE gemeinsam zeitgleich à einem projet trop travailler.
Sebastian König
Bislang verarbeitet mon Parser seulement reines XProfan (et en seulement une kleinen partie, là je avec qui travail daran justement seulement begonnen habe...) Unterstützung pour XPSE voudrais je gern einbauen - mais selbst parsen halte je pour unnötige travail... on doch simple XPSE appel et qui Ausgabe weiterarbeiten, ou bien?
Wäre komplizierter là on vérifier devrait si überhaupt XPSE angewandt wird (et ensuite aussi encore chaque la fois une Prozess starten - phew...) . Lediglich pour #include & include et un peu {/} geparse ist nötig (z.B. pour qui Funktions/Prozedurerkennung) Im Prinzip ist alles avant { si es pas si tandis que & co ist, une Funktion/Procédure. KompilierenMarqueSéparation qui l'affaire ist seulement, j'ai ici GT. qui XIDE naturellement un viel neueren XPSE comme es ici zum DW gibt, toutefois sollte qui aktuelle ici-downloadbare Version hierfür ausreichen. |
|
|
| |
|
|
|
Sebastian König | iF
J'ai pensé là plutôt pas absolument à Unités, plutôt moins un offenes (mini!) CVS quoi qui XProfan.Com bereits sous qui coiffe trägt (à cause de XIDE). Hiermit soll es possible son aus XIDE heraus un komplettes projet hochzuladen et dedans de XIDE gemeinsam zeitgleich à einem projet trop travailler. Ok, so lente verstehe je, quoi Du meinst. Es serait wohl reichen, statt qui file Angabe simple alternativ ou bien zusätzlich url trop erlauben, ou bien?
iF
Sebastian KönigBislang verarbeitet mon Parser seulement reines XProfan (et en seulement une kleinen partie, là je avec qui travail daran justement seulement begonnen habe...) Unterstützung pour XPSE voudrais je gern einbauen - mais selbst parsen halte je pour unnötige travail... on doch simple XPSE appel et qui Ausgabe weiterarbeiten, ou bien? Wäre komplizierter là on vérifier devrait si überhaupt XPSE angewandt wird (et ensuite aussi encore chaque la fois une Prozess starten - phew...) . Lediglich pour #include & include et un peu {/} geparse ist nötig (z.B. pour qui Funktions/Prozedurerkennung) Im Prinzip ist alles avant { si es pas si tandis que & co ist, une Funktion/Procédure. (...) Hmm... ok, im Prinzip pourrait je cela wohl aussi direct einbauen. Wäre es car nötig, pour mon zeilenbasiertes Parsen (genauer: Zusammenfügen de per Backslash verbundenen Zeilen et anschließendes Auftrennen, si Doppelpunkte vorkommen) aufzugeben? Votre XPSE-Codes erinnern oui mittlerweile très à C++ ou bien Java, wohin Zeilengrenzen simple seulement Leerräume sommes... |
|
|
| |
|
|
|
| Sebastian König
iFJ'ai pensé là plutôt pas absolument à Unités, plutôt moins un offenes (mini!) CVS quoi qui XProfan.Com bereits sous qui coiffe trägt (à cause de XIDE). Hiermit soll es possible son aus XIDE heraus un komplettes projet hochzuladen et dedans de XIDE gemeinsam zeitgleich à einem projet trop travailler. Ok, so lente verstehe je, quoi Du meinst. Es serait wohl reichen, statt qui file Angabe simple alternativ ou bien zusätzlich url trop erlauben, ou bien?
oui c'est ca, et si mgl. aussi encore une Dateiversionsangabe - z.B. FileVer. cela rührt daher cela alle XIDE-Panel/Plugin-SDK-Quelltextdateien une Versionsinfo im Source tragen quelle z.B. aussi vom Updatecheck genutzt wird. Hierfür gibts 2 Varianten: KompilierenMarqueSéparationcet Info pourrait Dein Parser également aus dem Source lesen et qui XML beifügen.
Sebastian König
iFSebastian KönigBislang verarbeitet mon Parser seulement reines XProfan (et en seulement une kleinen partie, là je avec qui travail daran justement seulement begonnen habe...) Unterstützung pour XPSE voudrais je gern einbauen - mais selbst parsen halte je pour unnötige travail... on doch simple XPSE appel et qui Ausgabe weiterarbeiten, ou bien? Wäre komplizierter là on vérifier devrait si überhaupt XPSE angewandt wird (et ensuite aussi encore chaque la fois une Prozess starten - phew...) . Lediglich pour #include & include et un peu {/} geparse ist nötig (z.B. pour qui Funktions/Prozedurerkennung) Im Prinzip ist alles avant { si es pas si tandis que & co ist, une Funktion/Procédure. (...) Hmm... ok, im Prinzip pourrait je cela wohl aussi direct einbauen. Wäre es car nötig, pour mon zeilenbasiertes Parsen (genauer: Zusammenfügen de per Backslash verbundenen Zeilen et anschließendes Auftrennen, si Doppelpunkte vorkommen) aufzugeben? Votre XPSE-Codes erinnern oui mittlerweile très à C++ ou bien Java, wohin Zeilengrenzen simple seulement Leerräume sommes...
réellement parst xpse pas Zeilenbasiert, hätte là mais ne concept comment Du Deinen Parser toutefois kleinhalten peux wobei on pas einmal cela Semikolon comme (xpse)möglichen Zeilentrenner wegdenken muss. (cela unten mais seulement funktioniert là Du oui den Source pas wirklich vérifier musst etc.)
voyons wir uns fois le trois einfacheren Problemfälle à: KompilierenMarqueSéparation
meineProc(string a,b,c,float x,y,z,long q,w,e){
return true
}
//oder
meineProc(string a,b,c,float x,y,z,long q,w,e)
{
return true
}
//oder
meineProc(string a,b,c,float x,y,z,long q,w,e){return trueFF>}
Angenommen cela ganze File liegt dans einem String s et on a zusätzlich cela pseudo whiletranslate ( KompilierenMarqueSéparation) trop Disposition, ensuite gilt: KompilierenMarqueSéparation//source säubern
s=translate(s, ,x20)
s=whiletranslate(s,x20x20,x20)
s=whiletranslate(s,
x20,
)
s=whiletranslate(s,x20
,
)
s=whiletranslate(s,
,
)
//autre Zeilentrenner
s=translate(s,;,
)
s=translate(s,:,
)
//klammern lösen
s=translate(s,{,
{
)
s=translate(s,},
}
)
s=whiletranslate(s,
,
)
Pour diesem Pass liegt eigentlich alles Zeilenbasiert avant. peux son le moi quelque chose übersehen habe là ego ici simple hineingetippt hab et es seulement zum Verständnis dienen soll. Bien sûr ist pour diesem Pass qui Source détruit - mais je mon Dein Parser braucht keinen brauchbaren Source et sollte den Source calme derart zerhechseln peut cela léger qui Informationen extrahierbar sommes quelle pour qui XML nötig sommes.
qui Parser devrait ensuite seulement encore regarder si qui prochain la ligne exakt un { ist, afin de savons cela qui aktuelle la ligne une Proc son soll. (si pas grad tandis que si whileloop & co).
un petite wenig gemeiner ist qui Tatsache cela xpse aussi folgendes beherrscht: KompilierenMarqueSéparation
string meineProc(string a,b,c,float x,y,z,long q,w,e){//hierbei serait qui Rückgabewert True avant Rückgabe dans une String konvertiert
return vrai
}
//ou bien
long meineProc(string a,b,c,float x,y,z,long q,w,e)//hierbei serait qui Rückgabewert 12 avant Rückgabe dans un Long konvertiert
{
return 12
}
//ou bien
int meineProc(string a,b,c,float x,y,z,long q,w,e){return vrai}
// il y a (xpse kennt) bool, int, long, float, string et mem
Hoffe cela hilft un peu. |
|
|
| |
|
|
|
Sebastian König | iF
oui c'est ca, et si mgl. aussi encore une Dateiversionsangabe - z.B. FileVer. cela rührt daher cela alle XIDE-Panel/Plugin-SDK-Quelltextdateien une Versionsinfo im Source tragen quelle z.B. aussi vom Updatecheck genutzt wird. Hierfür gibts 2 Varianten: KompilierenMarqueSéparationcet Info pourrait Dein Parser également aus dem Source lesen et qui XML beifügen.
Ok .
iF
Sebastian KönigHmm... ok, im Prinzip pourrait je cela wohl aussi direct einbauen. Wäre es car nötig, pour mon zeilenbasiertes Parsen (genauer: Zusammenfügen de per Backslash verbundenen Zeilen et anschließendes Auftrennen, si Doppelpunkte vorkommen) aufzugeben? Votre XPSE-Codes erinnern oui mittlerweile très à C++ ou bien Java, wohin Zeilengrenzen simple seulement Leerräume sommes... réellement parst xpse pas Zeilenbasiert, hätte là mais ne concept comment Du Deinen Parser toutefois kleinhalten peux wobei on pas einmal cela Semikolon comme (xpse)möglichen Zeilentrenner wegdenken muss. (cela unten mais seulement funktioniert là Du oui den Source pas wirklich vérifier musst etc.) voyons wir uns fois le trois einfacheren Problemfälle à: (...) Hoffe cela hilft un peu.
Gewissermaßen... je suis maintenant doch wieder stark qui attitude, dass cet travail pas dans meinen Parser est et ihn unnötigerweise sur une Vielfaches des bisherigen Umfangs aufblähen serait...
je denke mais, j'ai une schönen Alternativ-Vorschlag: je pourrait sans grand Aufwand une Schnittstelle einbauen, qui beliebige Präprozessoren soutenu. Es fonctionne ensuite simple so, dass qui Adresse einer Callback-Funktion angegeben volonté muss, quelle mon internes GetNextLine() ersetzt. Alles, quoi cet Funktion leisten devrait, ist qui la ligne dans reinem XProfan et qui zugehörige Zeilennummer aus qui Quelldatei trop liefern.
dans cette variante devrait mon Parser ensuite garnichts sur zusätzliche Syntax-Features savons et wäre völlig allgemein gehalten. Aussi würden eventuelle zukünftige XPSE-Erweiterungen et XPIA automatisch soutenu volonté. et un zusätzlicher Prozess devrait aussi pas gestartet volonté... dans qui Anwendung liefe es ensuite so, dass un projet comment zum Beispiel XIDE simple deux Bibliotheken (libxpdb.lib et libxpse.lib) dazulinkt et dem XPDB-Parser cela Plug-dans bekanntmacht.
Je länger je par-dessus nachdenke, desto besser comme mir cet Solution. vous hält beide Aufgabenbereiche joli modular getrennt et gestattet somit très simple entretien et Erweiterung. quoi hältst Du en?
MfG
Sebastian |
|
|
| |
|
|
|
| |
|
| |
|
|
|
Sebastian König | iF
Pourquoi pas? Es sollte dans so einem le cas simple folgendes liefern (chacun la ligne entspricht einem Aufruf de GetNextLine, im Kommentar steht qui Zeilennummer, qui zusätzlich geliefert wird): KompilierenMarqueSéparation Du verstehst?
MfG
Sebastian |
|
|
| |
|
|
|
| Hrm je comprends sehrwohl, c'est pourquoi mon je oui cela GetNextLine pas ausreichen pourrait. dans og. xpse la ligne 1 ist - sans cela la ligne 2 bekannt ist pas ermittelbar cela es sich um une proc handelt! quoi hältst Du de qui variante den Code simple bevor Du ihn passierst komplett à une externe Parser trop donner? Du könntest ensuite simple avec dem Rückgabeergebnis travailler welches arrêt aussi den kompletten Code contient. |
|
|
| |
|
|
|
Sebastian König | iF
Hrm je comprends sehrwohl, c'est pourquoi mon je oui cela GetNextLine pas ausreichen pourrait. dans og. xpse la ligne 1 ist - sans cela la ligne 2 bekannt ist pas ermittelbar cela es sich um une proc handelt! Hmm... möglicherweise comprendre wir uns mutuel faux, mais cela sollte doch ne...aucune Problem son... qui Prä-Parser ;) peux oui déjà la ligne 2 et meinetwegen encore plus d'avance lesen - important wäre seulement, cela Ergebnis ensuite meinem Parser zeilenweise vorzusetzen... (so meinte je mon Beispiel). mais égal, car:
iF
quoi hältst Du de qui variante den Code simple bevor Du ihn passierst komplett à une externe Parser trop donner? Du könntest ensuite simple avec dem Rückgabeergebnis travailler welches arrêt aussi den kompletten Code contient.
Gefällt mir très bien! Im Grunde lautete so oui mon erster Vorschlag (Aufruf de XPSE par meinen Parser). Bien sûr peux on cela ensuite comment chez qui GetNextLine-variante sur qui Plug-dans/Callback-la base faire et so cela ständige Starten eines weiteren Prozesses vermeiden. important wäre seulement, dass cela ganze sur Include-plaine stattfindet, alors dass toujours seulement oui c'est ca qui angegebene Dossier verarbeitet wird et $I-Anweisungen im Code rester. je prends la fois à, es wäre ne...aucune großer Aufwand, une passende Lib aus deinem bestehenden XPSE-Code trop erzeugen, ou bien?
MfG
Sebastian |
|
|
| |
|
|
|
| qui Aufwand hält sich dans Grenzen, klebt ensuite mais doch wieder à mir. je mon mais je serait XPSE pas comme Grundlage pour qui Lib prendre - cela Abspecken (ou bien verteilen de ifdefs) wäre deutlich aufwändiger comme cela bisl Parserei. je glaub je schreib mais simple une Funktion et schubs Dir den C-Code rüber den Du ensuite direct juste einbauen peux. Que le Lib peut wir uns chez dem kleinen partie sparen. |
|
|
| |
|
|
|
Sebastian König | iF
qui Aufwand hält sich dans Grenzen, klebt ensuite mais doch wieder à mir. je mon mais je serait XPSE pas comme Grundlage pour qui Lib prendre - cela Abspecken (ou bien verteilen de ifdefs) wäre deutlich aufwändiger comme cela bisl Parserei. je glaub je schreib mais simple une Funktion et schubs Dir den C-Code rüber den Du ensuite direct juste einbauen peux. Que le Lib peut wir uns chez dem kleinen partie sparen. Ok, naturellement peux je qui travail sur la base Deines Codes gern prendre - alors seulement her avec cela . dans quel forme oui c'est ca je cela ganze einbaue, schaue je ensuite la fois - je voudrais qui Schnittstelle pour sur jeden le cas allgemein tenir...
Priorität hat aussi erstmal, dass alles grundsätzlich funktioniert et je ensuite seulement encore Erweiterungen pour weitere Syntax-Elemente einbauen muss. Priorität avons zunächst Comprend, En-tête, Unités et Procs.
MfG
Sebastian |
|
|
| |
|
|
|
| bien, ensuite hab je alors Zeit gewonnen et peux mich erstmal um mon Zahnweh kümmern. mon FN wird oui nix plus comme un Pre-Pass son, tu peux alors erstmal den normalen weiteren Aktivitäten im Bezug sur XPDB nachgehen. comment wäre Dir qui Funktion am liebsten? alors de den Datentypen her etc... ou bien findet mon Funktion dans einem Long dem Mem des ganzen Sources? |
|
|
| |
|
|