}
}
+ errordomain TokenReader_Error {
+ ArgumentError
+ }
+
public class TokenReader : Object
{
/**
@returns {Boolean} Was the token found?
*/
- public bool read_word (TokenStream stream, TokenArray tokens) {
- var found = "";
+ public bool read_word (TokenStream stream, TokenArray tokens)
+ {
+ string found = "";
while (!stream.lookEOF() && Lang.isWordChar(stream.look())) {
found += stream.next();
}
- if (found === "") {
+ if (found == "") {
return false;
}
- var name;
- if ((name = Lang.keyword(found))) {
- if (found == 'return' && tokens.lastSym().data == ')') {
+ var name = Lang.keyword(found);
+ if (name != null) {
+
+ // look for "()return" ?? why ???
+ var ls = tokens.lastSym();
+ if (found == "return" && ls != null && ls.data == ")") {
//Seed.print('@' + tokens.length);
- var n = this.findPuncToken(tokens, ')');
+ var n = this.findPuncToken(tokens, ")");
//Seed.print(')@' + n);
- n = this.findPuncToken(tokens, '(', n-1);
+ n = this.findPuncToken(tokens, "(", n-1);
//Seed.print('(@' + n);
var lt = this.lastSym(tokens, n);
- print(JSON.stringify(lt));
- if (lt.type != 'KEYW' || ['IF', 'WHILE'].indexOf(lt.name) < -1) {
+
+ //print(JSON.stringify(lt));
+ if (lt.type != "KEYW" || ["IF", 'WHILE'].indexOf(lt.name) < -1) {
if (!this.ignoreBadGrammer) {
- throw {
- name : "ArgumentError",
- message: "\n" + this.filename + ':' + this.line + " Error - return found after )"
- }
+ throw new TokenReader_Error.ArgumentError(
+ 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) {
+ foreach (unowned string nm in n) {
if (p) {
- tokens.push(new Token('.', "PUNC", "DOT", _this.line));
+ tokens.push(new Token('.', "PUNC", "DOT", this.line));
}
p=true;
- tokens.push(new Token(nm, "NAME", "NAME", _this.line));
- });
+ tokens.push(new Token(nm, "NAME", "NAME", this.line));
+ }
return true;
/**
@returns {Boolean} Was the token found?
*/
- read_punc : function(/**JSDOC.TokenStream*/stream, tokens) {
- var found = "";
+ public bool read_punc (TokenStream stream, TokenArray tokens)
+ {
+ string found = "";
var name;
- while (!stream.look().eof && Lang.punc(found+stream.look())) {
+ while (!stream.look().eof && Lang.punc(found + stream.look()).length > 0) {
found += stream.next();
}
return false;
}
- if ((found == '}' || found == ']') && tokens.lastSym().data == ',') {
+ var ls = tokens.lastSym();
+
+ if ((found == "}" || found == "]") && ls != null && ls.data == ",") {
//print("Error - comma found before " + found);
//print(JSON.stringify(tokens.lastSym(), null,4));
if (this.ignoreBadGrammer) {
print("\n" + this.filename + ':' + this.line + " Error - comma found before " + found);
} else {
-
- throw {
- name : "ArgumentError",
- message: "\n" + this.filename + ':' + this.line + " Error - comma found before " + found
- }
+ throw new TokenReader_Error.ArgumentError(
+ this.filename + ":" + this.line + " comma found before " + found
+
+ );
+
}
}