
//[2008.11.27.목][생성!!!]

#include "c_define.h"


struct ASMENCODEINFO
{
  //[2008.12.07.일][생성!!!]{-------------------------------------
  //ASM 으로 번역시 현재 진행되고 있는 각종 중요 정보를 관리한다.
  //}-------------------------------------------------------------

  //처리중인 *.t 문서의 위치가 들어있다.
  char  *tBuf;

  //변환 중인 *.asm 문서의 위치가 들어있다.
  char  *asmBuf;  

  //현재 문서의 총 행수(BASE : 0).
  int    lineTotalCount;

  //현재 처리중인 행의 시작 index(BASE : 0).
  int    lineStartIndex;

  //현재 처리중인 행의 행 index(BASE : 0).
  int    line;

  //현재 추출한 단어.
  char   word[1024*10];

  //현재 추출한 단어의 시작 index(BASE : 0).
  int    wordStartIndex;

  //추가 정보를 여기에 기술한다.

  //[2009.03.30.월][추가!!!]{-------------------------------------
  //가장 마지막에 검사한 [행번호] 를 저장한다.
  //[행번호] 는 "$행번호" 형식으로 되 있으으므로 그대로 저장한다.
  char   lastLineNumberSymbol[OPT_wordStrSize];
  //}-------------------------------------------------------------

};

//[함수]------------------------------------------------------------------------

//[2011.05.02.월][완료!!!]
bool __fastcall AsmEncoder(char  *pTempFileName);

//[Tree 함수들]-----------------------------------------------------------------

//[2009.11.18.수][완료!!!]
int __fastcall Tree_AsmEncode_LineNumber(struct ASMENCODEINFO  *prAsmEncodeInfo);

//[2009.11.18.수][완료!!!]
int __fastcall Tree_AsmEncode_FunctionBodyStart(struct ASMENCODEINFO  *prAsmEncodeInfo);

//[2009.11.18.수][완료!!!]
int __fastcall Tree_AsmEncode_FunctionBodyEnd(struct ASMENCODEINFO  *prAsmEncodeInfo);

//[2009.11.18.수][완료!!!]
int __fastcall Tree_AsmEncode_FunctionCall(struct ASMENCODEINFO  *prAsmEncodeInfo);

//[2009.11.18.수][완료!!!]
int __fastcall Tree_AsmEncode_TempStart(struct ASMENCODEINFO  *prAsmEncodeInfo);

//[2009.11.18.수][완료!!!]
int __fastcall Tree_AsmEncode_TempEnd(struct ASMENCODEINFO  *prAsmEncodeInfo);

//[2009.11.18.수][완료!!!]
int __fastcall Tree_AsmEncode_Jump(struct ASMENCODEINFO  *prAsmEncodeInfo);

//[2009.11.18.수][완료!!!]
int __fastcall Tree_AsmEncode_Copy(struct ASMENCODEINFO  *prAsmEncodeInfo);

//[2009.11.18.수][완료!!!]
int __fastcall Tree_AsmEncode_Conjt(struct ASMENCODEINFO  *prAsmEncodeInfo);

//[2009.11.18.수][완료!!!]
int __fastcall Tree_AsmEncode_Conjf(struct ASMENCODEINFO  *prAsmEncodeInfo);

//[2009.11.18.수][완료!!!]
int __fastcall Tree_AsmEncode_Push(struct ASMENCODEINFO  *prAsmEncodeInfo);

//[2009.11.18.수][완료!!!]
int __fastcall Tree_AsmEncode_Pop(struct ASMENCODEINFO  *prAsmEncodeInfo);

//[2009.11.18.수][완료!!!]
int __fastcall Tree_AsmEncode_Label(struct ASMENCODEINFO  *prAsmEncodeInfo);

//[2009.11.18.수][완료!!!]
int __fastcall Tree_AsmEncode_Operator(struct ASMENCODEINFO  *prAsmEncodeInfo);

//[2009.05.14.목][완료!!!]
int __fastcall Tree_AsmEncode_String(struct ASMENCODEINFO  *prAsmEncodeInfo);




//[기본 처리 함수]--------------------------------------------------------------

//[2008.12.07.일][완료!!!]
void __fastcall AsmEncode_GetWord(//정보구조체.
                                  struct ASMENCODEINFO  *prAsmEncodeInfo,
                                  //지정 단어 순번(BASE : 0).
                                  int    pWordIndex);
