public override void WriteToStream(IndentStream stream) { stream.Write($"{ExecToken}"); if (ReturnVariable != null) { stream.Write(" "); ReturnVariable.WriteToStream(stream); stream.Write(" ="); } stream.Write(" "); Name.WriteToStream(stream); stream.Write(" "); Parameters.WriteToStreamWithComma(stream); }
public override void WriteToStream(IndentStream stream) { stream.Write("CREATE FUNCTION "); Name.WriteToStream(stream); stream.Write("("); Arguments.WriteToStreamWithComma(stream); stream.WriteLine(")"); stream.Write("RETURNS "); if (ReturnVariable != null) { ReturnVariable.WriteToStream(stream); stream.Write(" "); } ReturnType.WriteToStream(stream); stream.WriteLine(); stream.WriteLine("AS BEGIN"); Body.WriteToStream(stream); stream.WriteLine(); stream.Write("END"); }
public CreateMethodFrame(MethodSlot slot) : base(slot.HandlerType, (MethodInfo)slot.Method) { EventType = Method.GetEventType(null); ReturnVariable.OverrideName(ReturnVariable.Usage + ++_counter); }
private void BtnParse_Click(object sender, EventArgs e) { var def = txtDefinition.Text; if (def.IndexOf(' ') == -1) { MessageBox.Show("Unable to find return space after return type."); return; } var retPart = def.Substring(0, def.IndexOf(' ')); var type = ParseDatatype(retPart, true, 0, out bool isArr, out UInt16 arrLen, out bool isPtr); var returnVar = new ReturnVariable() { Pointer = isPtr, Length = isArr ? arrLen : (UInt16)1, Type = type }; if (returnVar.Type == null) { return; } var rest = def.Substring(def.IndexOf(' ')); if (rest.IndexOf('(') == -1 || rest.IndexOf(')') == -1) { MessageBox.Show("No argument list found."); return; } var funcName = rest.Substring(0, rest.IndexOf('(')); var sIdx = rest.IndexOf('(') + 1; var eIdx = rest.IndexOf(')'); var args = rest.Substring(sIdx, eIdx - sIdx).Split(','); var i = 1; var parsedArgs = new List <Argument>(); foreach (var a in args) { if (a == "()") { continue; } var aspl = a.Split(' '); var name = aspl[1]; var atype = ParseDatatype(aspl[0], false, i++, out bool aisArr, out UInt16 aarrLen, out bool aisPtr); parsedArgs.Add(new Argument() { Name = name, Type = atype }); } this.func.Name = funcName.Trim(); this.func.ReturnType = returnVar; this.func.Arguments = parsedArgs; txtDefinition.Text = this.func.Definition; }