⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 symtab.cpp

📁 一个自定义简单脚本引擎的实现代码
💻 CPP
字号:
#include <stdio.h>
#include <string.h>
#include "symtab.h"

SymDesc::SymDesc (char *_name, SymType _type, char *_cont, int _line)    {
   name = _name; type = _type;
   cont = _cont; line = _line;
   next = NULL;
}

SymDesc::~SymDesc ()  {
   if (this == NULL)   return;
   if (name != NULL)   delete [] name;
   if (cont != NULL)   delete [] cont;
   if (next != NULL)   delete next;
}

void SymDesc::Show ()   {
   if (type == STR_CONST)
      printf ("| %-20s | %4d | (= \"%s\")\n", name, line, cont);
   else
      printf ("| %-20s | %4d |\n", name, line);
}

SymTab::SymTab()   {
   start = NULL; current = NULL;
}

SymTab::~SymTab()   {
   delete start;
}

bool SymTab::Add (SymDesc *symb)  {
   if (Find (symb->name) != NULL)
      return false;
   if (start == NULL)
      start = symb;
   else  {
      SymDesc *search = start;
      while (search->next != NULL)
         search = search->next;
      search->next = symb;
   }
   return true;
}

SymDesc *SymTab::Find (char *name)   {
   SymDesc *search = start;
   while (search != NULL && strcmp (search->name, name) != 0)
      search = search->next;
   return search;
}

void SymTab::Show ()  {
   SymDesc *search = start;
   puts ("+----------------------+------+");
   puts ("| Name                 | Line |");
   puts ("+----------------------+------+");
   while (search != NULL)  {
      search->Show ();
      search = search->next;
   }
   puts ("+----------------------+------+");
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -