提交 f0de2fd7 创建 作者: 风清扬's avatar 风清扬

modifymain_ccharset

上级 54de95ff
......@@ -4,16 +4,16 @@
#include "OutputResult.h"
#include <stdlib.h>
NFAFragmentStack FragmentStack; // 栈。用于储存 NFA 片段
NFAFragmentStack FragmentStack; // 栈。用于储存 NFA 片段
char* regexp = "ab"; // 1
// char* regexp = "a|b"; // 2
// char* regexp = "a*"; // 3
// char* regexp = "a?"; // 4
// char* regexp = "a+"; // 5
// char* regexp = "a(a|1)*";// 6
// char* regexp = "(aa|b)*a(a|bb)*";// 7
// char* regexp = "(a|b)*a(a|b)?"; // 8
char* regexp = "ab"; // 例 1
// char* regexp = "a|b"; // 例 2
// char* regexp = "a*"; // 例 3
// char* regexp = "a?"; // 例 4
// char* regexp = "a+"; // 例 5
// char* regexp = "a(a|1)*";// 例 6
// char* regexp = "(aa|b)*a(a|bb)*";// 例 7
// char* regexp = "(a|b)*a(a|b)?"; // 例 8
char regexp_ci[256];
......@@ -28,17 +28,17 @@ int main(int argc, char **argv)
#endif
//
// 初始化栈
// 初始化栈
//
InitNFAFragmentStack(&FragmentStack);
//
// 调用 re2post 函数将正则表达式字符串转换成解析树的后续遍历序列
// 调用 re2post 函数将正则表达式字符串转换成解析树的后续遍历序列
//
post = re2post(regexp);
//
// 调用 post2nfa 函数将解析树的后续遍历序列转换为 NFA 并返回开始状态
// 调用 post2nfa 函数将解析树的后续遍历序列转换为 NFA 并返回开始状态
//
start = post2nfa(post);
......@@ -48,13 +48,13 @@ int main(int argc, char **argv)
}
/*
功能:
初始化一个状态。
能:
初始化一个状态。
返回值:
状态指针。
回值:
状态指针
*/
int nstate = 1; // 状态名计数器
int nstate = 1; // 状态名计数器
NFAState* CreateNFAState()
{
NFAState *s = (NFAState*)malloc(sizeof(NFAState));
......@@ -69,15 +69,15 @@ NFAState* CreateNFAState()
}
/*
功能:
将开始状态和接受状态组成一个 Fragment。
能:
将开始状态和接受状态组成一个 Fragment。
参数:
StartState -- 开始状态。
AcceptState -- 接受状态。
参数:
StartState -- 开始状态。
AcceptState -- 接受状态。
返回值:
Fragment 结构体指针。
回值:
Fragment 结构体指针。
*/
NFAFragment MakeNFAFragment(NFAState *StartState, NFAState *AcceptState)
{
......@@ -86,25 +86,25 @@ NFAFragment MakeNFAFragment(NFAState *StartState, NFAState *AcceptState)
}
/*
功能:
将解析树的后序序列转换为 NFA。
能:
将解析树的后序序列转换为 NFA。
参数:
postfix -- 解析树的后序序列指针。
参数:
postfix -- 解析树的后序序列指针。
返回值:
NFA 的开始状态指针。
回值:
NFA 的开始状态指针。
*/
const char VoidTrans = '$'; // 表示空转换
const char VoidTrans = '$'; // 表示空转换
NFAState* post2nfa(char *postfix)
{
char *p; // 游标
NFAFragment fragment1, fragment2, fm; // NFA 片段结构体变量
NFAFragment fragment = {0, 0}; // 初始化用于返回的 NFA 片段
NFAState *NewStartState, *NewAcceptState; // 开始状态和接受状态指针
char *p; //
NFAFragment fragment1, fragment2, fm; // NFA 片段结构体变量
NFAFragment fragment = {0, 0}; // 初始化用于返回的 NFA 片段
NFAState *NewStartState, *NewAcceptState; // 开始状态和接受状态指针
//
// TODO: 在此添加代码
// TODO: 在此添加代码
//
return fragment.StartState;
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论