2013-10-19 6 views
-2
의 연산자로

내 목표는 식에서 AB = 3 그때는 것을 읽을 때 같이 C 언어의 매우 단순한 어휘 분석을 구현하는 것 로 분석 :어휘 분석 부 : 분석 대신 세퍼레이터

ID<ab> OP<=> LIT<8> (op will be "operator",LIT will be "literal"). 

당신이 표현 을 읽을 때 상황도있다? b : c. 일반적으로 다음과 같이 분석 될 것입니다.

ID<a> SEP<?> ID<b> SEP<:> ID<c>". 

하지만 실제로는 3 진수 연산자입니다. 따라서 위에서 열거 한 분석은 정확하지 않습니다.

이제 gcc, g ++와 같은 컴파일러를 참조하고 이러한 컴파일러가 어떻게 어휘 분석을 구현하는지 확인하고 싶습니다. 나에게 제안을 할 수있는 사람은 누구입니까?

+0

그래서 연산자로 사용하려는 경우 왜 분리 기호로 스캔합니까? 여기서 뭐가 문제 야? – EJP

+0

다른 사람들로부터이 자료를 얻었 기 때문에. 둘 다 "?" 및 ":"는 기본적으로 구분 기호로 처리됩니다. – ryu

답변

0

왜 렉서 출력이 잘못 되었습니까? 당신은 너무 멀리 앞서 생각하고 렉서의 구문 분석 문제를 해결하려고합니다. 네가 정말 좋아하면 바꿀 수있어? 연산자 (이 경우에 있어야 함)이지만 궁극적으로는 중요하지 않습니다. 토큰으로 정의한 터미널을 사용하여 구문 분석하면됩니다.

+0

네, 맞습니다. 필자는이 프로젝트를 처음 사용하기 때문에 어휘 분석기와 구문 분석기를 구분할 수 없습니다. 이 때까지는 이런 종류의 문제를 해결하기 위해 조금 더 일찍 왔습니다. 나중에 다시 확인하겠습니다. – ryu