2011-01-14 3 views
0

this file처럼 내 의견으로는 선언만으로 충분합니다.왜 lex에서 규칙이 필요합니까?

어휘 분석에 규칙이 필요한 이유를 누구나 설명 할 수 있습니까?

rdels { 
    if ($this->smarty->auto_literal) { 
    $this->token = Smarty_Internal_Templateparser::TP_OTHER; 
    } else { 
    $this->token = Smarty_Internal_Templateparser::TP_RDEL; 
    $this->yypopstate(); 
    } 
} 

yypopstate, 그리고 yypushstate : 제 생각에는

그들은 내가 같은 블록에 대해서 이야기하고

규칙으로 ... .y 파일에만 필요있어?

답변

0

문자 입력에 대한 의미가 모호 할 수있는 경우 상태을 입력합니다. 렉서는 " (견적)가 발생하면

, 당신이 그렇지 않으면 (등 즉 +, -) 특별한 의미를 가질만한 다음과 같은 문자가 고려되는 "문자열"라는 상태 (yypushstate)를 입력 할 수 있습니다 문자열의 일부 렉서가 "을 만날 때 "문자열"상태가 완료됩니다 (yypopstate).

flex에서는 이러한 상태를 start conditions이라고합니다.

+0

렉스 분석에 상태가있는 경우 문법 분석과 다른 점은 무엇입니까? – java

+0

어휘 상태는 문법을 정의하지 않고 입력을 구분하는 목적으로 만 사용됩니다. 그들은 예를 들어 줄일 수 없습니다. –