from typing import List, Dict, Any, Optional from dataclasses import dataclass, asdict @dataclass class Token: type: str value: Any @dataclass class Operation: function: str type: str value: Any @dataclass class StackItem: type: str value: Any @dataclass class RuntimeError: message: str @dataclass class TestCase: name: str code: str tokens: List[Dict[str, Any]] operations: Optional[List[Dict[str, Any]]] = None stack_final: Optional[List[Dict[str, Any]]] = None runtime_error: Optional[Dict[str, str]] = None def to_dict(obj): """Convert dataclass to dict, removing None values.""" if obj is None: return None d = asdict(obj) if hasattr(obj, '__dataclass_fields__') else obj return {k: v for k, v in d.items() if v is not None}