# HG changeset patch # User Mike Pavone # Date 1377564407 25200 # Node ID 810edf474f867e00fe30eea5ee7dffd94f0a17e9 # Parent 35d2cc193d990854a0583a96327e8da11d9669e4 Fix parse precedence problem between opsyms and symbols in assignments diff -r 35d2cc193d99 -r 810edf474f86 parser.js --- a/parser.js Mon Aug 26 17:27:17 2013 -0700 +++ b/parser.js Mon Aug 26 17:46:47 2013 -0700 @@ -102,7 +102,7 @@ 'array = "#[" ws els:expr* "]" { return new arraylit(els); };' + 'list = "[" ws els:expr* "]" { return new listlit(els); };' + 'opsym = name:("&&" / "||" / "<=" / ">=" / "<" / ">" / "=" / "!=" / "+" / "-" / "." / "*" / "/" / "%" / "|") { return new symbol(name); };' + -'assignment = ws sym:(symbol / opsym) hws "<-" expr:expr ws { return new assignment(sym, expr); }' + +'assignment = ws sym:(opsym / symbol) hws "<-" expr:expr ws { return new assignment(sym, expr); }' + 'lambda = args:((& ":") argname+ )? "{" ws exprs:(assignment / expr)* "}" { return new lambda(args[1], exprs); };' + 'argname = init:":"? chars:[a-zA-Z_!?@]+ trailing:[a-zA-Z_!?@0-9]* hws { return new symbol(init + chars.join("") + trailing.join("")); };' + 'funexpr = f: funcall ws { return f; };' +