⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 grammar.h

📁 用VC实现的词法分析器
💻 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 + -