Mercurial > repos > tabletprog
comparison parser.js @ 176:ab204751d1e7
Allow all expressions in array and list literals
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 24 Aug 2013 09:53:20 -0700 |
parents | 869399ff7faa |
children | 810edf474f86 |
comparison
equal
deleted
inserted
replaced
175:20b6041a8b23 | 176:ab204751d1e7 |
---|---|
97 'int = sign:"-"? digits:[0-9]+ size:([iu] ("8" / "16" / "32" / "64"))? { var bits = size ? parseInt(size[1], 10) : 0; return new intlit(parseInt(sign + digits.join(""), 10), bits, size[0] == "u"); };' + | 97 'int = sign:"-"? digits:[0-9]+ size:([iu] ("8" / "16" / "32" / "64"))? { var bits = size ? parseInt(size[1], 10) : 0; return new intlit(parseInt(sign + digits.join(""), 10), bits, size[0] == "u"); };' + |
98 'string = "\\"" text:(strpart/escape)* "\\"" { return new strlit(text.join("")); };' + | 98 'string = "\\"" text:(strpart/escape)* "\\"" { return new strlit(text.join("")); };' + |
99 'strpart = text:[^\\"\\\\]+ { return text.join(""); };' + | 99 'strpart = text:[^\\"\\\\]+ { return text.join(""); };' + |
100 'escape = "\\\\" char:[nt\\"r\\\\] { if (char == "n") { return "\\n"; } if (char == "r") { return "\\r"; } return char; };' + | 100 'escape = "\\\\" char:[nt\\"r\\\\] { if (char == "n") { return "\\n"; } if (char == "r") { return "\\r"; } return char; };' + |
101 'object = "#{" ws messages:(assignment / funexpr)* "}" { return new object(messages); };' + | 101 'object = "#{" ws messages:(assignment / funexpr)* "}" { return new object(messages); };' + |
102 'array = "#[" ws els:opexpr* "]" { return new arraylit(els); };' + | 102 'array = "#[" ws els:expr* "]" { return new arraylit(els); };' + |
103 'list = "[" ws els:opexpr* "]" { return new listlit(els); };' + | 103 'list = "[" ws els:expr* "]" { return new listlit(els); };' + |
104 'opsym = name:("&&" / "||" / "<=" / ">=" / "<" / ">" / "=" / "!=" / "+" / "-" / "." / "*" / "/" / "%" / "|") { return new symbol(name); };' + | 104 'opsym = name:("&&" / "||" / "<=" / ">=" / "<" / ">" / "=" / "!=" / "+" / "-" / "." / "*" / "/" / "%" / "|") { return new symbol(name); };' + |
105 'assignment = ws sym:(symbol / opsym) hws "<-" expr:expr ws { return new assignment(sym, expr); }' + | 105 'assignment = ws sym:(symbol / opsym) hws "<-" expr:expr ws { return new assignment(sym, expr); }' + |
106 'lambda = args:((& ":") argname+ )? "{" ws exprs:(assignment / expr)* "}" { return new lambda(args[1], exprs); };' + | 106 'lambda = args:((& ":") argname+ )? "{" ws exprs:(assignment / expr)* "}" { return new lambda(args[1], exprs); };' + |
107 'argname = init:":"? chars:[a-zA-Z_!?@]+ trailing:[a-zA-Z_!?@0-9]* hws { return new symbol(init + chars.join("") + trailing.join("")); };' + | 107 'argname = init:":"? chars:[a-zA-Z_!?@]+ trailing:[a-zA-Z_!?@0-9]* hws { return new symbol(init + chars.join("") + trailing.join("")); };' + |
108 'funexpr = f: funcall ws { return f; };' + | 108 'funexpr = f: funcall ws { return f; };' + |