Gee.HashMap<int,Scope> indexedScopes;
bool munge = true;
-
+ int expN = 0;
public ScopeParser(TokenStream ts) {
this.ts = ts; // {TokenStream}
//this.logR("parseScope GOT VAR : <B>" + token.toString() + "</B>");
if (token.type != "NAME") {
- for(var i = Int.max(this.ts.cursor-10,0); i < this.ts.cursor+1; i++) {
+ for(var i = int.max(this.ts.cursor-10,0); i < this.ts.cursor+1; i++) {
print(this.ts.tokens[i].toString());
}
if (symbol == "this") {
break;
}
- if (this.mode == 'PASS2_SYMBOL_TREE') {
+
+ if (this.mode == ScopeParserMode.PASS2_SYMBOL_TREE) {
//println("GOT IDENT: -2 : " + this.ts.lookT(-2).toString() + " <BR> ..... -1 : " + this.ts.lookT(-1).toString() + " <BR> ");
// We don't need to declare longer symbols since they won't cause
// any conflict with other munged symbols.
this.globalScope.declareIdentifier(symbol, token);
- this.warn("Found an undeclared symbol: " + symbol + ' (line:' + token.line + ')', true);
+ this.warn("Found an undeclared symbol: " + symbol + " (line:" + token.line + ")", true);
}
//println("GOT IDENT IGNORE(3): <B>" + symbol + "</B><BR/>");
break;
//println("<B>SID</B>");
default:
- if (token.type != 'KEYW') {
+ if (token.type != "KEYW") {
break;
}
//print('SCOPE-KEYW:' + token.toString());
symbol = token.data;
- if (this.mode == 'BUILDING_SYMBOL_TREE') {
+ if (this.mode == ScopeParserMode.BUILDING_SYMBOL_TREE) {
if (token.name == "EVAL") {
// look for eval:var:noreplace\n
//print("MATCH!?");
var _t = this;
+
+
token.prefix.replace(/eval:var:([a-z_]+)/ig, function(m, a) {
//print("GOT: " + a);
var hi = _t.getIdentifier(a, scope, token);
}
//print("<<< EXIT SCOPE");
//print("<<<<<<<EXIT SCOPE ERR?" +this.scopes.length);
- },
+ }
- expN : 0,
- parseExpression : function(scope) {
+
+
+ void parseExpression(Scope scope)
+ {
// Parse the expression until we encounter a comma or a semi-colon
// in the same brace nesting, bracket nesting and paren nesting.
// Parse functions if any...
//println("<i>EXP</i><BR/>");
- !this.debug || print("PARSE EXPR");
+ //!this.debug || print("PARSE EXPR");
this.expN++;
// for printing stuff..
- var symbol;
- var token;
-
- var identifier;
var expressionBraceNesting = this.braceNesting + 0;
var bracketNesting = 0;
var parensNesting = 0;
var isInObjectLitAr;
- var isObjectLitAr = [ false ];
+ var isObjectLitAr = new Gee.ArrayList<boolean>();
+ isObjectLitAr.add( false);
//print(scopeIndent + ">> ENTER EXPRESSION" + this.expN);
- while ((token = this.ts.nextTok())) {
+ while (null != (token = this.ts.nextTok())) {
//println("<i>"+token.data+"</i>");
//this.log("EXP:" + token.data);
switch (token.type) {
- case 'PUNC':
+ case "PUNC":
//print("EXPR-PUNC:" + token.toString());
switch(token.data) {
- case ';':
+ case ";":
//print("<< EXIT EXPRESSION");
break;
- case ',':
+ case ",":
break;
- case '(': //Token.LP:
- case '{': //Token.LC:
- case '[': //Token.LB:
+ case "(": //Token.LP:
+ case "{": //Token.LC:
+ case "[": //Token.LB:
//print('SCOPE-CURLY/PAREN/BRACE:' + token.toString());
// print('SCOPE-CURLY/PAREN/BRACE:' + JSON.stringify(token, null,4));
//println("<i>"+token.data+"</i>");