-
- case "PUNC":
- switch (tok.data) {
- case "[":
- case "{":
- case "(":
-
- var start = st.cursor;
- st.next(1);
- var add = st.balance(tok.name);
- if (!add) {
- console.dump(tok);
- console.dump(start + '...' + st.cursor);
- console.dump(st.tokens);
-
- }
- if (add) {
- add.shift();
- }
- //Seed.print(TokenStream.toString(aa));
-
-
- var toks = add ? this.collapse(add) : [];
- tok.items = false;
- tok.props = false;
-
- if (tok.data != '{') {
- // paramters or array elements..
- tok.items = this.toItems(toks, [',']);
- } else {
- // check for types.. it could be a list of statements.. or object
+ }
+ tok.prefix = '';
+ if (pref.length) {
+ Roo.each(pref, function(e) {
+ if (!e) {
+ return;
+ }
+ tok.prefix += e.data;
+ })
+ }
+
+ ar.push(tok);
+ pref= [];
+
+ }
+ this.tokens = ar;
+
+ },
+ collapse : function(ar) {
+
+ var st = new TokenStream(ar);
+ var ret = [];
+
+ while (true) {
+ var tok = st.look(1,true);
+ if (!tok || !tok.is) {
+ // Seed.print(TokenStream.toString(ret));
+ return ret;
+ }
+ // console.log(tok.data);
+ switch(tok.type) {
+
+
+ case "KEYW":
+ case "TOKN":
+ case "NAME":
+ case "STRN":
+ case "NUMB":
+ case "REGX":
+ ret.push(st.next(1));
+ continue;
+
+ case "PUNC":
+ switch (tok.data) {
+ case "[":
+ case "{":
+ case "(":
+
+ var start = st.cursor;
+ st.next(1);
+ var add = st.balance(tok.name);
+ if (!add) {
+ console.dump(tok);
+ console.dump(start + '...' + st.cursor);
+ console.dump(st.tokens);
+
+ }
+ if (add) {
+ add.shift();
+ }
+ //Seed.print(TokenStream.toString(aa));