JSDOC/ScopeParser.js
[gnome.introspection-doc-generator] / JSDOC / ScopeParser.js
index a0d02bc..1b0aca0 100644 (file)
@@ -141,7 +141,7 @@ ScopeParser.prototype = {
         this.braceNesting = 0;
         this.scopes = [];
         
-        
+        print(JSON.stringify(this.ts.tokens, null,4));
         
         
         this.globalScope = new  Scope(-1, false, -1, '');
@@ -258,7 +258,7 @@ ScopeParser.prototype = {
                     while (true) {
                         token = this.ts.nextTok();
                         //!this.debug|| print( token.toString());
-                        //print('SCOPE-VAR-VAL:' + token.toString());
+                        print('SCOPE-VAR-VAL:' + JSON.stringify(token, null, 4));
                         if (!token) { // can return false at EOF!
                             break;
                         }
@@ -328,7 +328,7 @@ ScopeParser.prototype = {
 
                 case "PUNC.LEFT_CURLY": // {
                 case "PUNC.LEFT_PAREN": // (    
-                case "PUNC.LEFT_BRACE": // (    
+                case "PUNC.LEFT_BRACE": // [
                     //print('SCOPE-CURLY/PAREN:' + token.toString());
                     //println("<i>"+token.data+"</i>");
                     var curTS = this.ts;
@@ -521,10 +521,11 @@ ScopeParser.prototype = {
 
                         if (symbol == "eval") {
                             // look back one and see if we can find a comment!!!
-                            if (this.ts.look(-1).type == "COMM") {
+                            //if (this.ts.look(-1).type == "COMM") {
+                            if (token.prefix && token.prefix.match('/eval/')) {
                                 // look for eval:var:noreplace\n
                                 var _t = this;
-                                this.ts.look(-1).data.replace(/eval:var:([a-z_]+)/ig, function(m, a) {
+                                token.prefix.replace(/eval:var:([a-z_]+)/ig, function(m, a) {
                                     
                                     var hi = _t.getIdentifier(a, thisScope, token);
                                    // println("PROTECT "+a+" from munge" + (hi ? "FOUND" : "MISSING"));
@@ -628,7 +629,7 @@ ScopeParser.prototype = {
                         case '(': //Token.LP:
                         case '{': //Token.LC:
                         case '[': //Token.LB:
-                            print('SCOPE-CURLY/PAREN/BRACE:' + token.toString());
+                            //print('SCOPE-CURLY/PAREN/BRACE:' + token.toString());
                            // print('SCOPE-CURLY/PAREN/BRACE:' + JSON.stringify(token, null,4));
                             //println("<i>"+token.data+"</i>");
                             var curTS = this.ts;
@@ -767,10 +768,10 @@ ScopeParser.prototype = {
                     if (this.mode == 'BUILDING_SYMBOL_TREE') {
 
                         if (symbol == "eval") {
-                            if (this.ts.look(-1).type == 'COMM') {
+                            if (token.prefix && token.prefix.match('/eval/')) {
                                 // look for eval:var:noreplace\n
                                 var _t = this;
-                                this.ts.look(-1).data.replace(/eval:var:([a-z]+)/ig, function(m, a) {
+                                token.prefix.replace(/eval:var:([a-z]+)/ig, function(m, a) {
                                     var hi = _t.getIdentifier(a, currentScope, token);
                                    //println("PROTECT "+a+" from munge" + (hi ? "FOUND" : "MISSING"));
                                     if (hi) {
@@ -859,7 +860,13 @@ ScopeParser.prototype = {
             }
             token =  this.ts.nextTok();
         }
-
+        // return function() {.... 
+        if (token.name == "RETURN") {
+            token =  this.ts.nextTok();
+        }
+        if (token.name == "FUNCTION") {
+            token =  this.ts.nextTok();
+        }
         //assert token.getType() == Token.LP;
         if (this.mode == 'BUILDING_SYMBOL_TREE') {
             fnScope = new Scope(1, currentScope, token.n, '', token);
@@ -871,10 +878,9 @@ ScopeParser.prototype = {
         } else {
             //qln("FETCHING SCOPE" + this.ts.cursor);
             fnScope = this.indexedScopes[token.id];
-          
         }
         //if (this.mode == 'BUILDING_SYMBOL_TREE') 
-        //    print('FUNC-PARSE:' + JSON.stringify(token,null,4));
+           // print('FUNC-PARSE:' + JSON.stringify(token,null,4));
         // Parse function arguments.
         var args = token.items;
         for (var argpos =0; argpos < args.length; argpos++) {