[module mtlParserLibrary2text(http:///org/eclipse/emf/examples/library/extlibrary.ecore/1.0.0)/]

[comment MyComment /]

[comment]
	MyComment
[/comment]

[template  public bookToText(b : Book, l : Library)]

Book : [b.title/]

[if (1 = l.writers->size())]
	[if (b.title = '')]
		aaa
	[elseif (b.title = '')]
		bbb
	[else]
		ccc
	[/if]
[/if]

[for (w : Writer | l.writers) before (null) separator (',') ? (null) {temp:Writer;}]
	ddd[w.name/]
[/for]

[file ('filename',false)]
[/file]

[trace]
[/trace]

[let s1:String = '']
[elselet s2:String = '']
[else]
[/let]

[protected ('identifier')]
[/protected]

[protected ('alternate identifier')/]

[/template]

[macro toLowerCase(s:String):String ]
return [s/].toLowerCase();
[/macro]

[query myQuery(s:String) : String = s/]
