?? compiler.h
字號:
#ifndef COMPILER_H_
#define COMPILER_H_
#include "type.h"
#include "lexer.h"
struct Error
{
int _errorNo;
Line _line;
};
class Compiler
{
public:
Compiler();
~Compiler();
void ParseLine(Line& line);
void Compile(File& file);
void CodeGen();
void ListGen();
void DumpMethods();
void DumpFields();
void DumpFileHeader();
void DumpStringPool();
void DumpILCode();
void MetaDataGen();
void ILGen();
private:
//=========================================================================
//Program := Functions | e
//Function := Attribute Type FunctionName ArgumentList {ILCode}
//Attribute := .entry | e //(Further Consideration include public private static and inline)
//Type := void | NormalType
//NormalType := s8 | u8| s16 | u16 | s32 | u32 | s64 | u64 | f32 | f64
//FunctionName = string
//string := [a-zA-Z_]+[a-zA-Z0-9_]*
//ArgumentWithComma := (Argument,)*
//Argument := NormalType AgrumentName
//ArgumentName := string
//ILCode := ?#%&(#&%*(@#&()@#$&*; //Not described;
//ArgumentList := (ArgumentWithComma Argument)
//==========================================================================
//Methods used for Top-down Parsing;
inline void Program();
inline ValueType Type();
inline void FunctionName();
inline void Function();
inline void Attribute();
inline int Identifier();
inline void ArgumentList();
inline void Argument();
inline void ILEmit();
inline int ILCallArgumentList();
inline void ILCallArgument();
//==============================================
private:
Line _curLine;
Lexer* _lexer;
FileList& _listFile;
static FILE* _outExe;
List<Instr> _instrs;
FileHeader _fileHeader;
MetaDataDesc _metaData;
StringPool _strPool;
MethodDesc _curMethod;
FieldDesc _curField;
Token _tok;
int _cerrs;
int _maxError;
List<Error> _errList;
FILE* _dumpFile;
};
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -