//<Script type="text/javascript">
-imports['Object.js'].load(Object);
-JSDOC = imports['JSDOC.js'].JSDOC;
-console = imports['console.js'].console;
+const XObject = imports.XObject.XObject;
+
+const console = imports.console.console;
/**
* @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.MULTI_LINE_COMM
+ * 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 indentifier {Identifier} identifier class if relivant
+ * @prop identifier {Identifier} identifier class if relivant
+ *
+ *
+ *
+ * old mappings:
+ *
+ * Script.TOKidentifier - type == 'NAME'
+ * Script.TOKassign = data == '='
+ * Script.TOKsemicolon data == '';
+ *
+ *
*
*/
-Token = Object.define(
- function(data, type, name) {
+const Token = XObject.define(
+ function(data, type, name, line) {
this.data = data;
this.type = type;
this.name = name;
+ this.line = line;
this.prefix = '';
- this.outData = ''; // used by packer/scopeparser
+ this.outData = false; // used by packer/scopeparser
this.identifier = false; // used by scope
+ this.id = Token.id++;
},
Object,
{
+ toString: function()
+ {
+ return 'line:' + this.line + ', type:' + this.type +
+ ', name:' + this.name + ', data:' + this.data +
+ ((this.outData === false) ? '' : ( 'outData : ' + this.outData));
+ },
+
toRaw : function(lvl)
{
lvl = lvl || 0;
var ret = this.data ;
+
+
if (this.items) {
var ar = [];
- Roo.each(this.items, function(ai) {
+ this.items.forEach( function(ai) {
var str = '';
- Roo.each(ai, function(it) {
+ ai.forEach( function(it) {
str += it.toRaw(lvl + 1);
})
ar.push(str);
if (this.props) {
for (var i in this.props) {
ret += this.props[i].key.toRaw(lvl+1) + ' : ';
- Roo.each(this.props[i].val, function(e) {
+ this.props[i].val.forEach( function(e) {
ret+=e.toRaw(lvl+1);
})
return this.name === what || this.type === what;
}
});
-
\ No newline at end of file
+Token.id = 0;
\ No newline at end of file