public static bool Print(LiteEnv Env) { var ParamCount = (int)(Env.Pop().Numeric); if (ParamCount == 0) { Logger.DInfo(string.Empty); } else if (ParamCount == 1) { Logger.DInfo($"Print => {Env.Pop()}"); } else { var Params = new LiteValue[ParamCount - 1]; for (var Index = 0; Index < ParamCount - 1; ++Index) { Params[Index] = Env.Pop(); } var Text = new StringBuilder(Env.Pop().ToString()); for (var Index = 0; Index < ParamCount - 1; ++Index) { Text = Text.Replace($"{{{Index}}}", Params[Index].ToString()); } Logger.DInfo($"Print => {Text}"); } return(false); }
public LiteValue Visit(SyntaxElementsStatementNode Node, LiteEnv Env) { var Eles = new LiteValue[Node.GetChildrenNum()]; for (var Index = 0; Index < Eles.Length; ++Index) { Eles[Index] = Node.GetChild(Index).Accept(this, Env); } return(ElementsTable.AddElementsEx(new Elements(Eles))); }
public void Push(LiteValue Val) { Env_.Push(Val); }
public SyntaxStringLiteralNode(Token Tok) : base(Tok) { Value_ = new LiteValue(LiteValueType.String, StringTable.AddString(Tok.Code)); }
public SyntaxNumericLiteralNode(Token Tok) : base(Tok) { Value_ = new LiteValue(LiteValueType.Numeric, float.Parse(Tok.Code)); }
public SyntaxLiteralNode(Token Tok) : base(Tok) { Value_ = LiteValue.Nil; }
public SyntaxBooleanLiteralNode(Token Tok) : base(Tok) { Value_ = new LiteValue(LiteValueType.Boolean, bool.Parse(Tok.Code) ? 1 : 0); }