Seite 1 von 1
					
				AML Markup Library
				Verfasst: Samstag 21. Februar 2009, 19:00
				von OverNord
				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
 
			 
			
					
				
				Verfasst: Samstag 21. Februar 2009, 19:26
				von Hyperion
				Nette Idee 
Für ne Lib ein bisserl zu wenig Kommentare. Außerdem täte ein Code-Beispiel gang gut.
Aber eine interssante Idee!
 
			 
			
					
				
				Verfasst: Samstag 21. Februar 2009, 19:33
				von derdon
				Code-Beispiele sind im Wiki zu finden.
			 
			
					
				
				Verfasst: Samstag 21. Februar 2009, 19:38
				von Hyperion
				Aber nicht von der Benutzung in Python, sondern nur AML-Snippets?!? Oder hab ich da was übersehen?
			 
			
					
				
				Verfasst: Samstag 21. Februar 2009, 19:40
				von OverNord
				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
 
			 
			
					
				Re: AML Markup Library
				Verfasst: Samstag 21. Februar 2009, 20:18
				von sma
				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.
 
			 
			
					
				Re: AML Markup Library
				Verfasst: Samstag 21. Februar 2009, 20:27
				von OverNord
				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.
 
			 
			
					
				
				Verfasst: Sonntag 22. Februar 2009, 08:57
				von Leonidas
				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 

 
			 
			
					
				
				Verfasst: Dienstag 24. Februar 2009, 14:38
				von OverNord
				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"))))
 
			 
			
					
				
				Verfasst: Dienstag 24. Februar 2009, 18:29
				von Leonidas
				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 

 
			 
			
					
				
				Verfasst: Donnerstag 26. Februar 2009, 18:04
				von OverNord
				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.
 
			 
			
					
				
				Verfasst: Donnerstag 26. Februar 2009, 19:01
				von Hyperion
				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 

 
			 
			
					
				
				Verfasst: Donnerstag 26. Februar 2009, 19:13
				von OverNord
				Hyperion hat geschrieben:Du musst dann noch die Doku auf der Seite ändern 

 
Danke für den Hinweis, ich werde es dann mal ändern.
 
			 
			
					
				
				Verfasst: Dienstag 5. Mai 2009, 19:42
				von OverNord
				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
 
			 
			
					
				
				Verfasst: Dienstag 5. Mai 2009, 19:50
				von Hyperion
				Klingt doch gut 
Ich vermisse aber irgend wie die Beispiele bzw. Beschreibungen der Sprache auf der Page?
 
			 
			
					
				
				Verfasst: Dienstag 5. Mai 2009, 21:57
				von sma
				OverNord hat geschrieben: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.
 
Na, dann könntest du ja nun wieder zurückziehen, denn Google bietet doch inzwischen auch Mercurial-Support ;)
Stefan
 
			 
			
					
				
				Verfasst: Mittwoch 6. Mai 2009, 12:55
				von OverNord
				sma hat geschrieben:
Na, dann könntest du ja nun wieder zurückziehen, denn Google bietet doch inzwischen auch Mercurial-Support 
 
Ich war allgemein nicht sonderlich zufrieden mit Google Code.
@Hyperion: Die Beschreibung und die Beispiele werde ich so bald wie möglich wieder zugänglich machen.
 
			 
			
					
				
				Verfasst: Sonntag 24. Mai 2009, 19:43
				von OverNord
				So, ich habe mal wieder ein bisschen gearbeitet. Im 
AML-Wiki sind ein paar Seiten zu finden, unter anderem eine Installationsanleitung(falls jemand eine brauchen sollte), an einem kleinen Tutorial arbeite ich momentan. Alle Interessierten sollten sich auf jeden Fall mal das 
Beispielverzeichnis ansehen. Dort werde ich bei Gelegenheit noch ein paar Beispiele hinzufügen. Und ich habe angefangen AML mit meinen bescheidenen C-Kenntnissen auch in dieser Sprache zu implementieren, vielleicht wird es ja was.
mfg. Björn