Documentation ¶
Index ¶
- Constants
- Variables
- func AssertOp(t *testing.T, s string, st *Stack, fs ...float64)
- func Cycle(s string, fl *Flags, st *Stack) error
- func Eval(a any, st *Stack) error
- func EvalAll(as []any, st *Stack) error
- func Input() (string, error)
- func Main(fl *Flags, st *Stack)
- func Output(s string, as ...any)
- func Parse(s string) (any, error)
- func ParseAll(s string) ([]any, error)
- func Prompt(s string) (string, error)
- func TestBufs(s string) *bytes.Buffer
- type Flags
- type OperFunc
- type Operator
- type Stack
Constants ¶
const VersionDate = "2022-09-05"
VersionDate is SSCal's current version date.
const VersionNumber = "0.3.0"
VersionNumber is SSCal's current version number.
Variables ¶
var Banner = fmt.Sprintf("SSCal version %s (%s).", VersionNumber, VersionDate)
Banner is SSCal's interactive banner string.
var Operators = map[string]*Operator{ "+": Op2(func(a, b float64) float64 { return a + b }), "-": Op2(func(a, b float64) float64 { return a - b }), "*": Op2(func(a, b float64) float64 { return a * b }), "/": Op2(func(a, b float64) float64 { return a / b }), "%": Op2(math.Mod), "^": Op2(math.Pow), "ceil": Op1(math.Ceil), "floor": Op1(math.Floor), "sqrt": Op1(math.Sqrt), "min": Op2(math.Min), "max": Op2(math.Max), "sum": OpFold(func(a, b float64) float64 { return a + b }), "dupe": OpStack(1, func(st *Stack) { st.Push(st.Peek()) }), "roll": OpStack(1, func(st *Stack) { st.Insert(0, st.Pop()) }), "swap": OpStack(2, func(st *Stack) { st.Insert(st.End()-1, st.Pop()) }), "wipe": OpStack(0, func(st *Stack) { st.Clear() }), }
Operators is a map of all available Operators.
var Reader = bufio.NewReader(os.Stdin)
Reader is SSCal's default standard input Reader.
var Writer = bufio.NewWriter(os.Stdout)
Writer is SSCal's default standard input Writer.
Functions ¶
Types ¶
type Flags ¶ added in v0.3.0
Flags is a container of parsed command-line arguments.
func ParseFlags ¶ added in v0.3.0
func ParseFlags() *Flags
ParseFlags returns a pointer to a new Flags using parsed arguments.
type Operator ¶
Operator is a callable Stack operator.
func NewOperator ¶
NewOperator returns a pointer to a new Operator.
func OpFold ¶ added in v0.3.0
OpFold returns an Operator from a function that takes two float arguments, converting the function to operate on an entire Stack.
type Stack ¶
type Stack struct {
Floats []float64
}
Stack is a last-in-first-out stack of floats.
func (*Stack) Clear ¶ added in v0.3.0
func (st *Stack) Clear()
Clear removes all floats on the Stack,