我正在尝试使用Flex,Bison编写编译器,它将文件作为输入。文件包含算法行为的描述。文件有2个部分。如何使用Flex,Bison正确解析输入不同部分
registers = {state, temp,input}
states = {idle, done}
entity
begin
read(input)
temp = input
send(temp)
become done
end
我的问题是以下
文件输入文件的
1. definition of registers, states
2. description of behavior
实施例被划分成两个部分。我需要找出是否输入分析属于正确的部分。例如,定义寄存器寄存器= {...}不应放置在实体行为的定义中。
我想出了这些解决方案。
1.在开始和结束时用lex将lex中的正则表达式包装起来。例如,具有行为的部分从开始开始并以结束结束。所以基本上,如果我定义像“begin.become.end”这样的正则表达式,它应该正确解析命令,只有当它位于开始和结束之间。
2.用每个部分的表达式定义单独的柔性文件。之后读取输入文件并用一个带表达式的flex文件解析它,然后编译器得到例如关键字begin它将切换文件的flex文件,其中是表达式用于解析行为。
我的问题是,如果我提出的解决方案是解决问题的好方法,或者有更加优雅和正确的方法来解决这类问题。
谢谢。
@downvoter请解释。 – EJP