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

image-20260223160917338

输出信息

image-20260223140516012

posted @ 2026-02-23 19:30  wilshappy  阅读(4)  评论(0)    收藏  举报