X-Git-Url: http://git.roojs.org/?p=gnome.introspection-doc-generator;a=blobdiff_plain;f=JSDOC%2FWalker2.js;h=a96d1f4ac1d83669a168990f2b001e03c0e010c4;hp=9e7b206e280d3a12837b46e5fd094ad9de7d0bb3;hb=6af33b1b9f196fe00184771d05d27d429fe9bd81;hpb=c6f32aea415dbc309ea2d01c279b004f6a0c3880 diff --git a/JSDOC/Walker2.js b/JSDOC/Walker2.js index 9e7b206..a96d1f4 100644 --- a/JSDOC/Walker2.js +++ b/JSDOC/Walker2.js @@ -4,7 +4,7 @@ XObject = imports.XObject.XObject; Scope = imports.Scope.Scope; DocComment = imports.DocComment.DocComment; Symbol = imports.Symbol.Symbol; -Parser = imports.Parser.Parser; + /** * Scope stuff @@ -71,6 +71,7 @@ Walker2 = XObject.define( this.mode = 'BUILDING_SYMBOL_TREE'; this.parseScope(this.globalScope); + }, @@ -158,10 +159,11 @@ Walker2 = XObject.define( print("TOK"+ token.toString()); // this.timerPrint("parseScope AFTER lookT: " + token.toString()); - if (token.is('WHIT')) { + if (token.is('COMM')) { if (token.name != 'JSDOC') { + //print("Walker2 : spce is not JSDOC"); continue; //skip. } if (this.currentDoc) { @@ -177,7 +179,7 @@ Walker2 = XObject.define( // it's a scope changer.. if (newDoc.getTag("scope").length) { - //print(newDoc.getTag("scope").toSource()); + //print("Walker2 : doctag changes scope"); //throw "done"; scope.ident = '$private$|' + newDoc.getTag("scope")[0].desc; continue; @@ -187,6 +189,7 @@ Walker2 = XObject.define( if (newDoc.getTag("scopeAlias").length) { //print(newDoc.getTag("scopeAlias").toSource()); // @scopeAlias a=b + //print("Walker2 : doctag changes scope (alias)"); var sal = newDoc.getTag("scopeAlias")[0].desc.split("="); aliases[sal[0]] = sal[1]; @@ -196,6 +199,7 @@ Walker2 = XObject.define( /// got a doc comment.. //token.data might be this.??? (not sure though) + //print("Walker2 : setting currentDoc"); this.currentDoc = newDoc; continue; } @@ -207,8 +211,8 @@ Walker2 = XObject.define( // things that stop comments carrying on...?? if (this.currentDoc && ( - token.tokN.data == ';' || - token.tokN.data == '}')) { + token.data == ';' || + token.data == '}')) { this.addSymbol('', true); //throw "Unconsumed Doc ("+ token.toString() +"): " + this.currentDoc.toSource(); } @@ -243,7 +247,7 @@ Walker2 = XObject.define( // a << scope // xxx.applyIf(a, { // a << scope - if (token.type = 'NAME') { + if (token.type == 'NAME') { //print("TOK(ident)"+ token.toString()); @@ -329,7 +333,16 @@ Walker2 = XObject.define( // apply ( XXXX, { - + /* + print(JSON.stringify([ + token.data, + this.ts.lookTok(1).data , + this.ts.lookTok(2).type , + this.ts.lookTok(3).data , + this.ts.lookTok(4).data + ], null, 4)); + */ + if (/\.(applyIf|apply)$/.test(token.data) && this.ts.lookTok(1).data == '(' && this.ts.lookTok(2).type == 'NAME' && @@ -347,14 +360,13 @@ Walker2 = XObject.define( if (this.currentDoc) { this.addSymbol(scopeName,false,'OBJECT'); - } this.ts.nextTok(); /// , this.ts.nextTok(); // { - scopeName = fixAlias(scopeName); + scopeName = fixAlias(scopeName); var fnScope = new Scope(this.braceNesting, scope, token.n, scopeName); this.indexedScopes[this.ts.cursor] = fnScope; scope = fnScope; @@ -369,7 +381,7 @@ Walker2 = XObject.define( // xxx = new yyy ( { // change scope to xxxx - + /* print(JSON.stringify([ this.ts.lookTok(1).data , this.ts.lookTok(2).name , @@ -377,7 +389,7 @@ Walker2 = XObject.define( this.ts.lookTok(4).data , this.ts.lookTok(5).data ], null, 4)); - + */ if ( this.ts.lookTok(1).data == '=' && this.ts.lookTok(2).name == 'NEW' && this.ts.lookTok(3).type == 'NAME' && @@ -448,7 +460,7 @@ Walker2 = XObject.define( //print("ADD SYM:" + atype + ":" + token.toString() + this.ts.lookTok(1).toString() + this.ts.lookTok(2).toString()); this.addSymbol( - this.ts.lookTok(-1).tokN == Script.TOKdot ? token.data : fixAlias(token.data), + this.ts.lookTok(-1).data == '.' ? token.data : fixAlias(token.data), false, atype); @@ -457,7 +469,11 @@ Walker2 = XObject.define( continue; // dont care about other idents.. - } + } + + print ("NOT NAME"); + + if (token.type == "STRN") { if (this.currentDoc) { this.addSymbol(token.data.substring(1,token.data.length-1),false,'OBJECT'); @@ -469,7 +485,7 @@ Walker2 = XObject.define( if (token.name == 'FUNCTION') { - + print("GOT FUNCTION"); // see if we have an unconsumed doc... if (this.currentDoc) { @@ -500,6 +516,7 @@ Walker2 = XObject.define( scopeName = fixAlias(scopeName); var fnScope = new Scope(this.braceNesting, scope, token.n, '$this$='+scopeName+'.prototype|$private$|'+scopeName+'.prototype'); + this.indexedScopes[this.ts.cursor] = fnScope; //scope = fnScope; //this.scopesIn(fnScope); @@ -555,7 +572,7 @@ Walker2 = XObject.define( (this.ts.lookTok(-2).type == 'NAME') && (this.ts.lookTok(-3).data == '(' || this.ts.lookTok(-3).data== ',') ) { - //print("got for : function() {"); + print("got for : function() {"); //scopeName = this.ts.look(-3).data; this.ts.balanceN(Script.TOKlparen); @@ -727,6 +744,7 @@ Walker2 = XObject.define( addSymbol: function(lastIdent, appendIt, atype ) { + print("Walker.addSymbol : " + lastIdent); /*if (!this.currentDoc.tags.length) { @@ -748,7 +766,7 @@ Walker2 = XObject.define( return; } - var token = this.ts.cur(); + var token = this.ts.lookTok(0); if (typeof(appendIt) == 'undefined') { appendIt= false; } @@ -803,7 +821,7 @@ Walker2 = XObject.define( /// calc scope!! //print("ADDING SYMBOL: "+ s.join('|') +"\n"+ _s + "\n" +Script.prettyDump(this.currentDoc.toSource())); - + print("Walker.addsymbol - add : " + _s); if (appendIt && !lastIdent.length) { // append, and no symbol??? @@ -812,6 +830,7 @@ Walker2 = XObject.define( if (this.currentDoc.getTag('class').length) { _s = this.currentDoc.getTag('class')[0].desc; var symbol = new Symbol(_s, [], "CONSTRUCTOR", this.currentDoc); + Parser = imports.Parser.Parser; Parser.addSymbol(symbol); this.symbols[_s] = symbol; return; @@ -837,22 +856,30 @@ Walker2 = XObject.define( return; } } + print("Walker.addsymbol - chkdup: " + _s); if (typeof(this.symbols[_s]) != 'undefined') { if (this.symbols[_s].comment.hasTags) { // then existing comment doesnt has tags - throw "DUPLICATE Symbol " + _s; + throw { + name: "ArgumentError", + message:"DUPLICATE Symbol " + _s + }; + } // otherwise existing comment has tags - overwrite.. } + print("Walker.addsymbol - ATYPE: " + _s); + if (typeof(atype) == "undefined") { atype = 'OBJECT'; //this.currentDoc.getTag('class').length ? 'OBJECT' : 'FUNCTION';; } + print("Walker.addsymbol - add : "); var symbol = new Symbol(_s, [], atype, this.currentDoc); - + Parser = imports.Parser.Parser; Parser.addSymbol(symbol); this.symbols[_s] = symbol;