AML Markup Library

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
OverNord
User
Beiträge: 72
Registriert: Donnerstag 24. Januar 2008, 11:59
Kontaktdaten:

Samstag 21. Februar 2009, 19:00

Hallo,

ich arbeite schon seit einiger Zeit an einem kleinen Projekt. Es handelt sich dabei um einen Parser für eine recht simple Auszeichnungssprache, welche sich von der Syntax her an LISP orientiert. Zu finden ist das Projekt unter http://code.google.com/p/aml/.

Ich würde mich sehr über Kritik, ob positiv oder negativ, freuen.

mfg. OverNord
Benutzeravatar
Hyperion
Moderator
Beiträge: 7472
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Samstag 21. Februar 2009, 19:26

Nette Idee :-)

Für ne Lib ein bisserl zu wenig Kommentare. Außerdem täte ein Code-Beispiel gang gut.

Aber eine interssante Idee!
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Samstag 21. Februar 2009, 19:33

Code-Beispiele sind im Wiki zu finden.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7472
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Samstag 21. Februar 2009, 19:38

Aber nicht von der Benutzung in Python, sondern nur AML-Snippets?!? Oder hab ich da was übersehen?
OverNord
User
Beiträge: 72
Registriert: Donnerstag 24. Januar 2008, 11:59
Kontaktdaten:

Samstag 21. Februar 2009, 19:40

im wiki sind nur ein paar aml-snippets zu finden, ich werde mal ein paar python-snippets reinstellen.

hier mal ein kleines beispiel(ist mittlerweile auch im wiki zu finden, allerdings ohne die kommentare):

Code: Alles auswählen

import aml
src = '''(lists
    (list name="test"
        #A comment.
        (item name="one" value="Hello world!")
        (item name="two" value="666")))'''
doc = aml.parse_string(src) # parst ein aml-dokument aus einem string
for node in doc.first_child: # iteriert über den ersten kindknoten von doc
    print node['name'], node['value'] #gibt die werte der attribute name und value des knotens node aus
item = Node('item') # erstellt einen neuen knoten item
# attribute eines knotens verhalten sich ähnlich wie ein dictionary
item['name'] = 'three'
item['value'] = 'I am only a test!'

doc.first_child.add(item)  # hängt den knoten item an den ersten kindknoten von doc
doc.write(open('sample.aml', 'w')) #schreibt doc in eine datei
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Samstag 21. Februar 2009, 20:18

OverNord hat geschrieben:Ich würde mich sehr über Kritik, ob positiv oder negativ, freuen.
Ich muss sagen, ich habe mit deinem Avatar-Bild ein Problem. Ich finde es geschmacklos. Doch zum Code: Mein Bauch sagt mir, das geht auch kürzer. Ich weiß nicht, ob http://gist.github.com/68143 deine komplette Syntax abdeckt, aber das sind unter 50 Zeilen. Bei dir sind's etwa 300 Zeilen. Vielleicht hilft dir ja mein Ansatz als Inspirationsquelle.

Stefan

Update: habe noch Support für Kommentare hinzugefügt - gist ist Klasse.
Zuletzt geändert von sma am Sonntag 22. Februar 2009, 11:02, insgesamt 1-mal geändert.
OverNord
User
Beiträge: 72
Registriert: Donnerstag 24. Januar 2008, 11:59
Kontaktdaten:

Samstag 21. Februar 2009, 20:27

sma hat geschrieben:
OverNord hat geschrieben:Ich würde mich sehr über Kritik, ob positiv oder negativ, freuen.
Ich muss sagen, ich habe mit deinem Avatar-Bild ein Problem. Ich finde es geschmacklos.
Dann nehm ich es mal raus.
Doch zum Code: Mein Bauch sagt mir, das geht auch kürzer. Ich weiß nicht, ob http://gist.github.com/68143 deine komplette Syntax abdeckt (ich habe keine Kommentare mit "#"), aber das sind unter 50 Zeilen. Bei dir sind's etwa 300 Zeilen. Vielleicht hilft dir ja mein Ansatz als Inspirationsquelle.
Ich werds mir auf jeden fall ansehen.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sonntag 22. Februar 2009, 08:57

Wenns um die Syntax geht hätte ich statt ``name="value"`` lieber ``name :value`` oder ``(name value)`` gehabt. So erinnerts mich zu sehr an XML ;) Die Aufteilung bei XML in Attribute und Tags finde ich eher artifiziell, auch wenn ichs verstehen kann, da X-Expressions etwas geschwätziger sind als S-Expressions. Sind im groben aber so ziemlich das gleiche, siehe SXML und diesen, eigentlich ziemlich gelungenen Artikel.

OverNord, was ich dich fragen wollte: zu was ist AML gut? Wofür nutzt du es? Oder ist es nur ein Spielzeugprojekt?

Hmm, ob man mit XSLT halbwegs schmerzlos programmieren kann? Dann wäre es eine kuriose Neuerfindung der Lisp-Syntax nur in umständlicher :)
My god, it's full of CARs! | Leonidasvoice vs Modvoice
OverNord
User
Beiträge: 72
Registriert: Donnerstag 24. Januar 2008, 11:59
Kontaktdaten:

Dienstag 24. Februar 2009, 14:38

Leonidas hat geschrieben:OverNord, was ich dich fragen wollte: zu was ist AML gut? Wofür nutzt du es? Oder ist es nur ein Spielzeugprojekt?
Ich verwende es momentan für ein paar Konfigurationsdateien. Man kann AML aber für eigentlich alles verwenden, wofür man auch XML verwenden kann.
Leonidas hat geschrieben:Wenns um die Syntax geht hätte ich statt ``name="value"`` lieber ``name :value`` oder ``(name value)`` gehabt.
Mit ``(name value)`` hätte ich auch kein Problem, würde dann ungefähr so aussehen:

Code: Alles auswählen

(lists
    (list 
        (name "test")
        (item 
            (name "one")
            (value "Hello world!"))
        (item
            (name "two") 
            (value "42"))))
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dienstag 24. Februar 2009, 18:29

OverNord hat geschrieben:Man kann AML aber für eigentlich alles verwenden, wofür man auch XML verwenden kann.
Der nachteil ist halt, dass man die ganzen ausgereiften Tools die es für XML gibt (insbeondere schnelle Parser und Validierung) nicht nutzen kann. Aber ja, AML ist etwas angenehmer anzusehen, besonders die S-Expression-Variante :)
My god, it's full of CARs! | Leonidasvoice vs Modvoice
OverNord
User
Beiträge: 72
Registriert: Donnerstag 24. Januar 2008, 11:59
Kontaktdaten:

Donnerstag 26. Februar 2009, 18:04

Leonidas hat geschrieben:
OverNord hat geschrieben:Man kann AML aber für eigentlich alles verwenden, wofür man auch XML verwenden kann.
Der nachteil ist halt, dass man die ganzen ausgereiften Tools die es für XML gibt (insbeondere schnelle Parser und Validierung) nicht nutzen kann. Aber ja, AML ist etwas angenehmer anzusehen, besonders die S-Expression-Variante :)
Ich habe den Parser von sma umgeschrieben, so das er die S-Expression-Variante parsen kann(an dieser Stelle noch einmal einen Dank an sma). Den Rest habe ich nur leicht geändert.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7472
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Donnerstag 26. Februar 2009, 19:01

OverNord hat geschrieben: Ich habe den Parser von sma umgeschrieben, so das er die S-Expression-Variante parsen kann(an dieser Stelle noch einmal einen Dank an sma). Den Rest habe ich nur leicht geändert.
Du musst dann noch die Doku auf der Seite ändern :-)
OverNord
User
Beiträge: 72
Registriert: Donnerstag 24. Januar 2008, 11:59
Kontaktdaten:

Donnerstag 26. Februar 2009, 19:13

Hyperion hat geschrieben:Du musst dann noch die Doku auf der Seite ändern :-)
Danke für den Hinweis, ich werde es dann mal ändern.
OverNord
User
Beiträge: 72
Registriert: Donnerstag 24. Januar 2008, 11:59
Kontaktdaten:

Dienstag 5. Mai 2009, 19:42

Nach langer Zeit melde ich mich nun wieder hier.

Natürlich habe ich in der Zwischenzeit an AML gearbeitet. Unter anderem habe ich angefangen einen Validator und eine Implementierung einer Untermenge von XPath zu schreiben. Es gibt jetzt auch Versionen für C# und Ruby. Auch ist AML mittlerweile unter Python 3.x lauffähig.

Des Weiteren ist das Projekt umgezogen. Es ist jetzt unter http://bitbucket.org/overnord/aml/ zu finden. Grund für den Umzug war eine gewisse Abneigung gegenüber Subversion, welches bei Google Code zum Einsatz kommt.

mfg. Nord
Benutzeravatar
Hyperion
Moderator
Beiträge: 7472
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Dienstag 5. Mai 2009, 19:50

Klingt doch gut :-)

Ich vermisse aber irgend wie die Beispiele bzw. Beschreibungen der Sprache auf der Page?
Antworten