import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;

public class makeup 
{
	static Scanner sc;
	static int number;
	static HashMap<String, String> map = new HashMap<String,String>();
	static int now;
	static ArrayList<String> s = new ArrayList<String>();
	static String delNotes(String str)
	{
		for(int i = 0; i + 1 < str.length(); i++)
		{
			if(str.charAt(i) == '/' && str.charAt(i + 1) == '/')
			{
				str = str.substring(0, i);
				break;
			}
		}
		return str;
	}
	static ArrayList<String> getNextLine(String str)
	{
		  ArrayList<String> s = new ArrayList<String>();
		  str = delNotes(str);
		  if(str.length() == 0) return s;
		  String[] tmp = str.split(" ");
		  
		  String addStr = null;
		  int flag = 0;
		  for(int i = 0; i < tmp.length; i++)
		  {
			  if(tmp[i].length() == 0) continue;
			  if(flag > 0)
			  {
				  addStr = addStr + " " + tmp[i];
			  }
			  else
			  {
				  addStr = tmp[i];
			  }
			  for(int j = 0; j < tmp[i].length(); j++)
			  {
				  if(tmp[i].charAt(j) == '[') flag++;
				  if(tmp[i].charAt(j) == ']') flag--;
			  }
			  if(flag == 0)
			  {
				  s.add(addStr);
			  }
		  }
		  
		  if(flag > 0)
		  {
			  System.out.println("您的list括号匹配有错在" + number + "行");
			  System.exit(0);
		  }
		  return s;
	}
	//判断字符串是不是数字
	static boolean isDouble(String str)
	{
	   try
	   {
	      Double.parseDouble(str);
	      return true;
	   }
	   catch(NumberFormatException ex){}
	   return false;
	}
	static String getValue(int x)
	{
		if(x == s.size())
		{
			if(sc.hasNextLine())
			{
				String str = null;
				number++;
				str = sc.nextLine();
				ArrayList<String> tmp = new ArrayList<String>();
				tmp = getNextLine(str);
				for(String i : tmp)
				{
					s.add(i);
				}
			}
			else
			{
				System.out.println("您的语句输入不完整在" + number + "行");
				System.exit(0);
			}
		}
		String w = s.get(x);
		now ++;
		if(w.equals("make"))
		{
			String tmp1 = getValue(now);
			if(tmp1.charAt(0) != '"')
			{
				System.out.println("您的语句" + number + "行，" + w + "的参数必须是一个word");
				System.exit(0);
			}
			String tmp2 = getValue(now);
			map.put(tmp1, tmp2);
		}
		else if(w.equals("thing"))
		{
			String tmp = getValue(now);
			if(tmp.charAt(0) != '"')
			{
				System.out.println("您的语句" + number + "行，" + w + "的参数必须是一个word");
				System.exit(0);
			}
			if(map.get(tmp) == null)
			{
				System.out.println("您的语句" + number + "行，" + w + "的参数不能是一个没有使用过的word");
				System.exit(0);
			}
			String re = map.get(tmp);
			return re;
		}
		else if(w.equals("erase"))
		{
			String tmp = getValue(now);
			if(tmp.charAt(0) != '"')
			{
				System.out.println("您的语句" + number + "行，" + w + "的参数必须是一个word");
				System.exit(0);
			}
			if(map.get(tmp) == null)
			{
				System.out.println("您的语句" + number + "行，" + w + "的参数必须是一个没有使用过的word");
				System.exit(0);
			}
			map.remove(tmp);
		}
		else if(w.equals("isname"))
		{
			String tmp = getValue(now);
			if(tmp.charAt(0) != '"')
			{
				System.out.println("您的语句" + number + "行，" + w + "的参数必须是一个word");
				System.exit(0);
			}
			if(map.get(tmp) == null)
			{
				return "false";
			}
			else return "true";
		}
		else if(w.equals("print"))
		{
			String tmp = getValue(now);
			if(tmp.charAt(0) == '"')
			{
				System.out.println(tmp.substring(1,tmp.length()));
			}
			else System.out.println(tmp);
		}
		else if(w.equals("read"))
		{
			String tmp = getValue(now);
			
			if(isDouble(tmp) == false)
			{
				System.out.println("您的语句输入在" + number + "行有表达式错误");
				System.exit(0);
			}
			
			return tmp;
		}
		else if(w.equals("readlinst"))
		{
			if(x + 1 != s.size())
			{
				System.out.println("您的readlinst不能在" + number + "行的中间");
				System.exit(0);
			}
			if(sc.hasNextLine())
			{
				number++;
				String str = null;
				str = sc.nextLine();
				return "[" + str + "]";
			}
			else
			{
				System.out.println("您的语句输入不完整在" + number + "行");
				System.exit(0);
			}
		}
		else if(w.equals("add"))
		{
			String tmp1 = getValue(now);
			String tmp2 = getValue(now);

			double a1,a2;
			
			if(isDouble(tmp1) == false)
			{
				System.out.println("您的语句输入在" + number + "行的" + w + "处有错误");
				System.exit(0);
			}
			
			if(isDouble(tmp2) == false)
			{
				System.out.println("您的语句输入在" + number + "行的" + w + "处有错误");
				System.exit(0);
			}
			
			a1 = Double.parseDouble(tmp1);
			a2 = Double.parseDouble(tmp2);
			
			a1 = a1 + a2;
			
			return Double.toString(a1);
		}
		else if(w.equals("sub"))
		{
			String tmp1 = getValue(now);
			String tmp2 = getValue(now);

			double a1,a2;
			
			if(isDouble(tmp1) == false)
			{
				System.out.println("您的语句输入在" + number + "行的" + w + "处有错误");
				System.exit(0);
			}
			
			if(isDouble(tmp2) == false)
			{
				System.out.println("您的语句输入在" + number + "行的" + w + "处有错误");
				System.exit(0);
			}
			
			a1 = Double.parseDouble(tmp1);
			a2 = Double.parseDouble(tmp2);
			
			a1 = a1 - a2;
			
			return Double.toString(a1);
		}
		else if(w.equals("mul"))
		{
			String tmp1 = getValue(now);
			String tmp2 = getValue(now);

			double a1,a2;
			
			if(isDouble(tmp1) == false)
			{
				System.out.println("您的语句输入在" + number + "行的" + w + "处有错误");
				System.exit(0);
			}
			
			if(isDouble(tmp2) == false)
			{
				System.out.println("您的语句输入在" + number + "行的" + w + "处有错误");
				System.exit(0);
			}
			
			a1 = Double.parseDouble(tmp1);
			a2 = Double.parseDouble(tmp2);
			
			a1 = a1 * a2;
			
			return Double.toString(a1);
		}
		else if(w.equals("div"))
		{
			String tmp1 = getValue(now);
			String tmp2 = getValue(now);

			double a1,a2;
			
			if(isDouble(tmp1) == false)
			{
				System.out.println("您的语句输入在" + number + "行的" + w + "处有错误");
				System.exit(0);
			}
			
			if(isDouble(tmp2) == false)
			{
				System.out.println("您的语句输入在" + number + "行的" + w + "处有错误");
				System.exit(0);
			}
			
			a1 = Double.parseDouble(tmp1);
			a2 = Double.parseDouble(tmp2);
			
			a1 = a1 / a2;
			
			return Double.toString(a1);
		}
		else if(w.equals("mod"))
		{
			String tmp1 = getValue(now);
			String tmp2 = getValue(now);

			int a1,a2;
			
			if(isDouble(tmp1) == false)
			{
				System.out.println("您的语句输入在" + number + "行的" + w + "处有错误");
				System.exit(0);
			}
			
			if(isDouble(tmp2) == false)
			{
				System.out.println("您的语句输入在" + number + "行的" + w + "处有错误");
				System.exit(0);
			}
			
			a1 = (int)Double.parseDouble(tmp1);
			a2 = (int)Double.parseDouble(tmp2);
			
			a1 = a1 % a2;
			
			return Double.toString((double)a1);
		}
		else if(w.equals("eq"))
		{
			String tmp1 = getValue(now);
			String tmp2 = getValue(now);
			if(tmp1.equals(tmp2)) return "true";
			else return "false";
		}
		else if(w.equals("gt"))
		{
			String tmp1 = getValue(now);
			String tmp2 = getValue(now);
			
			if(tmp1.compareTo(tmp2) > 0) return "true";
			else return "false";
		}
		else if(w.equals("lt"))
		{
			String tmp1 = getValue(now);
			String tmp2 = getValue(now);
			
			if(tmp1.compareTo(tmp2) < 0) return "true";
			else return "false";
		}
		else if(w.equals("and"))
		{
			String tmp1 = getValue(now);
			String tmp2 = getValue(now);
			boolean a1 = false,a2 = false;
			if(tmp1.equals("false")) a1 = false;
			else if(tmp1.equals("true")) a1 = true;
			else
			{
				System.out.println("您的语句输入在" + number + "行的" + w + "处有错误");
				System.exit(0);
			}
			if(tmp2.equals("false")) a2 = false;
			else if(tmp2.equals("true")) a2 = true;
			else
			{
				System.out.println("您的语句输入在" + number + "行的" + w + "处有错误");
				System.exit(0);
			}
			a1 = a1&a2;
			if(a1 == false) tmp1 = "false";
			else tmp1 = "true";
			return tmp1;
		}
		else if(w.equals("or"))
		{
			String tmp1 = getValue(now);
			String tmp2 = getValue(now);
			boolean a1 = false,a2 = false;
			if(tmp1.equals("false")) a1 = false;
			else if(tmp1.equals("true")) a1 = true;
			else
			{
				System.out.println("您的语句输入在" + number + "行的" + w + "处有错误");
				System.exit(0);
			}
			if(tmp2.equals("false")) a2 = false;
			else if(tmp2.equals("true")) a2 = true;
			else
			{
				System.out.println("您的语句输入在" + number + "行的" + w + "处有错误");
				System.exit(0);
			}
			a1 = a1|a2;
			if(a1 == false) tmp1 = "false";
			else tmp1 = "true";
			return tmp1;
		}
		else if(w.equals("not"))
		{
			String tmp = getValue(now);
			if(tmp.equals("false")) return "true";
			if(tmp.equals("true")) return "false";
			System.out.println("您的语句输入在" + number + "行的" + w + "处有错误");
			System.exit(0);
		}
		else if(w.equals("false") || w.equals("true"))
		{
			return w;
		}
		else if(w.charAt(0)=='"')
		{
			String tmp = w.substring(1, w.length());
			if(tmp.equals("make") || tmp.equals("thing") || tmp.equals("erase") || 
			   tmp.equals("erase") || tmp.equals("isname") || tmp.equals("print") ||
			   tmp.equals("read") || tmp.equals("readlinst") || tmp.equals("add") ||
			   tmp.equals("sub") || tmp.equals("mul") || tmp.equals("div") || 
			   tmp.equals("mod") || tmp.equals("eq") || tmp.equals("gt") ||
			   tmp.equals("lt") || tmp.equals("and") || tmp.equals("or") ||
			   tmp.equals("not"))
			{
				System.out.println("您的语句输入在" + number + "行word不能等于基本单词");
				System.exit(0);
			}
			return w;
		}
		else if(w.charAt(0)==':')
		{
			StringBuilder strBuilder = new StringBuilder(w);
			strBuilder.setCharAt(0, '"');
			String tmp = strBuilder.toString();
			
			if(map.get(tmp) == null)
			{
				System.out.println("您的语句" + number + "行，" + w + "的参数必须是一个没有使用过的word");
				System.exit(0);
			}
			String re = map.get(tmp);
			return re;
		}
		else if(w.charAt(0) == '[' && w.charAt(w.length() - 1) == ']')
		{
			return w;
		}
		else if(x - 1 < 0 || !s.get(x - 1).equals("read"))
		{
			String tmp = w;
			
			if(isDouble(tmp) == false)
			{
				System.out.println("您的语句输入在" + number + "行有表达式错误");
				System.exit(0);
			}
			
			return w;
		}
		else return w;
		if(now != s.size()) return getValue(now);
		return "";
	}
	public static void main(String[] args) 
	{	  
		  //创建输入对象
		  sc=new Scanner(System.in);
		  number = 0;
		  while(sc.hasNextLine())
		  {
			  String str = null;
			  str = sc.nextLine();
			  number++;
			  ArrayList<String> tmp = new ArrayList<String>();
			  for(int i = now; i < s.size(); i++)
			  {
				  String w = s.get(i);
				  tmp.add(w);
			  }
			  ArrayList<String> tmp2 = new ArrayList<String>();
			  tmp2 = getNextLine(str);
			  for(int i = 0; i < tmp2.size(); i++)
			  {
				  tmp.add(tmp2.get(i));
			  }
			  s = tmp;
			  now = 0;
			  String ans = getValue(0);
			  if(ans.length() == 0)
			  {
				  continue;
			  }
			  while(ans.charAt(0)=='[' && ans.charAt(ans.length() - 1) == ']')
			  {
				  if(ans.charAt(1)=='[' && ans.charAt(ans.length() - 2) == ']') break;
				  str = ans.substring(1, ans.length() - 1);
				  tmp = getNextLine(str);
				  for(int i = now; i < s.size(); i++)
				  {
					  String w = s.get(i);
					  tmp.add(w);
				  }
				  s = tmp;
				  now = 0;
				  ans = getValue(0);
				  if(ans.length() == 0) break;
			  }
		  }
		  sc.close();
	}
}