开始写代码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 ");
}

 

 

开始写代码STEP_5

%{#include "attr_type.h"#include "token_type.h"#include "memory.h"#include "symtab.h"extern int Sour...
  • Last_Impression
  • Last_Impression
  • 2007年10月17日 09:07
  • 768

开始写代码了

进实验室都快一周了。这个项目也开始写代码了。昨天晚上写完了 漏洞报告的解析。今天开始写win下面的代理。...
  • zzm7000
  • zzm7000
  • 2006年03月21日 19:00
  • 883

开始写代码,STEP_1

#include "Vector.h"void Vector_Initialize(Vector* this)...{    this->count = 0;}void add(Vector* thi...
  • Last_Impression
  • Last_Impression
  • 2007年09月21日 15:11
  • 651

开始写代码STEP_4

  #ifndef _DECLARATION_H#define _DECLARATION_H#include "Vector.h"#include stdio.h>#include "Stmt.h"#...
  • Last_Impression
  • Last_Impression
  • 2007年09月29日 11:24
  • 601

开始写代码 STEP_2

#include "PrimaryExpression.h"static const CPrimaryExpression_VMT vmt = ...{ CPrimaryExpression_Gene...
  • Last_Impression
  • Last_Impression
  • 2007年09月27日 13:55
  • 584

开始写代码STEP_6

%{#include #include #include "attr_type.h"#include "token_type.h"#include "vhdlparser.tab.h"/* VHDLソ...
  • Last_Impression
  • Last_Impression
  • 2007年10月17日 09:09
  • 566

开始潜心写代码

        大一,大二已经过了。现在大三又是学习的时候了,少参加一些活动。把精力集中在基础的学习上吧,C专家编程,C编程语言,C陷阱与缺陷,数据结构,设计模式。 ...
  • hejia12
  • hejia12
  • 2007年11月09日 20:11
  • 155

第一次用需求思路步骤的方式写代码,记录下,我的一个新的起点,思维又一次转变

/* 需求:某个公司采用公用电话传递数据信息,数据是小于8位的整数, 为了确保安全,在传递过程中需要加密,加密规则如下: 首先将数据倒序,然后将每位数字都加上5,再用和除以10的余数代替该数字, 最后...
  • u013357243
  • u013357243
  • 2014年02月17日 13:25
  • 1217

MFC的代码是从哪里开始的?

                   Win32程序是从WinMain开始执行的,但是MFC把WinMain给封装了,不会出现在你的代码里面,他已经编译到mfc80.dll了(VS2005)了。...
  • u010408141
  • u010408141
  • 2014年02月27日 15:28
  • 902

第一篇博客——从《第一行代码》学习笔记开始

第一篇博客——从《第一行代码》学习笔记开始。这是我人生的第一次写博客的体验,感觉有些兴奋。因为最近在自学Android开发,看到刚哥的“Android学习路线指南”,让我觉得写博客是一种很有效的学习方...
  • In_Change
  • In_Change
  • 2017年05月02日 15:40
  • 242
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:开始写代码STEP_3
举报原因:
原因补充:

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