/* 生成虚拟机代码 */
  int gen(enum fct x, /* f */
      int y, /* l */
      int z /* a */
      )
  {
   if(cx>cxmax)
   {
    printf("Program too long"); /* 程序过长 */
    return -1;
   }
   code[cx].f=x;
   code[cx].l=y;
   code[cx].a=z;
   cx++;
   return 0;
  }


  int test(bool* s1, /* 当前符号应属于的集合 */
       bool* s2, /* 为恢复正常语法分析工作的符号集合 */
       int n) /* 错误号 */
  {

   if(!inset(sym,s1))
   {
    error(n);
   /* 当检测不通过时,不停获取符号,直到读入一个能使编译程序恢复正常语法分析工作的单词为止 */
    while((!inset(sym,s1))&&(!inset(sym,s2)))
    {
     getsymdo;
    }
   }
   return 0;
  }