*
*
*/
+namespace JSDOC
+{
+ int Token_id = 1;
-public class JSDOC.Token : Object {
-
- public string data;
- public string type;
- public string name;
- public int line;
- public string prefix;
-
- public string outData;
-
- public string identifier;
+
+ public class TokenKeyMap : Object {
+ public Token key;
+ public Gee.ArrayList<Token> vals;
+
+ public TokenKeyMap()
+ {
+ this.key = new Token("","VOID", "VOID");
+ this.vals = new Gee.ArrayList<Token>();
+ }
+
+
+ }
+
+ public class Token : Object {
+
+ int id;
+
+ public string data;
+ public string type;
+ public string name;
+ public int line;
+ public string prefix; // white space prefix... (when outputing with WS)
+
+ public string outData;
+
+ public Token? identifier;
+
+ // used to stuff tokens together when building a tree..
+ public Gee.ArrayList<Gee.ArrayList<Token>> items;
+ // for a object definition, key -> array of tokens..
+ public Gee.HashMap<string,TokenKeyMap> props;
+
+ // props??? what's this???
+
+ public Token(string data, string type, string name, int line = -1)
+ {
+ this.data = data;
+ this.type = type;
+ this.name = name;
+ this.line = line;
+ this.prefix = "";
+ this.outData = null; // used by packer/scopeparser
+ this.identifier = null; // used by scope
+ this.id = Token_id++;
+
+
+ this.items = new Gee.ArrayList<Gee.ArrayList<Token>>();
+ this.props = new Gee.HashMap<string,TokenKeyMap>();
+ }
- public Token(string data, string type, string name, int line) {
- this.data = data;
- this.type = type;
- this.name = name;
- this.line = line;
- this.prefix = "";
- this.outData = null; // used by packer/scopeparser
- this.identifier = null; // used by scope
- this.id = Token.id++;
- },
- Object,
- {
- toString: function()
+ public string asString()
{
- return 'line:' + this.line + ', type:' + this.type +
- ', name:' + this.name + ', data:' + this.data +
- ((this.outData === false) ? '' : ( 'outData : ' + this.outData));
- },
+ return "line:%d, type %s, name %s, data : %s , outData: %s".printf(
+ this.line,
+ this.type,
+ this.name,
+ this.data,
+ this.outData == null ? "" : this.outData
+ );
+
+ }
- toRaw : function(lvl)
+ public string toRaw(int lvl = 0)
{
- lvl = lvl || 0;
- var ret = this.data ;
+ var ret = this.data ;
- if (this.items) {
- var ar = [];
- this.items.forEach( function(ai) {
-
- var str = '';
- ai.forEach( function(it) {
- str += it.toRaw(lvl + 1);
- })
- ar.push(str);
-
- })
- ret += ar.join('');
-
+ foreach(var ai in this.items ) {
+ // supposed to iterate properties???
+ string str = "";
+ //foreach( var it in ai) {
+ // str += it.toRaw(lvl+1);
+ // }
+ ret += str;
}
+
+ /* -- what is a prop..
if (this.props) {
for (var i in this.props) {
ret += this.props[i].key.toRaw(lvl+1) + ' : ';
}
}
-
+ */
return this.prefix + ret;
- },
-
+ }
+ /*
toJS : function() {
try {
return "ERROR unparsable" + this.data;
}
},
-
+ */
- is : function(what) {
- return this.name === what || this.type === what;
+ public bool is(string what) {
+ return this.name == what || this.type == what;
}
-});
-Token.id = 0;
\ No newline at end of file
+ }
+}
+
\ No newline at end of file