def postfix_value(tokens):
tokens = tuple(tokens)
if not 1 <= len(tokens) <= 100:
raise ValueError("tokens.limit")
stack = []
for token in tokens:
if type(token) is int and abs(token) <= 1000000000:
stack.append(token)
continue
if type(token) is not str or token not in ("+", "-", "*", "//") or len(stack) < 2:
raise ValueError("token.invalid")
right, left = stack.pop(), stack.pop()
if token == "//" and right == 0:
raise ValueError("division.zero")
value = (left + right if token == "+" else left - right if token == "-" else left * right if token == "*" else left // right)
if abs(value) > 10**18:
raise ValueError("result.range")
stack.append(value)
if len(stack) != 1:
raise ValueError("stack.remainder")
return stack[0]- 프로젝트
- 음수 나눗셈의 내림을 확인하고 0으로 나누기, 불완전한 스택, 절댓값이 10**18을 넘는 중간 결과를 거부합니다.
- 적용하기 전에 검토하세요
- 실제 동작을 예상 결과와 비교하세요. 검사가 실패하면 다음 변경을 하기 전에 원인을 조사하세요.
- 모델
- 기본 URL과 필요한 API 키로 OpenAI 호환 또는 Anthropic 엔드포인트를 설정하고 연결을 테스트하세요. 로컬 모델 서버는 실행 중이어야 합니다. 원격 도구는 데이터를 별도로 전송할 수 있습니다.
def postfix_value(tokens):
tokens = tuple(tokens)
if not 1 <= len(tokens) <= 100:
raise ValueError("tokens.limit")
stack = []
for token in tokens:
if type(token) is int and abs(token) <= 1000000000:
stack.append(token)
continue
if type(token) is not str or token not in ("+", "-", "*", "//") or len(stack) < 2:
raise ValueError("token.invalid")
right, left = stack.pop(), stack.pop()
if token == "//" and right == 0:
raise ValueError("division.zero")
value = (left + right if token == "+" else left - right if token == "-" else left * right if token == "*" else left // right)
if abs(value) > 10**18:
raise ValueError("result.range")
stack.append(value)
if len(stack) != 1:
raise ValueError("stack.remainder")
return stack[0]파서를 바꾸기 전에 표현식이 할 수 있는 일을 정의하세요
언어가 작아도 표현식 처리에는 명확한 경계가 필요합니다. StackSundial은 소스 파일 옆에서 그 경계를 논의하는 Windows AI 코딩 작업 공간입니다. 프로젝트를 열고 연결된 모델에게 구현 변경을 제안하기 전에 허용 토큰, 평가 규칙, 호출자의 오류 처리를 살펴보도록 요청하세요.
가능한 작업은 내부 계산 화면에 쓰이는 후위식 평가기의 검토입니다. 허용 연산자, 수치 한도, 잘못된 표현식에 대한 응답을 지정하세요. 도우미에게 요구사항을 어디서 강제하는지 파악하고 누락된 곳에 한정된 변경을 제안하도록 요청하세요. 이렇게 하면 대화가 또 다른 평가기 생성에 그치지 않고 소프트웨어 유지보수에 집중됩니다.
성공하는 산술과 같은 주의로 거부 경로를 검토하세요. 피연산자 누락, 여분의 결과, 0으로 나누기, 허용 범위 밖의 값에 대한 프로젝트 검사를 실행하세요. 교환법칙이 성립하지 않는 연산의 피연산자 순서를 살펴보고 호출자가 의도한 오류를 받는지 확인하세요. 평가 반복문이 짧아져도 주변 계약을 약화한다면 수락하지 마세요.
StackSundial은 OpenAI 호환 또는 Anthropic 엔드포인트 연결을 지원합니다. 제공되는 경우 어블리터레이션 AI 모델을 선택하되 제한, 컨텍스트 한도, 도구는 선택한 서비스에 따라 달라짐을 이해하세요. 제안 코드는 검토와 자체 검증의 출발점이며 인터프리터가 준비되었다는 증거는 아닙니다.
평가기 패치를 수락하기 전에
- 작업 설명에 어떤 규칙을 포함해야 하나요?
허용 토큰, 피연산자 자료형, 수치 한도, 오류 동작을 명시하세요. 사용자에게 실패를 보여주는 호출자도 포함하세요. 규칙이 없으면 일반 예제를 올바르게 계산하면서도 애플리케이션이 거부해야 할 표현식을 허용하는 제안이 나올 수 있습니다.
- 뺄셈과 나눗셈을 명시적으로 테스트하는 이유는 무엇인가요?
일반적인 덧셈과 달리 결과가 피연산자 순서에 따라 달라집니다. 순서를 뒤집으면 결과가 뚜렷하게 달라지는 테스트 사례를 사용하세요. 0인 제수에 대한 응답뿐 아니라 프로젝트에 필요한 나눗셈 규약도 확인하세요.
- 잘못된 표현식은 0을 반환해야 하나요?
명시적인 애플리케이션 요구사항일 때만 그렇습니다. 그럴듯한 숫자 대체값은 잘못된 입력을 숨길 수 있습니다. 도우미에게 명확한 거부 경로를 유지하도록 요청하고 호출자가 유효한 0 결과와 오류를 어떻게 구분하는지 살펴보세요.
- 토큰 한도만으로 평가를 제한할 수 있나요?
중간값과 허용 입력 구조를 포함한 프로젝트의 모든 한도를 검토하세요. 토큰 수는 계약의 한 부분만 다룹니다. 평가 반복문을 바꾼 뒤 관련 거부 경로를 테스트하세요.
StackSundial · 업데이트 2026-10-25