📄 grammar.h
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -