ometa TejsParser <: Parser { test = `a } TejsParser.matchAll("abavabab ab a b a b ab ba b aa aabb abab ",'test') class String { // Special def =(a) { if(a.is(NativeString)) this = a; } // Special def [](a) { return this.getCharAt(a); } // Special def []=(a,b) { this = this.substring(0,a)+b+this.substring(a+1); } } createClass("String",{ "=":function(a){if(a.is(NativeString)) this.v=a;}, "[]":function(a){return this.value.charAt(a)}, "[]=":function(a,b){return this.value = this.value.substring(0,a)+b+this.value.substring(a+1); }); String x; x = "hej"; alert(x[0]); // h x[0] = "j"; alert(x); // jej var x = new String(); x["="]("hej"); alert(x["[]"](0)); // h x["[]="](0,"j"); alert(x); // jej class Number { def =(a) { if(a.is(NativeNumber))this = a; } def +(a: Number) { return this+a; }.importance = 1; def -(a: Number) { return this-a; }.importance = 1; def *(a: Number) { return this*a; }.importance = 2; def /(a: Number) { return this/a; }.importance = 2; } Number y = 3; Number z=y+1*3; z=1*3+y;