파일을 입력으로 사용하는 Bison Flex를 사용하여 컴파일러에서 작성하려고합니다. 파일에는 알고리즘 동작에 대한 설명이 들어 있습니다. 파일에는 2 개의 섹션이 있습니다.다른 섹션으로 입력을 올바르게 구문 분석하는 방법 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
예는 두 개의 섹션으로 나누어 져 있습니다. 분석 된 입력이 올바른 섹션에 속하는지 알아야합니다. 예를 들어 레지스터 정의는 다음과 같습니다. registers = {...}은 엔티티의 비헤이비어 정의에 포함되어서는 안됩니다.
나는 이러한 해결책을 생각해 냈습니다.
1. 정규 표현식을 lex로 시작과 끝 부분의 표현식으로 둘러 쌉니다. 예를 들어, 동작이있는 섹션은 으로 시작하고으로 시작하고 끝으로 끝납니다. 그래서 기본적으로 "begin.become.end"와 같은 정규 표현식을 정의하면이 올바르게 시작되어야합니다. 시작과 끝 사이에있을 때만 올바르게 명령을 구문 분석해야합니다.
2. 모든 섹션에 대해 표현식이있는 별도의 플렉스 파일을 정의하십시오. 그 다음에 입력 파일을 읽고 표현식이있는 하나의 flex 파일로 구문 분석하고 컴파일러가 예를 들어 이라는 키워드로 시작하면으로 시작합니다.이 파일은 구문 분석 동작에 대한 표현식이있는 파일에 대해 flex 파일을 전환합니다.
제 질문은 제 제안 된 솔루션이 문제에 접근하는 좋은 방법인지 또는이 유형의 문제를 해결하기 위해보다 우아하고 올바른 방법이 있는지 제 질문입니다.
감사합니다.
@downvoter 설명해주십시오. – EJP