컴파일러에서 LOOKAHEAD를 구할때 보면
'rhs에 FIRST가 되든지 또는 rhs가 e(Epsilon)을 유도할 수 있으면 lhs의 FOLLOW도 속하게 된다.'
라고 오세만 교수님의 컴파일러 입문 책에 나와있는데
근데 책의 예제를 보다시피하면 모든 예제가 Epsilon을 유도하는 형식이여서
S -> bRS | RcSa | e
위와 같이 나오고
LOOKAHEAD(S -> bRS) = FIRST(b) ringSum FIRST(R) ringSum FIRST(S) ringSum FOLLOW(S)
꼭 FOLLOW가 들어가더라구요
입실론을 유도하지 않는 예제이면, FOLLOW가 포함 안되고 FIRST로만 LOOKAHEAD를 구하는게 맞나요?
있다면 간단한 예제로 보여주시면 감사
컴파일러는 기호를 지 죶대로 정의하고 쓰는경우가 많아서 + 가 뭔 기호인지 설명해봐라
아 + 말고 ε 입실론 Epsilon 임
그러면 e 라고 쓰지 컴파일레 세계에서는 ㅋㅋ
그리고 ringsum 이 뭔가 했네 ㅄ아 (+) 이렇게 쓰면 되잖아
답을 알려주셈
니가 예제를 생각해보고 왜 그런지 설명해봐 내가 맞나 틀리나를 말해주지
참고로 나는 예전 직장에서 LALR 기반 커스텀 Yacc 관련 제작을 한적이 있다.
위에 예제에서 S가 입실론유도 가능하니까 FOLLOW(S) 들어가는거 아님니까?? 위 이거 말고도
R -> acR | b 이것도 있는데 이거에서는 그럼
LOOKAHEAD(R -> acR) = FIRST(a) (+) FIRST(b) (+) FIRST(R) 이거 임??
니가 어떤 파싱방법을 공부하고 있는지 말도 없고 입실론 유도 가능하다는 이상한 말을 써서 헷갈린다만 LR을 가정하고 커널이 해당 생성규칙 앞대가리에 찍혀 있다는 가정하에 위 예제는 니말이 맞는데 왜 맞는지를 모르고 있는거 같고, 댓글도 맞는데 왜 맞는지 설명을 해봐
그리고 댓글로 적어준건 생성규칙이 저거 딱 한개 있을때만 맞고 또 다른 생성규칙에 논터미널 R이 껴들어가 있으면 또 Lookahead 가 달라진다.
LL parsing 할때인데요 성님 그리고 위에 S 랑 R이랑 한묶음입니다