开始写代码STEP_4

原创 2007年09月29日 11:24:00

 

 

#ifndef _DECLARATION_H
#define _DECLARATION_H
#include 
"Vector.h"
#include 
<stdio.h>
#include 
"Stmt.h"
#include 
"Port.h"

typedef 
struct Declaration_t CDeclaration;

typedef 
struct Declaration_VMT...{
  
void (*generate)(CDeclaration*, FILE*);
}
CDeclaration_VMT;

struct Declaration_t...{
  
const CDeclaration_VMT *vmt;
  
int srcLineNoBegin;
  
int srcLineNoEnd;
}
;

extern void CDeclaration_Initialize(CDeclaration*intint);

extern void CDeclaration_Generate(CDeclaration*, FILE*);

#define Declaration_Generate(this,arg1)
  (((CDeclaration
*)(this))->vmt->generate((CDeclaration*)(this),arg1))

#endif

 

#include "Declaration.h"

static const CDeclaration_VMT vmt = ...{ CDeclaration_Generate };

void CDeclaration_Initialize(CDeclaration *thisint no1, int no2)
...{
  ((CDeclaration
*)this)->vmt = (const CDeclaration_VMT*)&vmt;

  
this->srcLineNoBegin = no1;
  
this->srcLineNoEnd = no2;
}


void CDeclaration_Generate(CDeclaration *this, FILE *output)
...{
#ifdef DEBUG
  fprintf(output, 
"CDeclaration_Generate ");
#endif
}

 

 

#ifndef _VARIABLE_DECL_H
#define _VARIABLE_DECL_H
#include 
"Expression.h"
#include 
"Declaration.h"

typedef 
struct VariableDecl_t CVariableDecl;

typedef 
struct VariableDecl_VMT...{
  
void (*generate)(CVariableDecl*, FILE*);
}
CVariableDecl_VMT;

struct VariableDecl_t...{
  CDeclaration super;
  
char *name;
  CExpression 
*constraint;
  
char *type;
}
;

extern void CVariableDecl_Initialize(CVariableDecl*char*, CExpression*char*intint);

extern void CVariableDecl_Generate(CVariableDecl*, FILE*);

#endif
#include <string.h>
#include 
"VariableDecl.h"

static const CVariableDecl_VMT vmt = ...{ CVariableDecl_Generate };

void CVariableDecl_Initialize(CVariableDecl *thischar *name, CExpression *constraint, char *type, int no1, int no2)
...{
  CDeclaration_Initialize((CDeclaration
*)this, no1, no2);
  ((CDeclaration
*)this)->vmt = (const CDeclaration_VMT*)&vmt;

  
this->name = name;
  
this->constraint = constraint;
  
this->type = type;
}


void CVariableDecl_Generate(CVariableDecl *this, FILE *output)
...{

  fprintf(output, 
"Dim %s"this->name);

  
if(this->constraint != 0)...{
    Expression_Generate(
this->constraint, output);
  }

  
  
if(!strncmp(this->type, "string"6))...{
    fprintf(output, 
" As String ");
  }
else if(!strncmp(this->type, "integer"7))...{
    fprintf(output, 
" As Long ");
  }
else...{
    fprintf(output, 
" As %s "this->type);
  }

}

 

 

#ifndef _FUNCTION_DECL_H
#define _FUNCTION_DECL_H
#include 
"Declaration.h"

typedef 
struct FunctionDecl_t CFunctionDecl;

typedef 
struct FunctionDecl_VMT...{
  
void (*generate)(CFunctionDecl*, FILE*);
}
CFunctionDecl_VMT;

struct FunctionDecl_t...{
  CDeclaration super;
  Vector 
*decls;
  
char *name;
  Vector 
*args;
  
char *retType;
  Vector 
*stmts;
}
;

extern void CFunctionDecl_Initialize(CFunctionDecl*char*, Vector*, Vector*char*, Vector*intint);

extern void CFunctionDecl_Generate(CFunctionDecl*, FILE*);

#endif
#include "FunctionDecl.h"

static const CFunctionDecl_VMT vmt = ...{ CFunctionDecl_Generate };

void CFunctionDecl_Initialize(CFunctionDecl *thischar *name, Vector *decls, Vector* args, char *retType, Vector *stmts, int no1, int no2)...{
  CDeclaration_Initialize((CDeclaration
*)this, no1, no2);
  ((CDeclaration
*)this)->vmt = (const CDeclaration_VMT*)&vmt;

  
this->decls = decls;
  
this->name = name;
  
this->args = args;
  
this->retType = retType;
  
this->stmts = stmts;
}


void CFunctionDecl_Generate(CFunctionDecl *this, FILE *output)...{
  
int i, j;
  CDeclaration 
*decl = (CDeclaration*)this;
  
  fprintf(output, 
"Function %s("this->name);

  
if(this->args != 0)...{
    
for(i = 0; i < size(this->args); i++)...{
      CPort 
*port = elementAt(this->args, i);
      Port_Generate(port, output);
      
if(i < size(this->args) - 1)...{
        fprintf(output, 
",");
      }

    }

  }


  fprintf(output, 
") As %s "this->retType);

  fprintf(output, 
"Dim s_(%d) as String ", decl->srcLineNoEnd - decl->srcLineNoBegin + 1);
  
for(i = decl->srcLineNoBegin - 1, j = 0; i < decl->srcLineNoEnd; i++, j++)...{
    fprintf(output, 
"s_(%3d) = "%3d:%s" ", j, i + 1, getLineAt(i));
  }

  fprintf(output, 
"LoadSrc2 s_ "this->name);  

  
  
if(this->decls != 0)...{
    
for(i = 0; i < size(this->decls); i++)...{
      Declaration_Generate(elementAt(
this->decls, i), output);
    }

  }


  fprintf(output, 
"Dim loop_count As Integer ");

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

  }


  fprintf(output, 
"End Function ");
}

开始写代码,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

开始写代码了

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

开始潜心写代码

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

开始写代码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

开始写代码 STEP_2

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

开始写代码STEP_3

#ifndef STMT__H_#define STMT__H_#include stdio.h>#include "Vector.h"#include "Expression.h"#include ...
  • Last_Impression
  • Last_Impression
  • 2007年09月28日 17:04
  • 559

开始写代码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
  • 767

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

/* 需求:某个公司采用公用电话传递数据信息,数据是小于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
  • 901

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

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

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