Moved sls_py.calc
This commit is contained in:
parent
56dcf72241
commit
36dad7e5e8
|
|
@ -6,7 +6,13 @@ Implements classic HP calculator interface with stack display
|
|||
|
||||
import tkinter as tk
|
||||
from tkinter import ttk, font as tkfont
|
||||
import sls_py
|
||||
from .. import (
|
||||
InterpreterState,
|
||||
LexerInfo,
|
||||
lexical_analysis,
|
||||
TokenType,
|
||||
StackType,
|
||||
)
|
||||
|
||||
class SlsCalculator:
|
||||
def __init__(self, root):
|
||||
|
|
@ -16,8 +22,8 @@ class SlsCalculator:
|
|||
self.root.resizable(False, False)
|
||||
|
||||
# Initialize interpreter
|
||||
self.interp = sls_py.InterpreterState()
|
||||
self.lexer = sls_py.LexerInfo()
|
||||
self.interp = InterpreterState()
|
||||
self.lexer = LexerInfo()
|
||||
|
||||
# Current entry buffer
|
||||
self.entry_buffer = ""
|
||||
|
|
@ -199,10 +205,10 @@ class SlsCalculator:
|
|||
self.lexer.column = 1
|
||||
self.lexer.line = 1
|
||||
|
||||
tokens = sls_py.lexical_analysis(self.lexer)
|
||||
tokens = lexical_analysis(self.lexer)
|
||||
|
||||
for token in tokens:
|
||||
if token.type == sls_py.TokenType.EOF:
|
||||
if token.type == TokenType.EOF:
|
||||
break
|
||||
if not self.interp.execute(token):
|
||||
print(f"Error executing: {code}")
|
||||
|
|
@ -235,9 +241,9 @@ class SlsCalculator:
|
|||
|
||||
def format_stack_entry(self, entry):
|
||||
"""Format a stack entry for display"""
|
||||
if entry.type == sls_py.StackType.I64:
|
||||
if entry.type == StackType.I64:
|
||||
return str(entry.value)
|
||||
elif entry.type == sls_py.StackType.DOUBLE:
|
||||
elif entry.type == StackType.DOUBLE:
|
||||
val = entry.value
|
||||
# Format with appropriate precision
|
||||
if abs(val) < 1e-10 and val != 0:
|
||||
|
|
@ -246,7 +252,7 @@ class SlsCalculator:
|
|||
return f"{val:.6e}"
|
||||
else:
|
||||
return f"{val:.10g}"
|
||||
elif entry.type == sls_py.StackType.BOOLEAN:
|
||||
elif entry.type == StackType.BOOLEAN:
|
||||
return str(entry.value)
|
||||
else:
|
||||
return str(entry.value)
|
||||
Loading…
Reference in New Issue