public void Generate(Class generator) { var morpheme = Phrase.GetEnd(MatchType); Phrase.DoubleCheck(morpheme, MorphemeAttribute.Class); generator.public_field.Add(new Variable(morpheme.type, name)); }
public override void Generate(Method generator) { var morpheme = Phrase.GetEnd(MatchType); Phrase.DoubleCheck(morpheme, MorphemeAttribute.Class); generator.locals.Add(new Variable(morpheme.type, name)); }
public override void Generate(Method generator) { value.Check(generator); value.Generate(generator); var morpheme = Phrase.GetEnd(target); Phrase.DoubleCheck(morpheme, MorphemeAttribute.Object); var index = generator.GetVar(morpheme.name, out var attribute); if (index == -1) { Error(UnknownVariable, lex_line, lex_ch, morpheme.name); } generator.AddCode(attribute == 1?ISet.Storeloc:ISet.StoreField, index); }
public void Generate(Class @class) { @class.current_method = this; if (return_match != null && @return == null) { @return = Phrase.GetEnd(return_match).type; } statements.Generate(this); Debugger.Message("-----" + name + "生成的字节码-------"); for (var index = 0; index < locals.Count; index++) { Debugger.Message(".[" + index + "]" + locals[index].type + " " + locals[index].name); } foreach (var code in codes) { Debugger.Message(code.ToString()); } Debugger.Message("--------------------------"); }