TokenReader = XObject.define(
function(o) {
- this.keepDocs = true;
- this.keepWhite = false;
- this.keepComments = false;
- this.sepIdents = false; // seperate '.' in identifiers..
XObject.extend(this, o || {});
},
Object,
{
+ /** @cfg {Boolean} collapseWhite merge multiple whitespace/comments into a single token **/
collapseWhite : false, // only reduces white space...
-
+ /** @cfg {Boolean} keepDocs keep JSDOC comments **/
+ keepDocs : true,
+ /** @cfg {Boolean} keepWhite keep White space **/
+ keepWhite : false,
+ /** @cfg {Boolean} keepComments keep all comments **/
+ keepComments : false,
+ /** @cfg {Boolean} sepIdents seperate identifiers (eg. a.b.c into ['a', '.', 'b', '.', 'c'] ) **/
+ sepIdents : false,
+ /** @cfg {String} filename name of file being parsed. **/
+ filename : '',
+
/**
* tokenize a stream
* @return {Array} of tokens
if (found === "") {
return false;
}
- else {
- var name;
- if ((name = Lang.keyword(found))) {
- tokens.push(new Token(found, "KEYW", name, this.line));
- return true;
- }
- if (!this.sepIdents || found.indexOf('.') < 0 ) {
- tokens.push(new Token(found, "NAME", "NAME", this.line));
- return true;
- }
- var n = found.split('.');
- var p = false;
- var _this = this;
- n.forEach(function(nm) {
- if (p) {
- tokens.push(new Token('.', "PUNC", "DOT", _this.line));
- }
- p=true;
- tokens.push(new Token(nm, "NAME", "NAME", _this.line));
- });
- return true;
+
+ var name;
+ if ((name = Lang.keyword(found))) {
+ if (found == 'return' && tokens.lastSym().data == ')') {
+ throw {
+ name : "ArgumentError",
+ message: "\n" + this.filename + ':' + this.line + " Error - return found after )"
+ }
+
+ tokens.push(new Token(found, "KEYW", name, this.line));
+ return true;
+ }
+ if (!this.sepIdents || found.indexOf('.') < 0 ) {
+ tokens.push(new Token(found, "NAME", "NAME", this.line));
+ return true;
}
+ var n = found.split('.');
+ var p = false;
+ var _this = this;
+ n.forEach(function(nm) {
+ if (p) {
+ tokens.push(new Token('.', "PUNC", "DOT", _this.line));
+ }
+ p=true;
+ tokens.push(new Token(nm, "NAME", "NAME", _this.line));
+ });
+ return true;
+
+
},
/**
//print(JSON.stringify(tokens.lastSym(), null,4));
throw {
name : "ArgumentError",
- message: "Error - comma found before " + found + " on line " + this.line + "\n"
+ message: "\n" + this.filename + ':' + this.line + " Error - comma found before " + found
}
}