//assert token.getType() == Token.RP; // )
}
- void parseFunctionDeclaration (scope)
+ void parseFunctionDeclaration (Scope scope)
{
//print("PARSE FUNCTION");
var token = this.ts.nextTok();
if (token.type == "NAME") {
- if (this.mode == copeParserMode.BUILDING_SYMBOL_TREE) {
+ if (this.mode == ScopeParserMode.BUILDING_SYMBOL_TREE) {
// Get the name of the function and declare it in the current scope.
symbol = token.data;
if (scope.getIdentifier(symbol,token) != false) {
}
-
+ Scope fnScope;
//assert token.getType() == Token.LP;
- if (this.mode == 'BUILDING_SYMBOL_TREE') {
+ if (this.mode == ScopeParserMode.BUILDING_SYMBOL_TREE) {
fnScope = new Scope(1, scope, token.n, '', token);
//println("STORING SCOPE" + this.ts.cursor);
// print('FUNC-PARSE:' + JSON.stringify(token,null,4));
// Parse function arguments.
var args = token.items;
- for (var argpos =0; argpos < args.length; argpos++) {
+ for (var argpos =0; argpos < args.size; argpos++) {
- token = args[argpos][0];
+ token = args.get(argpos).get(0);
//print ("FUNC ARGS: " + token.toString())
//assert token.getType() == Token.NAME ||
// token.getType() == Token.COMMA;
- if (token.type == 'NAME' && this.mode == 'BUILDING_SYMBOL_TREE') {
- symbol = token.data;
- identifier = fnScope.declareIdentifier(symbol,token);
+ if (token.type == "NAME" && this.mode == ScopeParserMode.BUILDING_SYMBOL_TREE) {
+ var symbol = token.data;
+ var identifier = fnScope.declareIdentifier(symbol,token);
if (symbol == "$super" && argpos == 0) {
// Exception for Prototype 1.6...
identifier.preventMunging();
//token = this.ts.nextTok();
//print(token.toString());
var outTS = this.ts;
- var _this = this;
- token.items.forEach(function(tar) {
- _this.ts = new TokenStream(tar);
- _this.parseScope(fnScope);
-
+ foreach(var tar in token.items) {
+ this.ts = new TokenStream(tar);
+ this.parseScope(fnScope);
});
//print("ENDFN -1: " + this.ts.lookTok(-1).toString());
//print("ENDFN 0: " + this.ts.lookTok(0).toString());
//print("ENDFN 1: " + this.ts.lookTok(1).toString());
- },
+ }
- protectScopeFromObfuscation : function(scope) {
+ void protectScopeFromObfuscation (scope) {
//assert scope != null;
if (scope == this.globalScope) {
//assert scope.getParentScope() == globalScope;
scope.preventMunging();
- },
+ }
- getIdentifier: function(symbol, scope, token) {
- var identifier;
- while (scope != false) {
+ string getIdentifier(string symbol, Scope in_scope, Token token)
+ {
+ string identifier;
+ var scope = in_scope;
+ while (scope != null) {
identifier = scope.getIdentifier(symbol, token);
//println("ScopeParser.getIdentgetUsedSymbols("+symbol+")=" + scope.getUsedSymbols().join(','));
- if (identifier) {
+ if (identifier.length) {
return identifier;
}
scope = scope.parent;
}
- return false;
+ return "";
}
-};
+}