資源簡介
編譯原理上機,C++實現求產生式的firstfollow集合,內含注釋,按照文字類的求解方法轉換成代碼,清晰易懂。
代碼片段和文件信息
#include
#include?
#include?
using?namespace?std;
#define?MAX?50??
int?NONE[MAX]?=?{?0?};
string?strings;???????//產生式?
string?Vn;???????????//非終結符?
string?Vt;???????????//終結符??
string?first[MAX];??//存放每個終結符的first集?
string?First[MAX];??//存放每個非終結符的first集??
string?Follow[MAX];?//存放每個非終結符的follow集
int?N;???????????????//產生式個數???
struct?STR?
{
string?left;?????
string?right;?
};?????
void?rec(STR?*p)?????????????????//識別Vn和Vt??
{
int?i?j;
for?(i?=?0;i? {
for?(j?=?0;j?(int)p[i].left.length();j++)//左側
{
if?((p[i].left[j]?>=?‘A‘&&p[i].left[j]?<=?‘Z‘))????????????????//左側第j個字母是大寫
{
if?(Vn.find(p[i].left[j])>100)?????????????????????????????//Vn里沒找到返回很大的值
- 上一篇:逆波蘭表達式的C++實現
- 下一篇:B-樹的源代碼
評論
共有 條評論