资源简介

哈工程编译原理课程设计源码+满分报告

资源截图

代码片段和文件信息

/*
功能:
将解析树的后序序列转换为 NFA。

参数:
postfix -- 解析树的后序序列指针。
  
返回值:
NFA 的开始状态指针。
*/
const char VoidTrans = ‘$‘; // 表示空转换
NFAState* post2nfa(char *postfix)
{
char *p;     // 游标
NFAFragment fragment1 fragment2 fm;      // NFA 片段结构体变量
NFAFragment fragment = {0 0};     // 初始化用于返回的 NFA 片段
NFAState *NewStartState *NewAcceptState;  // 开始状态和接受状态指针

for(p=postfix; *p != ‘\0‘; p++)
{
switch(*p)
{
default: // 构造单字符 NFA 片段
// 调用 CreateNFAState 函数生成两个新的状态
NewStartState = CreateNFAState();
NewAcceptState = CreateNFAState();
// 开始状态通过单字符转换到接受状态
NewStartState->Transform = *p;
NewStartState->Next1 = NewAcceptState;
NewAcceptState->AcceptFlag = 1;
// 调用 MakeNFAFragment 函数生成一个新的 NFA 片段 并入栈
fm = MakeNFAFragment(NewStartS

评论

共有 条评论