summaryrefslogtreecommitdiff
path: root/internal/rpn/stack.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/rpn/stack.go')
-rw-r--r--internal/rpn/stack.go68
1 files changed, 0 insertions, 68 deletions
diff --git a/internal/rpn/stack.go b/internal/rpn/stack.go
deleted file mode 100644
index a956902..0000000
--- a/internal/rpn/stack.go
+++ /dev/null
@@ -1,68 +0,0 @@
-// SPDX-License-Identifier: MIT
-// Copyright (c) 2026 Paul Buetow
-
-package rpn
-
-import (
- "fmt"
-)
-
-// StackOperations provides stack manipulation operator implementations.
-type StackOperations struct {
-}
-
-// NewStackOperations creates a new StackOperations instance.
-func NewStackOperations() *StackOperations {
- return &StackOperations{}
-}
-
-// Dup duplicates the top stack value.
-func (o *StackOperations) Dup(stack *Stack) error {
- val, err := stack.Peek()
- if err != nil {
- return fmt.Errorf("insufficient operands for dup: %w", err)
- }
- stack.Push(val)
- return nil
-}
-
-// Swap swaps the top two stack values.
-func (o *StackOperations) Swap(stack *Stack) error {
- b, err := stack.Pop()
- if err != nil {
- return fmt.Errorf("insufficient operands for swap: %w", err)
- }
-
- a, err := stack.Pop()
- if err != nil {
- return fmt.Errorf("insufficient operands for swap: %w", err)
- }
-
- // Push in swapped order
- stack.Push(b)
- stack.Push(a)
- return nil
-}
-
-// Pop removes the top stack value.
-func (o *StackOperations) Pop(stack *Stack) error {
- _, err := stack.Pop()
- if err != nil {
- return fmt.Errorf("insufficient operands for pop: %w", err)
- }
- return nil
-}
-
-// Show returns the current stack state as a string without modifying it.
-func (o *StackOperations) Show(stack *Stack) (string, error) {
- if stack.Len() == 0 {
- return "", fmt.Errorf("empty stack")
- }
- // For now, just return the top value as a string
- // In a full implementation, this would show the entire stack
- val, err := stack.Peek()
- if err != nil {
- return "", err
- }
- return val.String(), nil
-}