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

.Net的异步机制(异步Stream读/写) - step 4

在前面3篇文章,我已经介绍了异步的工作原理和相关方法和参数的应用.下面我们介绍Stream流的操作, 并使用System.IO.FileStream来揭开如何开发异步的Stream(System.IO...
  • Ts_Coo
  • Ts_Coo
  • 2012年08月11日 21:15
  • 954

python从零开始写爬虫(4)-- 整合代码

把前面代码整合下,抽取出到方法里,一只新浪新闻爬虫需要代码如下: import requests from bs4 import BeautifulSoup import re import json...

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

第4章 Action Bar Action Bar是一个能用于确定应用程序和用户的位置,并提供给用户操作和导航模式的窗口功能。如果需要显著地展示当前用户的操作或导航,应该使用Action Bar,因...

LDA主题模型学习笔记4:求解模型参数(M-step)

这一步,我们根据E-step得到的γ,phi\gamma,phi,最大化L(γ,ϕ;α,β)L(\gamma,\phi;\alpha,\beta),得到α,β\alpha,\beta.1,拉格朗日乘数...

kubernetes1.4 基础篇:Learn Kubernetes 1.4 by 6 steps(5):Step 4. Expose Your App Publicly

在上一篇文章中我们了解了如何在kubectl get/describe等确认进一步的信息以进行故障排除等,本文我们将围绕kubernetes中的lable和service两个概念展开。...

step4-多线程开发

C# 多线程开发 1:使用 Thread 类创建与启动线程 三五月儿 于 星期日, 08/12/2013 - 23:40 提交 C#中,可以使用Thread类来处理(包含创建,启...

WorkFlow入门Step.4—Adding Procedural Elements-For-WF4.0-(续)

开篇上篇,我们简单的说明了WF的入门,那么院子里面已经有很多的高手,写了不少的关于工作流的应用,最近在集成工作流平台的过程中也是发现了不少的问题和心得体会,工作流果真不只是审批那么简单,复杂度可见非常...

KMThreadPool: 6 – Thread Pool Step 4:How to Use

6 – Thread Pool Step 4:How to Use This is just a quick overview onwhat you need to do to use the th...

嵌入式Linux启动过程分析4-u-boot-1step-start.S

/* * armboot - Startup Code for ARM920 CPU-core * * Copyright (c) 2001 Marius Gröger * Copyr...

MyFlag Step4:APP的详细设计和界面设计

引言本周第二阶段的主要任如下:用户详细设计的进行 服务器端详细设计的进行 用户界面设计的详细进行 对我我的主要任务,主要是针对部分构建好的界面进行测试数据的填充用户界面设计这一阶段主要针对以下三个界面...
  • DearMa
  • DearMa
  • 2017年05月15日 00:08
  • 150
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:开始写代码STEP_4
举报原因:
原因补充:

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