public static SprakBoolean IsKeyPressed( ExecutionContext context, SprakString key) { bool result = context.Computer?.Screen.IsKeyPressed(key.Value) ?? false; return(SprakBoolean.From(result)); }
// H public static SprakBoolean HasFunction(ExecutionContext context, SprakString name) { bool exists = context.SignatureResolver .FindFunctions(name.Value) .Any(); return(SprakBoolean.From(exists)); }
public override void Execute(ExecutionContext context) { // Remember, latest first on a stack SprakNumber second = context.Memory.PopValue <SprakNumber>(); SprakNumber first = context.Memory.PopValue <SprakNumber>(); SprakBoolean result = SprakBoolean.From(first.Value > second.Value); context.Memory.PushValue(result); }
public override void Execute(ExecutionContext context) { SprakBoolean condition = context.Memory.PopValue <SprakBoolean>(); if (!condition.Value) { context.Instructions.Jump(LabelName); } else { context.Instructions.Step(); } }
public LiteralGet(Token token) : base(token) { switch (Token.Type) { case TokenType.Boolean: if (bool.TryParse(token.Content, out bool boolean)) { Value = SprakBoolean.From(boolean); } else { throw new TokenCheckException(token, $"Unable to parse boolean from {token}"); } break; case TokenType.Number: if (double.TryParse(token.Content, out double number)) { Value = new SprakNumber(number); } else { throw new TokenCheckException(token, $"Unable to parse number from {token}"); } break; case TokenType.String: Value = new SprakString(token.Content); break; default: throw new TokenCheckException( token, $"Unsupported token for {nameof(LiteralGet)}: {token}"); } token.ExpressionHint = this; }
public static SprakBoolean NotEqual(SprakString left, SprakString right) { return(SprakBoolean.From(left != right)); }
public static SprakBoolean And(SprakBoolean left, SprakBoolean right) { return(SprakBoolean.From(left.Value && right.Value)); }
public static SprakBoolean Not(SprakBoolean right) { return(SprakBoolean.From(!right.Value)); }
public static SprakBoolean GreaterThanOrEquals(SprakNumber left, SprakNumber right) { return(SprakBoolean.From(left.Value >= right.Value)); }
public static SprakBoolean LessThanOrEquals(SprakNumber left, SprakNumber right) { return(SprakBoolean.From(left.Value <= right.Value)); }
public static SprakBoolean NotEqual(SprakConnection left, SprakConnection right) { return(SprakBoolean.From(left.ConnectionString != right.ConnectionString)); }
public static SprakBoolean NotEqual(Value left, Value right) { return(SprakBoolean.From(left != right)); }
public static SprakBoolean NotEqual(SprakArray left, SprakArray right) { return(SprakBoolean.From(left != right)); }
public static SprakBoolean Or(SprakBoolean left, SprakBoolean right) { return(SprakBoolean.From(left.Value || right.Value)); }
public static SprakBoolean NotEqual(SprakNumber left, SprakNumber right) { return(SprakBoolean.From(left != right)); }
public static SprakBoolean Equal(SprakConnection left, SprakConnection right) { return(SprakBoolean.From(left == right)); }
public static SprakBoolean Equal(SprakBoolean left, SprakBoolean right) { return(SprakBoolean.From(left.Value == right.Value)); }