<div dir="ltr"><br><br><div class="gmail_quote">On Sat, Jul 26, 2008 at 00:03, Anders Dahnielson <span dir="ltr"><<a href="mailto:anders@dahnielson.com">anders@dahnielson.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div dir="ltr"><br><br><div class="gmail_quote"><div class="Ih2E3d">On Wed, Jul 23, 2008 at 18:13, Anders Dahnielson <span dir="ltr"><<a href="mailto:anders@dahnielson.com" target="_blank">anders@dahnielson.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div dir="ltr"><div class="gmail_quote"><div><br>Here's a simple tokenizer for SFZ I wrote once upon a time in Python. Not sure if I got it completely right.<br></div></div></div></blockquote></div><div><br>Nope. E.g. it matches lokey= twice (once as lokey= with a value and as key= without a value). *Blushes*. LOL.<br>
<br></div></div></div>
</blockquote></div><br>Ok, this is now an old thread. But to not appear as a complete fool I will post some code that actually works. ;-)<br><br>[BEGIN PYTHON]<br><br>import sys<br><br>def parse(f):<br> token_stack = []<br>
string_stack = []<br> for line in f:<br> # COMMENT<br> if line.startswith('//'):<br> continue<br> # DEFINITION<br> for token in line.split():<br> if token.startswith('<') and token.endswith('>'):<br>
# HEAD<br> if string_stack:<br> token_stack.append(" ".join(string_stack))<br> string_stack[:] = []<br> string_stack.append(token)<br>
elif token.find('=') != -1:<br> # HEAD<br> if string_stack:<br> token_stack.append(" ".join(string_stack))<br> string_stack[:] = []<br>
string_stack.append(token)<br> else:<br> # TAIL<br> string_stack.append(token)<br> # EOL<br> if string_stack:<br> token_stack.append(" ".join(string_stack))<br>
string_stack[:] = []<br> return token_stack<br><br>if __name__ == '__main__':<br> sfzf = open(sys.argv[1], 'r')<br> print parse(sfzf)<br> sfzf.close()<br><br>[END PYTHON]<br clear="all">
<br>-- <br>Anders Dahnielson<br><<a href="mailto:anders@dahnielson.com">anders@dahnielson.com</a>><br>
</div>