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

modifymain_ccharset

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