JSDOC/Scope.js
[gnome.introspection-doc-generator] / JSDOC / Scope.js
index 6b63663..425a385 100644 (file)
@@ -6,9 +6,10 @@
 * // FIXME - I need this to do next() without doccomments..
 */
 
-Identifier = imports.Identifier.Identifier
-XObject = imports.XObject.XObject; 
+const Identifier = imports.Identifier.Identifier
+const XObject = imports.XObject.XObject; 
 
+Scope.id = 1;
 
 function Scope(braceN, parent, startTokN, lastIdent, token)
 {
@@ -18,13 +19,13 @@ function Scope(braceN, parent, startTokN, lastIdent, token)
     
     this.braceN = braceN
     this.parent = parent;
-    this.id = startTokN;
+    this.id = Scope.id++;
     this.identifiers = { };
     this.subScopes = [];
     this.hints = { };
     this.ident = lastIdent;
     this.gid = Scope.gid++;
-    
+    this.token = token;
     //print("ADD SCOPE(" + this.gid + ") TO "+ (parent ? this.parent.gid : 'TOP') + ' : ' + 
     //    (token ? token.toString() : ''));
     
@@ -53,9 +54,38 @@ Scope.prototype = {
     
     munged : false,
     protectedVars : {}, // only used by to parent..
-    declareIdentifier : function(symbol, token) {
+    
+    /**
+     * dump the scope to StdOut...
+     * 
+     */
+    dump : function(indent) 
+    {
+        indent = indent || '';
+        var str = '';
+        for (var k in this.identifiers) {
+            str += str.length ? ", " : "";
+            str += k + '=>' + this.identifiers[k].mungedValue;
+        }
+        
+        print(
+            indent + "Scope: " + this.id + "\n" +
+            
+            indent + "Started: " + ( this.token ? this.token.toString(): 'TOP' ) + "\n" +
+            indent + "- " + str + "\n"
+        );
+        this.subScopes.forEach(function(s) {
+            s.dump(indent + ' ');
+        });
+        
+        
+    },
+    
+    
+    declareIdentifier : function(symbol, token) 
+    {
         
-        print("SCOPE : " + this.gid +  " : " + token.toString()+"");
+        //print("SCOPE : " + this.gid +  " :SYM: " + symbol + " " + token.toString()+"");
         
         if (typeof(this.identifiers[symbol])== 'undefined') {
             
@@ -70,6 +100,8 @@ Scope.prototype = {
                 // then it's global... 
                 this.identifiers[symbol].toMunge  = false;
         }
+         
+        
         this.addToParentScope(symbol);
         return this.identifiers[symbol];
     },