projects
/
gnome.introspection-doc-generator
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
JSDOC/Walker2.js
[gnome.introspection-doc-generator]
/
JSDOC
/
Walker2.js
diff --git
a/JSDOC/Walker2.js
b/JSDOC/Walker2.js
index
9e7b206
..
b9fad09
100644
(file)
--- 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;
Scope = imports.Scope.Scope;
DocComment = imports.DocComment.DocComment;
Symbol = imports.Symbol.Symbol;
-Parser = imports.Parser.Parser;
+
/**
* Scope stuff
/**
* Scope stuff
@@
-71,6
+71,7
@@
Walker2 = XObject.define(
this.mode = 'BUILDING_SYMBOL_TREE';
this.parseScope(this.globalScope);
this.mode = 'BUILDING_SYMBOL_TREE';
this.parseScope(this.globalScope);
+
},
},
@@
-155,29
+156,30
@@
Walker2 = XObject.define(
//print(JSON.stringify(this.ts, null, 4)); Seed.quit();
while (null != (token = this.ts.next())) {
//print(JSON.stringify(this.ts, null, 4)); Seed.quit();
while (null != (token = this.ts.next())) {
- print("TOK"+ token.toString());
+
//
print("TOK"+ token.toString());
// this.timerPrint("parseScope AFTER lookT: " + token.toString());
// this.timerPrint("parseScope AFTER lookT: " + token.toString());
- if (token.is('
WHIT
')) {
+ if (token.is('
COMM
')) {
if (token.name != 'JSDOC') {
if (token.name != 'JSDOC') {
+ //print("Walker2 : spce is not JSDOC");
continue; //skip.
}
if (this.currentDoc) {
// add it to the current scope????
this.addSymbol('', true);
continue; //skip.
}
if (this.currentDoc) {
// add it to the current scope????
this.addSymbol('', true);
-
+ print ( "Unconsumed Doc: " + token.toString())
//throw "Unconsumed Doc (TOKwhitespace): " + this.currentDoc.toSource();
}
//throw "Unconsumed Doc (TOKwhitespace): " + this.currentDoc.toSource();
}
-
+ // print ( "NEW COMMENT: " + token.toString())
var newDoc = new DocComment(token.data);
// it's a scope changer..
if (newDoc.getTag("scope").length) {
var newDoc = new DocComment(token.data);
// 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;
//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
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];
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)
/// got a doc comment..
//token.data might be this.??? (not sure though)
+ //print("Walker2 : setting currentDoc");
this.currentDoc = newDoc;
continue;
}
this.currentDoc = newDoc;
continue;
}
@@
-207,8
+211,8
@@
Walker2 = XObject.define(
// things that stop comments carrying on...??
if (this.currentDoc && (
// 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();
}
this.addSymbol('', true);
//throw "Unconsumed Doc ("+ token.toString() +"): " + this.currentDoc.toSource();
}
@@
-243,14
+247,10
@@
Walker2 = XObject.define(
// a << scope
// xxx.applyIf(a, {
// a << scope
// a << scope
// xxx.applyIf(a, {
// a << scope
- if (token.type = 'NAME') {
+ if (token.type =
=
'NAME') {
//print("TOK(ident)"+ token.toString());
//print("TOK(ident)"+ token.toString());
-
-
-
-
-
+
if (/\.extend$/.test(token.data) &&
this.ts.lookTok(1).data == '(' &&
this.ts.lookTok(2).type == 'NAME' &&
if (/\.extend$/.test(token.data) &&
this.ts.lookTok(1).data == '(' &&
this.ts.lookTok(2).type == 'NAME' &&
@@
-329,7
+329,16
@@
Walker2 = XObject.define(
// apply ( XXXX, {
// 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' &&
if (/\.(applyIf|apply)$/.test(token.data) &&
this.ts.lookTok(1).data == '(' &&
this.ts.lookTok(2).type == 'NAME' &&
@@
-347,14
+356,13
@@
Walker2 = XObject.define(
if (this.currentDoc) {
this.addSymbol(scopeName,false,'OBJECT');
if (this.currentDoc) {
this.addSymbol(scopeName,false,'OBJECT');
-
}
this.ts.nextTok(); /// ,
this.ts.nextTok(); // {
}
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;
var fnScope = new Scope(this.braceNesting, scope, token.n, scopeName);
this.indexedScopes[this.ts.cursor] = fnScope;
scope = fnScope;
@@
-369,7
+377,7
@@
Walker2 = XObject.define(
// xxx = new yyy ( {
// change scope to xxxx
// xxx = new yyy ( {
// change scope to xxxx
-
+ /*
print(JSON.stringify([
this.ts.lookTok(1).data ,
this.ts.lookTok(2).name ,
print(JSON.stringify([
this.ts.lookTok(1).data ,
this.ts.lookTok(2).name ,
@@
-377,7
+385,7
@@
Walker2 = XObject.define(
this.ts.lookTok(4).data ,
this.ts.lookTok(5).data
], null, 4));
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' &&
if ( this.ts.lookTok(1).data == '=' &&
this.ts.lookTok(2).name == 'NEW' &&
this.ts.lookTok(3).type == 'NAME' &&
@@
-409,19
+417,7
@@
Walker2 = XObject.define(
}
}
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@
-442,23
+438,32
@@
Walker2 = XObject.define(
if (((this.ts.lookTok(1).data == ':' )|| (this.ts.lookTok(1).data == '=')) &&
(this.ts.lookTok(2).name == "FUNCTION")
) {
if (((this.ts.lookTok(1).data == ':' )|| (this.ts.lookTok(1).data == '=')) &&
(this.ts.lookTok(2).name == "FUNCTION")
) {
+ this.ts.nextTok();
+ this.ts.nextTok();
atype = 'FUNCTION';
}
//print("ADD SYM:" + atype + ":" + token.toString() + this.ts.lookTok(1).toString() + this.ts.lookTok(2).toString());
this.addSymbol(
atype = 'FUNCTION';
}
//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);
false,
atype);
+
+
+
}
continue; // dont care about other idents..
}
continue; // dont care about other idents..
- }
- if (token.type == "STRN") {
+ }
+
+ //print ("NOT NAME");
+
+
+ if (token.type == "STRN") { // THIS WILL NOT HAPPEN HERE?!!?
if (this.currentDoc) {
this.addSymbol(token.data.substring(1,token.data.length-1),false,'OBJECT');
if (this.currentDoc) {
this.addSymbol(token.data.substring(1,token.data.length-1),false,'OBJECT');
@@
-468,13
+473,16
@@
Walker2 = XObject.define(
// really we only have to deal with object constructs and function calls that change the scope...
// really we only have to deal with object constructs and function calls that change the scope...
-
if (token.name == 'FUNCTION') {
-
+ if (token.name == 'FUNCTION') {
+ //print("GOT FUNCTION");
// see if we have an unconsumed doc...
if (this.currentDoc) {
// see if we have an unconsumed doc...
if (this.currentDoc) {
- print(this.ts.dumpToCur());
- throw "Unhandled doc (TOKfunction)" + token.toString();
+ throw {
+ name: "ArgumentError",
+ message: "Unhandled doc (TOKfunction)" + token.toString()
+ };
+
//this.addSymbol(this.currentDoc.getTag('class')[0].name, true);
//throw "Unconsumed Doc: (TOKrbrace)" + this.currentDoc.toSource();
//this.addSymbol(this.currentDoc.getTag('class')[0].name, true);
//throw "Unconsumed Doc: (TOKrbrace)" + this.currentDoc.toSource();
@@
-492,7
+500,7
@@
Walker2 = XObject.define(
(this.ts.lookTok(-2).type == 'NAME')
) {
scopeName = this.ts.lookTok(-2).data;
(this.ts.lookTok(-2).type == 'NAME')
) {
scopeName = this.ts.lookTok(-2).data;
- this.ts.balance
N
('(');
+ this.ts.balance('(');
token = this.ts.nextTok(); // should be {
//print("FOO=FUNCITON() {}" + this.ts.context() + "\n" + token.toString());
token = this.ts.nextTok(); // should be {
//print("FOO=FUNCITON() {}" + this.ts.context() + "\n" + token.toString());
@@
-500,6
+508,7
@@
Walker2 = XObject.define(
scopeName = fixAlias(scopeName);
var fnScope = new Scope(this.braceNesting, scope, token.n,
'$this$='+scopeName+'.prototype|$private$|'+scopeName+'.prototype');
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);
this.indexedScopes[this.ts.cursor] = fnScope;
//scope = fnScope;
//this.scopesIn(fnScope);
@@
-558,7
+567,7
@@
Walker2 = XObject.define(
//print("got for : function() {");
//scopeName = this.ts.look(-3).data;
//print("got for : function() {");
//scopeName = this.ts.look(-3).data;
- this.ts.balance
N(Script.TOKlparen
);
+ this.ts.balance
('('
);
//print(token.toString())
token = this.ts.nextTok(); // should be {
//print(token.toString())
//print(token.toString())
token = this.ts.nextTok(); // should be {
//print(token.toString())
@@
-581,7
+590,7
@@
Walker2 = XObject.define(
(this.ts.lookTok(1).type == 'NAME')
) {
//scopeName = this.ts.look(-3).data;
(this.ts.lookTok(1).type == 'NAME')
) {
//scopeName = this.ts.look(-3).data;
- this.ts.balance
N
('(');
+ this.ts.balance('(');
token = this.ts.nextTok(); // should be {
var fnScope = new Scope(this.braceNesting, scope, token.n, '');
token = this.ts.nextTok(); // should be {
var fnScope = new Scope(this.braceNesting, scope, token.n, '');
@@
-609,7
+618,7
@@
Walker2 = XObject.define(
// (this.ts.lookTok(-4).tokN == Script.TOKidentifier)
) {
//scopeName = this.ts.look(-3).data;
// (this.ts.lookTok(-4).tokN == Script.TOKidentifier)
) {
//scopeName = this.ts.look(-3).data;
- this.ts.balance
N
('(');
+ this.ts.balance('(');
token = this.ts.nextTok(); // should be {
var fnScope = new Scope(this.braceNesting, scope, token.n, '$private$');
this.indexedScopes[this.ts.cursor] = fnScope;
token = this.ts.nextTok(); // should be {
var fnScope = new Scope(this.braceNesting, scope, token.n, '$private$');
this.indexedScopes[this.ts.cursor] = fnScope;
@@
-624,8
+633,12
@@
Walker2 = XObject.define(
}
}
- print(this.ts.context());
- throw "dont know how to handle function syntax??";
+ throw {
+ name: "ArgumentError",
+ message: "dont know how to handle function syntax??\n" +
+ token.toString()
+ };
+
continue;
continue;
@@
-727,6
+740,8
@@
Walker2 = XObject.define(
addSymbol: function(lastIdent, appendIt, atype )
{
addSymbol: function(lastIdent, appendIt, atype )
{
+ //print("Walker.addSymbol : " + lastIdent);
+ //print("Walker.curdoc: " + JSON.stringify(this.currentDoc, null,4));
/*if (!this.currentDoc.tags.length) {
/*if (!this.currentDoc.tags.length) {
@@
-744,18
+759,18
@@
Walker2 = XObject.define(
//print(this.currentDoc.toSource());
this.currentDoc = false;
//print(this.currentDoc.toSource());
this.currentDoc = false;
- print("SKIP ADD SYM: it's private");
+
//
print("SKIP ADD SYM: it's private");
return;
}
return;
}
- var token = this.ts.
cur(
);
+ var token = this.ts.
lookTok(0
);
if (typeof(appendIt) == 'undefined') {
appendIt= false;
}
// print(this.currentDoc.toSource(););
if (this.currentDoc.getTag('event').length) {
//?? why does it end up in desc - and not name/...
if (typeof(appendIt) == 'undefined') {
appendIt= false;
}
// print(this.currentDoc.toSource(););
if (this.currentDoc.getTag('event').length) {
//?? why does it end up in desc - and not name/...
- print(this.currentDoc.getTag('event')[0]);
+
//
print(this.currentDoc.getTag('event')[0]);
lastIdent = '*' + this.currentDoc.getTag('event')[0].desc;
//lastIdent = '*' + lastIdent ;
}
lastIdent = '*' + this.currentDoc.getTag('event')[0].desc;
//lastIdent = '*' + lastIdent ;
}
@@
-775,8
+790,12
@@
Walker2 = XObject.define(
}
s.push(lastIdent);
}
s.push(lastIdent);
+ //print("FULLSCOPE: " + JSON.stringify(s));
+
+
var s = s.join('|').split('|');
var s = s.join('|').split('|');
- print("Walker:ADDSymbol: " + s.join('|') );
+ //print("FULLSCOPE: " + s);
+ //print("Walker:ADDSymbol: " + s.join('|') );
var _t = '';
_s = '';
var _t = '';
_s = '';
@@
-793,17
+812,18
@@
Walker2 = XObject.define(
if (s[i].substring(0,6) == '$this$') {
var ts = s[i].split('=');
_t = ts[1];
if (s[i].substring(0,6) == '$this$') {
var ts = s[i].split('=');
_t = ts[1];
+ _s = ''; // ??? VERY QUESTIONABLE!!!
continue;
}
// when to use $this$ (probabl for events)
_s += _s.length ? '.' : '';
_s += s[i];
}
continue;
}
// when to use $this$ (probabl for events)
_s += _s.length ? '.' : '';
_s += s[i];
}
-
+ //print("FULLSCOPE: s , t : " + _s +', ' + _t);
/// calc scope!!
//print("ADDING SYMBOL: "+ s.join('|') +"\n"+ _s + "\n" +Script.prettyDump(this.currentDoc.toSource()));
/// 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???
if (appendIt && !lastIdent.length) {
// append, and no symbol???
@@
-812,6
+832,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);
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;
Parser.addSymbol(symbol);
this.symbols[_s] = symbol;
return;
@@
-824,10
+845,16
@@
Walker2 = XObject.define(
_s = _s.replace(/\.prototype.*$/, '');
if (typeof(this.symbols[_s]) == 'undefined') {
_s = _s.replace(/\.prototype.*$/, '');
if (typeof(this.symbols[_s]) == 'undefined') {
- print("Symbol:" + _s);
- print(this.currentDoc.src);
-
- throw "Trying to append symbol, but no doc available";
+ //print("Symbol:" + _s);
+ //print(this.currentDoc.src);
+
+ throw {
+ name: "ArgumentError",
+ message: "Trying to append symbol '" + _s + "', but no doc available\n" +
+ this.ts.lookTok(0).toString()
+ };
+
+
}
for (var i =0; i < this.currentDoc.tags.length;i++) {
}
for (var i =0; i < this.currentDoc.tags.length;i++) {
@@
-837,22
+864,30
@@
Walker2 = XObject.define(
return;
}
}
return;
}
}
+ //print("Walker.addsymbol - chkdup: " + _s);
if (typeof(this.symbols[_s]) != 'undefined') {
if (this.symbols[_s].comment.hasTags) {
// then existing comment doesnt has tags
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 + "\n" + token.toString()
+ //};
+ return;
}
// otherwise existing comment has tags - overwrite..
}
}
// otherwise existing comment has tags - overwrite..
}
+ //print("Walker.addsymbol - ATYPE: " + _s);
+
if (typeof(atype) == "undefined") {
atype = 'OBJECT'; //this.currentDoc.getTag('class').length ? 'OBJECT' : 'FUNCTION';;
}
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);
var symbol = new Symbol(_s, [], atype, this.currentDoc);
-
+ Parser = imports.Parser.Parser;
Parser.addSymbol(symbol);
this.symbols[_s] = symbol;
Parser.addSymbol(symbol);
this.symbols[_s] = symbol;