开始写代码STEP_3

原创 2007年09月28日 17:04:00
#ifndef STMT__H_
#define STMT__H_
#include 
<stdio.h>
#include 
"Vector.h"
#include 
"Expression.h"
#include 
"CodeRepo.h"

typedef 
struct Stmt_t CStmt;

typedef 
struct Stmt_VMT...{
    
void(*generate)(CStmt*, FILE*);
}
CStmt_VMT;

struct Stmt_t...{
    
const CStmt_VMT* vmt;
    
int srcLineNo;
}
;

extern void CStmt_Initialize(CStmt*,int);

extern void CStmt_Generate(CStmt*, FILE*);

#define Stmt_Generate(this,arg) 
           (((CStmt
*)this)->vmt->generate((CStmt*)(this),arg))
#endif

 

 

#include "Stmt.h"

static const CStmt_VMT vmt = ...{ CStmt_Generate };


void CStmt_Initialize(CStmt* this,int no)
...{
    ((CStmt
*)this)->vmt = (const CStmt_VMT*)&vmt;
    
this->srcLineNo = no;
}


void CStmt_Generate(CStmt *this, FILE* output)
...{
    
    
}

 

 

#include "IfStmt.h"

extern int subprog;

static const CIfStmt_VMT vmt = ...{CIfStmt_Generate};

void CIfStmt_Initialize(CIfStmt* this,int no,CExpression *cond, Vector* ifpart, Vector* elsepart)
...{
    CStmt_Initialize((CStmt
*)this, no);
    ((CStmt
*)(this))->vmt = (const CStmt_VMT*)&vmt;
    
this->ifpart = ifpart;
    
this->elspart = elsepart;
    
this->condition = cond;
}


void CIfStmt_Generate(CIfStmt* this, FILE* output)
...{
    
int i;
  
if(subprog)...{
    fprintf(output, 
"setCursor2 %d ", ((CStmt*)this)->srcLineNo - getRef(((CStmt*)this)->srcLineNo) + 1);
  }

  
else...{
    fprintf(output, 
"setCursor %d ", ((CStmt*)this)->srcLineNo - getRef(((CStmt*)this)->srcLineNo));
  }

    
    fprintf(output, 
"If ");
    
if(this->condition != NULL)...{
        Expression_Generate(
this->condition, output);
    }

      fprintf(output, 
" Then ");
      
    
if(this->ifpart != NULL)...{
        
for(i = 0; i < size(this->ifpart); i++)...{
              Stmt_Generate(elementAt(
this->ifpart, i), output);
        }

    }

    
    
if(this->elspart != NULL)...{
        fprintf(output, 
"Else ");

        
for(i = 0; i < size(this->elspart); i++)...{
            Stmt_Generate(elementAt(
this->elspart, i), output);
        }

    }


  fprintf(output, 
"End If ");
}

 

 

从零开始--系统深入学习android(实践-让我们开始写代码-Android框架学习-3. 菜单)

第3章 菜单 在许多不同类型的应用中,菜单通常是一种用户界面组件。为了提供给用户提供熟悉且一致的体验,你需要使用菜单API来展示用户动作和你Activity中的其他选项。 从安卓3.0系统(API...

LDA主题模型学习笔记3:变分推断(E-step)

上文《LDA主题模型学习笔记:求解隐变量和模型参数(EM思想)》中在E-step我们要用变分推断求解如下的优化问题: (γ∗,ϕ∗)=argmin(γ,ϕ)D(q(θ,z|γ,ϕ)||p(θ,z|w...

Unity学习笔记(3)-----制作一个仿真星系(复杂版)【Step1】

继续学习Unity3D  这周任务之一是要做一个太阳系,如下图: 而这次笔记的重点不在作业上~.~, 而是在于如何建立一个, 真正意义上的  “星系”。 上过课都知道, 作业简单用以下两条语句即可...

sqlite获取 sqlite3_step 结果中的某列的值

首先执行 sqlite3_prepare_v2 再执行 sqlite3_step 然后 -----------------------------------------------------...

css3关于 animation -timing- function step()介绍

最近在学习遇到了这个问题,有点不懂,所以在网上寻找此笔记,以备学习之用! CSS3的Animation有八个属性animation-name animation-duration animati...

step3-异步编程模式

异步编程模式 一.异步编程模式概述 1.异步编程模式使用场景及优点 使用场景:同时执行多项任务、但仍能响应用户交互的应用程序。 使用类:BackgroundWorker 优点: (1)“在后台”执行耗...

.Net的异步机制(APM核心:IAsyncResult) - step 3

在上一篇文章(什么是.Net的异步机制(Invoke,BeginInvoke,EndInvoke) - step 2 ), 我们已经简单介绍了异步的调用方式, 下面我们来看看异步的核心.  ...
  • Ts_Coo
  • Ts_Coo
  • 2012年08月11日 21:14
  • 624

MyFlag Step3: 界面设计初步

引言值得一提的是,经过几天的探讨与努力,我们的项目有了实质性的进展。这一周,我们小组首要讨论的大概有以下几点:用户端系统模块的划分 用户端详细设计的初步进行 接口文档的进一步确定 用户界面设计的进行 ...
  • DearMa
  • DearMa
  • 2017年05月14日 10:00
  • 318

atitit.验证码识别step3----去除边框---- 图像处理类库 attilax总结java版本

atitit.验证码识别step3----去除边框---- 图像处理类库 attilax总结java版本       1. 去除边框思路原理 1 2. Thumbnailator 是一个用来...
  • attilax
  • attilax
  • 2015年04月16日 12:39
  • 2065

深入理解CSS3 Animation 帧动画(step详解)

CSS3我在5年之前就有用了,包括公司项目都一直在很前沿的技术。 最近在写慕课网的七夕主题,用了大量的CSS3动画,但是真的沉淀下来仔细的去深入CSS3动画的各个属性发现还是很深的,这里就写下关...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:开始写代码STEP_3
举报原因:
原因补充:

(最多只允许输入30个字)