grammar.h
来自「用VC实现的词法分析器」· C头文件 代码 · 共 65 行
H
65 行
#pragma once
#include <list>
#include "CodeObject.h"
using std::list;
class Grammar : public IDump
{
class Node;
class Edge
{
public:
Edge(Node * p, ObjectType t):Next(p), Type(t) {}
Node * Next;
ObjectType Type;
};
class Node : public IDump
{
bool bDtor;
public:
virtual void Dump(FILE * stream, bool sub, int nIndent = 0);
void Destroy();
Node() {bDtor = false; Result = Null; }
ObjectType Result;
list<Edge> Transitions;
};
Node * Root;
Node * Iterator;
public:
enum Result
{
Continue,
Found,
NotFound,
BadInput
};
#pragma warning(disable:4200)
struct Rule
{
ObjectType Result;
ObjectType Steps[];
};
Grammar(void) {Iterator = Root = new Node;}
~Grammar(void) {Root->Destroy();}
int AddRule(Rule * rule);
virtual void Dump(FILE * stream, bool sub, int nIndent = 0);
void Begin(void);
Grammar::Result Next(ObjectType type);
ObjectType GetResult(void);
};
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?