| |
|
|
- Página 1 - |
|
 Sebastian König | ¡Hola zusammen,
uno spontanen Concepto folgend Yo antes unos pocos Tagen con el Arbeit a una neuen Projekt comenzó: Ein Parser, el el Struktur uno (X)Profano-Projekts (d.h. eingebundene Incluir-, Encabezamiento-, y Unit-Archivos, enthaltene Prozeduren usw.) en uno Datenbank speichert. Diese Datenbank se entonces en un Expediente geschrieben voluntad - y genau a dieser Punto liegt el Grund para mein Posting hier:
Yo sería para el Formato dieser Archivos gern una einheitlichen Standard schaffen. Und como Yo esta natürlich no allein bestimmen möchte (auch si esta Praxis en el IT-Branche no unüblich es ), sería Yo el Formato gern hier diskutieren (algunos konkrete Vorstellungen Yo ya, aber dazu später mehr).
Erstmal mi Hauptfrage: Was haltet ihr grundsätzlich de el Vorhaben, una solchen Standard a schaffen?
Und específicamente a IF: XPSE schreibt sí para Unidades sí ya algunos Infos en .def-Archivos. Wärst Usted bereit, hier zusätzlich el neue Formato a unterstützen?
Geplant es el Projekt, el Yo vorläufig XPDB genannt habe (para XProfan Program Database - gefällt me eigentlich bastante bien, podría se aber, si jemandem todavía algo besseres einfallen debería, todavía ändern, en no unnötig a Inflation el 4-Buchstaben-XP-Namen beizutragen ) vornehmlich como Software Development Kit, also como Base para weitere Projekte. So se lo en cada Fall una DLL geben, el auch en XProfan bequem nutzbar es, y en Interesse kann Yo auch gern statische Bibliotheken a Nutzung con C/C++- oder Ensamblador-Codes disponible stellen. Auch una rudimentärer GUI-Navegador para el Estructuras se Teil des Pakets voluntad. Aber como hier wirklich no Schwerpunkt de meiner Página de mentira se, wäre una schöner Navegador con vielen Features una erster Vorschlag para una Projekt, el alguien en XProfan escribir podría...
So, el genügt primero - Yo soy en Meinungen y Sugerencias a el Thema!
MfG
Sebastian |
|
|
| |
|
|
| |
|
- Página 2 - |
|
|
 Sebastian König | IF
El URL bezog se más en una Dateiobjekt.
Auch el es natürlich posible. Hauptsächlich se el wahrscheinlich en el Zusammenhang con Unidades Verwendung encontrar.
IF
Mit el Quotes es alles IO, Usted había sólo hinter una Quote (y antes el Gleichzeichen) una Freizeichen con instalado, y [quote = blub] no existe qué iFBB en el Bezug aufs Quote para Abschalten zwang.
Ah, ok.
IF
Tuve sí así más o menos antes genau esta Funktionalität en el XIDE hineinzukatapultieren - Stichworte Projekt-Assistent/Explorer - vlt. nimmt Sebastian uns esta algo Arbeit de.  (vorausgesetzt ser Parser zuckt no en XPSE-Codes y versteht esta ebenso como normale XCodes.) Würde Yo selbstverständlich gern hacer . Yo podría dafür de mi Code una statische Biblioteca con Low-Level-Zugriff en el de me erstellte Datenbank-Klasse bereitstellen - en Bedarf auch con uno no objektorientierten Schnittstelle, porque el Zugriff darauf en ASM tal vez algo umständlich wäre. Hier podría Yo mich bastante a Euren Wünschen orientieren.
Bislang verarbeitet mein Parser sólo reines XProfan (y su sólo una pequeña Teil, como I, con el Arbeit daran gerade sólo comenzó habe...) Unterstützung para XPSE möchte Yo gern einbauen - aber incluso parsen halte Yo para unnötige Arbeit... uno doch simplemente XPSE aufrufen y el Edición weiterarbeiten, oder? |
|
|
| |
|
|
|
 | Sebastian König
IFEl URL bezog se más en una Dateiobjekt. Auch el es natürlich posible. Hauptsächlich se el wahrscheinlich en el Zusammenhang con Unidades Verwendung encontrar.
Pensé como más no necesariamente a Unidades, más a una offenes (mini!) CVS lo que el XProfan.Com ya bajo el Haube trägt (wegen XIDE). Hiermit se lo posible ser de XIDE heraus una komplettes Projekt hochzuladen y innerhalb de XIDE gemeinsam zeitgleich a una Projekt a trabajo.
Sebastian König
Bislang verarbeitet mein Parser sólo reines XProfan (y su sólo una pequeña Teil, como I, con el Arbeit daran gerade sólo comenzó habe...) Unterstützung para XPSE möchte Yo gern einbauen - aber incluso parsen halte Yo para unnötige Arbeit... uno doch simplemente XPSE aufrufen y el Edición weiterarbeiten, oder?
Wäre komplizierter como uno prüfen debería si überhaupt XPSE angewandt se (y luego auch todavía cada veces a la Prozess starten - phew...) . Lediglich después de #include & include y una wenig {/} geparse es nötig (z.B. para el Funktions/Prozedurerkennung) Im Principio es alles antes { si no if mientras que & co es, una Función/Procedimiento. KompilierenMarcaSeparación El Sache es sólo, Yo hier ca. el XIDE natürlich una viel neueren XPSE como lo hier para DW son, todavía debería el aktuelle hier-downloadbare Versión esta ausreichen.  |
|
|
| |
|
|
|
 Sebastian König | IF
Pensé como más no necesariamente a Unidades, más a una offenes (mini!) CVS lo que el XProfan.Com ya bajo el Haube trägt (wegen XIDE). Hiermit se lo posible ser de XIDE heraus una komplettes Projekt hochzuladen y innerhalb de XIDE gemeinsam zeitgleich a una Projekt a trabajo. Ok, así langsam verstehe Yo, lo que quiere decir. Lo sería wohl reichen, en lugar de el file Angabe simplemente alternativ oder zusätzlich url a erlauben, oder?
IF
Sebastian KönigBislang verarbeitet mein Parser sólo reines XProfan (y su sólo una pequeña Teil, como I, con el Arbeit daran gerade sólo comenzó habe...) Unterstützung para XPSE möchte Yo gern einbauen - aber incluso parsen halte Yo para unnötige Arbeit... uno doch simplemente XPSE aufrufen y el Edición weiterarbeiten, oder? Wäre komplizierter como uno prüfen debería si überhaupt XPSE angewandt se (y luego auch todavía cada veces a la Prozess starten - phew...) . Lediglich después de #include & include y una wenig {/} geparse es nötig (z.B. para el Funktions/Prozedurerkennung) Im Principio es alles antes { si no if mientras que & co es, una Función/Procedimiento. (...) Hmm... ok, en el Principio podría Yo el wohl auch direkt einbauen. Wäre lo porque nötig, dafür mein zeilenbasiertes Parsen (genauer: Zusammenfügen de por Backslash verbundenen Zeilen y anschließendes Auftrennen, si Doppelpunkte vorkommen) aufzugeben? Su XPSE-Codes erinnern sí mittlerweile muy a C++ oder Java, wo Zeilengrenzen simplemente sólo Leerräume son...  |
|
|
| |
|
|
|
 | Sebastian König
IFPensé como más no necesariamente a Unidades, más a una offenes (mini!) CVS lo que el XProfan.Com ya bajo el Haube trägt (wegen XIDE). Hiermit se lo posible ser de XIDE heraus una komplettes Projekt hochzuladen y innerhalb de XIDE gemeinsam zeitgleich a una Projekt a trabajo. Ok, así langsam verstehe Yo, lo que quiere decir. Lo sería wohl reichen, en lugar de el file Angabe simplemente alternativ oder zusätzlich url a erlauben, oder?
Exactamente, y si mgl. auch ni Dateiversionsangabe - z.B. FileVer. Das rührt por lo tanto el todos XIDE-Panel/Plugin-SDK-Quelltextdateien una Versionsinfo en el Source tragen welche z.B. auch vom Updatecheck genutzt se. Hierfür gibts 2 Varianten: KompilierenMarcaSeparaciónDiese Info podría Su Parser ebenfalls de el Source lesen y XML beifügen.
Sebastian König
IFSebastian KönigBislang verarbeitet mein Parser sólo reines XProfan (y su sólo una pequeña Teil, como I, con el Arbeit daran gerade sólo comenzó habe...) Unterstützung para XPSE möchte Yo gern einbauen - aber incluso parsen halte Yo para unnötige Arbeit... uno doch simplemente XPSE aufrufen y el Edición weiterarbeiten, oder? Wäre komplizierter como uno prüfen debería si überhaupt XPSE angewandt se (y luego auch todavía cada veces a la Prozess starten - phew...) . Lediglich después de #include & include y una wenig {/} geparse es nötig (z.B. para el Funktions/Prozedurerkennung) Im Principio es alles antes { si no if mientras que & co es, una Función/Procedimiento. (...) Hmm... ok, en el Principio podría Yo el wohl auch direkt einbauen. Wäre lo porque nötig, dafür mein zeilenbasiertes Parsen (genauer: Zusammenfügen de por Backslash verbundenen Zeilen y anschließendes Auftrennen, si Doppelpunkte vorkommen) aufzugeben? Su XPSE-Codes erinnern sí mittlerweile muy a C++ oder Java, wo Zeilengrenzen simplemente sólo Leerräume son... 
Tatsächlich parst xpse no Zeilenbasiert, hätte como aber ne Concepto como Usted Su Parser todavía kleinhalten kannst wobei uno no una vez el Semikolon como (xpse)möglichen Zeilentrenner wegdenken muss. (Das unten aber sólo funktioniert como Usted sí el Source no wirklich prüfen musst etc.)
Sehen nosotros veces el drei einfacheren Problemfälle a: KompilierenMarcaSeparación
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 todos File liegt en un String s y wir haben zusätzlich el pseudo whiletranslate ( KompilierenMarcaSeparación) a Disposición, entonces gilt: KompilierenMarcaSeparación//source säubern
s=translate(s, ,x20)
s=whiletranslate(s,x20x20,x20)
s=whiletranslate(s,
x20,
)
s=whiletranslate(s,x20
,
)
s=whiletranslate(s,
,
)
//otro Zeilentrenner
s=translate(s,;,
)
s=translate(s,:,
)
//klammern lösen
s=translate(s,{,
{
)
s=translate(s,},
}
)
s=whiletranslate(s,
,
)
Nach diesem Pass liegt eigentlich alles Zeilenbasiert antes. Kann ser el Yo algo übersehen habe como ego hier simplemente hineingetippt tener y lo sólo para Verständnis dienen se. Natürlich es después de diesem Pass el Source zerstört - pero yo mi Su Parser braucht no brauchbaren Source y debería el Source ruhig derart zerhechseln puede el ligeramente el Informationen extrahierbar son welche para el XML nötig son.
Der Parser debería entonces sólo todavía schauen si el nächste Línea exakt una { es, en a wissen el el aktuelle Línea una Proc ser se. (Wenn no grad mientras que if whileloop & co).
Ein klein wenig gemeiner Es el Tatsache el xpse auch folgendes beherrscht: KompilierenMarcaSeparación
cadena meineProc(cadena a,b,c,float x,y,z,long q,w,e){//hierbei sería el Rückgabewert True antes Rückgabe en una String konvertiert
volver true
}
//oder
long meineProc(cadena a,b,c,float x,y,z,long q,w,e)//hierbei sería el Rückgabewert 12 antes Rückgabe en una Largo konvertiert
{
volver 12
}
//oder
int meineProc(cadena a,b,c,float x,y,z,long q,w,e){volver true}
// lo son (xpse sabe) bool, int, long, float, cadena y mem
Hoffe el hilft una wenig.  |
|
|
| |
|
|
|
 Sebastian König | IF
Exactamente, y si mgl. auch ni Dateiversionsangabe - z.B. FileVer. Das rührt por lo tanto el todos XIDE-Panel/Plugin-SDK-Quelltextdateien una Versionsinfo en el Source tragen welche z.B. auch vom Updatecheck genutzt se. Hierfür gibts 2 Varianten: KompilierenMarcaSeparaciónDiese Info podría Su Parser ebenfalls de el Source lesen y XML beifügen.
Ok .
IF
Sebastian KönigHmm... ok, en el Principio podría Yo el wohl auch direkt einbauen. Wäre lo porque nötig, dafür mein zeilenbasiertes Parsen (genauer: Zusammenfügen de por Backslash verbundenen Zeilen y anschließendes Auftrennen, si Doppelpunkte vorkommen) aufzugeben? Su XPSE-Codes erinnern sí mittlerweile muy a C++ oder Java, wo Zeilengrenzen simplemente sólo Leerräume son...  Tatsächlich parst xpse no Zeilenbasiert, hätte como aber ne Concepto como Usted Su Parser todavía kleinhalten kannst wobei uno no una vez el Semikolon como (xpse)möglichen Zeilentrenner wegdenken muss. (Das unten aber sólo funktioniert como Usted sí el Source no wirklich prüfen musst etc.) Sehen nosotros veces el drei einfacheren Problemfälle a: (...) Hoffe el hilft una wenig. 
Gewissermaßen... Yo bin ahora doch otra vez stark el Meinung, dass esta Arbeit no en media Parser gehört y ihn unnötigerweise en una Vielfaches des reciente Umfangs aufblähen sería...
Yo denke aber, Yo una schönen Alternativ-Vorschlag: Yo podría sin großen Aufwand una Schnittstelle einbauen, el beliebige Präprozessoren unterstützt. Lo se ejecuta entonces simplemente así, dass el Adresse uno Callback-Función angegeben voluntad muss, welche mein internes GetNextLine() ersetzt. Alles, qué esta Función leisten debería, Es el Línea en reinem XProfan y el zugehörige Zeilennummer de el Quelldatei a liefern.
In dieser Variante debería mein Parser entonces garnichts encima zusätzliche Syntax-Features wissen y wäre völlig allgemein mantenido. Außerdem würden eventuelle zukünftige XPSE-Erweiterungen y XPIA automáticamente unterstützt voluntad. Und una zusätzlicher Prozess debería auch no comenzó voluntad... In el Anwendung liefe lo entonces así, que un Projekt como para Ejemplo XIDE simplemente zwei Bibliotheken (libxpdb.lib y libxpse.lib) dazulinkt y el XPDB-Parser el Plug-In bekanntmacht.
Je länger Yo darüber nachdenke, desto mejor gefällt me esta Solución. Sie hält beide Aufgabenbereiche schön modular getrennt y gestattet somit muy einfache Wartung y Erweiterung. Was hältst Usted su?
MfG
Sebastian |
|
|
| |
|
|
|
 | |
|
| |
|
|
|
 Sebastian König | IF
¿Por qué no? Lo debería en así una Fall simplemente folgendes liefern (jede Línea entspricht una Aufruf de GetNextLine, en el Kommentar es el Zeilennummer, el zusätzlich geliefert se): KompilierenMarcaSeparación Usted verstehst?
MfG
Sebastian |
|
|
| |
|
|
|
 | Hrm Yo verstehe sehrwohl, deshalb mi Yo sí el GetNextLine no ausreichen podría. In og. xpse Línea 1 es - sin el Línea 2 bekannt es no ermittelbar el se trata de un proc es! Was hältst Usted de el Variante el código simplemente bevor Usted ihn passierst komplett a una externo Parser a geben? Usted könntest entonces simplemente con el Rückgabeergebnis trabajo welches sólo auch el kompletten Code enthält. |
|
|
| |
|
|
|
 Sebastian König | IF
Hrm Yo verstehe sehrwohl, deshalb mi Yo sí el GetNextLine no ausreichen podría. In og. xpse Línea 1 es - sin el Línea 2 bekannt es no ermittelbar el se trata de un proc es! Hmm... möglicherweise verstehen nosotros gegenseitig falso, aber el debería doch kein Problema ser... el Prä-Parser ;) de hecho puede ya Línea 2 y meinetwegen todavía mehr en el voraus lesen - wichtig wäre sólo, el Ergebnis entonces mi Parser zeilenweise vorzusetzen... (así meinte Yo mein Ejemplo). Aber egal, porque:
IF
Was hältst Usted de el Variante el código simplemente bevor Usted ihn passierst komplett a una externo Parser a geben? Usted könntest entonces simplemente con el Rückgabeergebnis trabajo welches sólo auch el kompletten Code enthält.
Gefällt me muy bien! Im Grunde lautete así sí mein erster Vorschlag (Aufruf de XPSE por media Parser). Natürlich puede ser el entonces como en GetNextLine-Variante en el Plug-In/Callback-Base hacer y así el ständige Starten uno más Prozesses vermeiden. Wichtig wäre sólo, dass todos en Incluir-Ebene stattfindet, also dass siempre sólo genau el angegebene Expediente verarbeitet se y $I-Anweisungen en el Code bleiben. Yo nehme veces a, lo wäre kein großer Aufwand, una passende Lib de deinem bestehenden XPSE-Code a erzeugen, oder?
MfG
Sebastian |
|
|
| |
|
|
|
 | Der Aufwand hält se en Grenzen, klebt entonces aber doch otra vez a me. Yo mi pero yo sería XPSE no como Grundlage para el Lib nehmen - el Abspecken (oder verteilen de ifdefs) wäre deutlich aufwändiger como el bisl Parserei. Yo glaub Yo schreib aber simplemente una Función y schubs Usted el C-Code rüber el Usted entonces direkt igual einbauen kannst. Que el Lib puede nosotros en el pequeño Teil sparen. |
|
|
| |
|
|
|
 Sebastian König | IF
Der Aufwand hält se en Grenzen, klebt entonces aber doch otra vez a me.  Yo mi pero yo sería XPSE no como Grundlage para el Lib nehmen - el Abspecken (oder verteilen de ifdefs) wäre deutlich aufwändiger como el bisl Parserei. Yo glaub Yo schreib aber simplemente una Función y schubs Usted el C-Code rüber el Usted entonces direkt igual einbauen kannst. Que el Lib puede nosotros en el pequeño Teil sparen. Ok, natürlich kann Yo el Arbeit en Base Deines Codes gern tomar - also sólo her así . In welcher Form genau Yo todos einbaue, schaue Yo entonces veces - Yo möchte el Schnittstelle dafür en cada Fall allgemein halten...
Priorität ha auch primero, dass alles grundsätzlich funktioniert y yo entonces sólo todavía Erweiterungen para weitere Syntax-Elemente einbauen muss. Priorität haben primero Incluye, Encabezamiento, Unidades y Procs.
MfG
Sebastian |
|
|
| |
|
|
|
 | Gut, entonces tener Yo also Tiempo gewonnen y kann mich primero en mein Zahnweh kümmern. Mi FN se sí nix más como una Pre-Pass ser, Usted puede also primero el normalen más Aktivitäten en el Bezug en XPDB nachgehen. Como wäre Usted el Función al liebsten? Also de los Datentypen her etc... oder findet mi Función en un Largo el Mem des ganzen Sources? |
|
|
| |
|
|