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

📄 unit2.pas

📁 演示表达式处理过程的源码
💻 PAS
字号:
unit Unit2;

interface
const
total_stack_size=50;
type
    stack=class
      data: array[1..total_stack_size] of integer;
      s_top: integer;
      procedure init;
      procedure push(a: integer);
      function pop: integer;
      function gettop: integer;
      function empty: boolean;
      function full: boolean;
    end;
    opnd=record
      a, b: integer;
      c   : string;
    end;
      //a: 编号;b:数据类型;c:写在串中的值
    optr=record
      a, b: integer;
      c: string;
      d1, d2, d3, dr: integer;
    end;
      //a: 编号; b: 参数个数; c: 什么运算符号;
      //d1, d2, d3: 三个参数的类型; dr: 返回值的类型;
    opnd_table=class
      data: array[1..100]of opnd;
      pointor: integer;
      procedure add(a, b: integer; c: string);
      //a: 编号;b:数据类型;c:写在串中的值
      function get_type(a: integer): integer;
      function get_value(a: integer): string;
      procedure init_table;
    end;
    optr_table=class
      data: array[1..50]of optr;
      function get_index(s: string): integer;
      procedure init;
      procedure get_parms(a, b, d1, d2, d3, dr: integer);
    end;
implementation

procedure stack.init;
begin
s_top:=0;
end;

procedure stack.push(a: integer);
begin
 if s_top<total_stack_size then
   begin
     s_top:=s_top+1;
     data[s_top]:=a;
   end;
end;

function stack.pop: integer;
begin
 if s_top>0 then
   begin
     pop:=data[s_top];
     s_top:=s_top-1;
   end;
end;

function stack.gettop: integer;
begin
 if s_top>0 then
   begin
    gettop:=data[s_top];
   end;

end;

function stack.empty: boolean;
begin
 empty:=false;
 if s_top=0 then empty:=true;

end;

function stack.full: boolean;
begin
 full:=false;
 if s_top=total_stack_size then full:=true;
end;

procedure opnd_table.add(a, b: integer; c: string);
begin
     if pointor<100 then begin
        pointor:=pointor+1;
        data[pointor].a:=a;
        data[pointor].b:=b;
        data[pointor].c:=c;
     end;
end;

procedure opnd_table.init_table;
begin
     pointor:=0;
end;

function opnd_table.get_type(a: integer): integer;
var
   i: integer;
begin
     get_type:=0;
     for i:=1 to pointor do begin
         if data[i].a=a then begin
            get_type:=data[i].b;
         end;
     end;
end;

function opnd_table.get_value(a: integer): string;
var
   i: integer;
begin
     get_value:='';
     for i:=1 to pointor do begin
         if data[i].a=a then begin
            get_value:=data[i].c;
         end;
     end;
end;

procedure optr_table.get_parms(a, b, d1, d2, d3, dr: integer);
begin
end;

procedure optr_table.init;
begin
end;

function optr_table.get_index(s: string): integer;
begin
end;


end.

⌨️ 快捷键说明

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