public override Verb CreateVerb(string[] tokens) { Color(position, tokens[1].Length, KeyWords); Color(1, Structures); var index = position + length; var superName = ""; Parameters superParameters = null; if (inheritanceParser.Scan(source, index)) { superName = inheritanceParser.VariableName; superParameters = inheritanceParser.Parameters; index = inheritanceParser.Result.Position; } var traits = new List <string>(); if (doesParser.Scan(source, index)) { traits = doesParser.Traits; index = doesParser.Result.Position; } Block objectBlock; try { InClassDefinition = true; ParseBlock(source, index, "'}'").Assign(out objectBlock, out index); } finally { InClassDefinition = false; } var builder = new Class(new Parameters(), objectBlock, GetStaticBlock(), superName, traits.ToArray(), superParameters, false); result.Value = builder; overridePosition = index; return(new CreateObject(VAR_ANONYMOUS + CompilerState.ObjectID(), builder, false, Protected)); }
public static (string, Parameters, string[], int) Ancestors(string source, int index) { var inheritanceParser = new InheritanceParser(); var doesParser = new DoesParser(); var superName = ""; Parameters superParameters = null; if (inheritanceParser.Scan(source, index)) { superName = inheritanceParser.VariableName; superParameters = inheritanceParser.Parameters; index = inheritanceParser.Result.Position; } var traits = new List <string>(); if (doesParser.Scan(source, index)) { traits = doesParser.Traits; index = doesParser.Result.Position; } return(superName, superParameters, traits.ToArray(), index); }