using System.Collections.Generic;
public static void Main()
var list = Tokenize("15 20 + 32 5 - *");
var stack = new Stack<Token>();
for (var i = 0; i < list.Count; i++)
Token n3 = new Token(n2.data + n1.data);
Token n3 = new Token(n2.data - n1.data);
Token n3 = new Token(n2.data * n1.data);
Token n3 = new Token(n2.data / n1.data);
Console.WriteLine(stack.Pop());
public static List<Token> Tokenize(string str) => str.Split(' ').Select(token => int.TryParse(token, out int num) ? new Token { kind = Token.Kind.Num, data = num } : new Token(token)).ToList();
public enum Kind { Num, Add, Sub, Mul, Div }
case "+": kind = Kind.Add; break;
case "-": kind = Kind.Sub; break;
case "*": kind = Kind.Mul; break;
case "/": kind = Kind.Div; break;
default: throw new ArgumentException();
public override string ToString() => kind == Kind.Num ? data.ToString() : kind.ToString();