flex与bison学习之英式英语转换为美式英语
第1章例子-英式英语转换为美式英语
flowchart LR
A([第一章-flex与bison简介])
A-->B[字数统计]
A-->C[<u>英式英语转换为美式英语</u>]
A-->D[一个简单的flex词法分析器]
A-->E[识别计算器的记号]
A-->F[简易计算器]
A-->G[简易计算器_C语言实现词法分析]
classDef highlight fill:#ffc107,font-weight:bold;
class C highlight;
字数统计
英式英语转换为美式英语
一个简单的flex词法分析器
识别计算器的记号
简易计算器
简易计算器_C语言实现词法分析
英式英语转换为美式英语
代码(001_2_english_to_american.l)
/* 英式英语到美式英语的转换 */
%%
"colour" { printf("color"); }
"flavour" { printf("flavor"); }
"clever" { printf("smart"); }
"smart" { printf("elegant"); }
"conservative" { printf("liberal"); }
. { printf("%s", yytext); }
%%
点击展开代码剩余部分
main(int argc, char **argv)
{
yylex();
}
yywrap()
{
return 1;
}
Makefile(model.Makefile)
FILE_NAME = $(file_name)
FLEX_INPUT_FILE = $(FILE_NAME).l
FLEX_OUTPUT_FILE = $(FILE_NAME).c
FLEX_CMD = flex
FLEX_FLAG = -o
GCC_CMD = gcc
GCC_COMPILE_FLAG = -c
GCC_OUTPUT_FLAG = -o
GCC_LINK_FLAG = -lfl
GCC_OBJECT_FILE = $(FILE_NAME).o
TARGET_FILE = $(FILE_NAME)
点击展开代码剩余部分
all: clean flex_main gcc_main
flex_main: $(FLEX_INPUT_FILE)
$(FLEX_CMD) $(FLEX_FLAG) $(FLEX_OUTPUT_FILE) $(FLEX_INPUT_FILE)
gcc_main: $(FLEX_OUTPUT_FILE)
$(GCC_CMD) $(GCC_COMPILE_FLAG) $(FLEX_OUTPUT_FILE) $(GCC_OUTPUT_FLAG) $(GCC_OBJECT_FILE)
$(GCC_CMD) $(GCC_OBJECT_FILE) $(GCC_LINK_FLAG) $(GCC_OUTPUT_FLAG) $(TARGET_FILE)
.PHONY: clean
clean:
@rm -f $(FLEX_OUTPUT_FILE)
@rm -f $(GCC_OBJECT_FILE)
@rm -f $(TARGET_FILE)
编译指令
make -f model.Makefile file_name=001_2_english_to_american

测试指令
./001_2_english_to_american
#输入以下信息,按Ctrl+D结束
colour
flavour
clever
smart
conservative
china

输出信息


浙公网安备 33010602011771号