X-Git-Url: http://git.roojs.org/?p=gnome.introspection-doc-generator;a=blobdiff_plain;f=JSDOC%2FToken.vala;h=e3779c01dd8c8991c6283f2064f735787b4c8cbc;hp=e69de29bb2d1d6434b8b29ae775ad8c2e48c5391;hb=5952f0a864405366d4da4951db2c01f207b82b35;hpb=75eba08dc3fbb1589be53718762676a1d16dec1c diff --git a/JSDOC/Token.vala b/JSDOC/Token.vala index e69de29..e3779c0 100644 --- a/JSDOC/Token.vala +++ b/JSDOC/Token.vala @@ -0,0 +1,177 @@ +/** + * @class Token + * + * @prop data {String} raw value of token + * @prop type {String} type of token + * TOKN (unknown) - name is UNKNOWN_TOKEN + * + * KEYW (keyword) - name is upper case version of keyword + * NAME (name/identifier) - name is NAME + * COMM (comment) - name is MULTI_LINE_COMM, JSDOC, SINGLE_LINE_COMM + * PUNC (puctuation) - name is String description of punctionan (eg LEFTPARAM) + * WHIT (white space) - name is SPACE,NEWLINE + * STRN (string) - name is DOBULE_QUOTE, SINGLE_QUOTE + * NUMB (number) - name is OCTAL,DECIMAL,HEC_DEC + * REGX (reg.expression) - name is REGX + * @prop name {String} see type details above + * @prop identifier {Identifier} identifier class if relivant + * + * + * + * old mappings: + * + * Script.TOKidentifier - type == 'NAME' + * Script.TOKassign = data == '=' + * Script.TOKsemicolon data == ''; + * + * + * +*/ +namespace JSDOC +{ + int Token_id = 1; + + + public class TokenKeyMap : Object { + public Token key; + public Gee.ArrayList vals; + + public TokenKeyMap() + { + this.key = new Token("","VOID", "VOID"); + this.vals = new Gee.ArrayList(); + } + + + } + + public class Token : Object { + + public 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 Identifier identifier; + + // used to stuff tokens together when building a tree.. + public Gee.ArrayList> items; + // for a object definition, key -> array of tokens.. + public Gee.HashMap 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 = ""; // used by packer/scopeparser + this.identifier = null; // used by scope + this.id = Token_id++; + + + this.items = new Gee.ArrayList>(); + this.props = new Gee.HashMap(); + } + + public string asString() + { + return "line:%d, type %s, data : %s, name %s, , outData: %s".printf( + this.line, + this.type, + this.data, + this.name, + this.outData == null ? "" : this.outData + ); + + } + + + public void dump(string indent) + { + print("%s%s\n",indent, this.asString()); + if (this.items.size > 0) { + + for (var i = 0;i < this.items.size; i++) { + print("%s --ITEMS[%d] [ \n",indent,i); + for (var j = 0;j < this.items[i].size; j++) { + this.items[i][j].dump(indent + " "); + } + } + } + if (this.props.size > 0) { + var m = this.props.map_iterator(); + while(m.next()) { + print("%s --KEY %s :: \n",indent,m.get_key()); + var vals = m.get_value().vals; + for (var i = 0;i < vals.size; i++) { + + vals[i].dump(indent + " "); + } + } + + + } + + } + + + public string toRaw(int lvl = 0) + { + + + var ret = this.data ; + + 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) + ' : '; + this.props[i].val.forEach( function(e) { + ret+=e.toRaw(lvl+1); + }) + + } + } + + */ + + return this.prefix + ret; + + } + /* + toJS : function() { + + try { + var _tmp = ''; + eval( "_tmp = " + this.data); + return _tmp; + } catch( e) { + return "ERROR unparsable" + this.data; + } + }, + */ + + + public bool is(string what) { + return this.name == what || this.type == what; + } + } +} + \ No newline at end of file