K&R C Bible《C Programming Language》中采用reverse Polish notation思想的计算器代码:
calc.h
#define NUMBER '0'
void push(double);
double pop(void);
int getop(char []);
int getch(void);
void ungetch(int);
……………………………………………………………………………………………………………………………………………………………………………………………………………
main.c
#include<stdio.h>
#include<stdlib.h> /*for atof() */
#define MAXOP 100 /* max size of operand or operator*/
#define NUMBER '0' /*signal that a number was found*/
int getop(char []);
void push(double);
double pop(void);
/*reverse Polish calculator*/
main()
{
int type;
double op2;
char s[MAXOP];
while((type = getop(s))!= EOF){
switch(type){
case NUMBER:
push(atof(s));
break;
case '+':
push(pop() &#