귀속 하강 식별기-컴파일링 원리
1938 단어 컴파일링 원리
예:
문법 G[S]:
S-> A|B
A->aM
M->A|#
B->bN
N->B|#
①문법은 좌귀속을 포함하지 않는다
=>#
First
follow
S
아니요
{a,b}
#
A
아니요
{a}
#
B
아니요
{b}
#
M
예.
{a,#}
#
N
예.
{b,#}
#
①문법은 좌귀속을 포함하지 않는다
② M N은 #까지 생성되므로 다음을 수행합니다.
First(A) ∩ follow(M) = ∅
First(B) ∩ follow{N} = ∅
③ S, A, B의 생성식에 #이 없으므로
First(A) ∩first(B) = ∅
First{aM}={a}
First{bN} ={b}
따라서 이 문법은 LL(1) 판단에 부합된다
반복 감소 분석:
Select(S->A) = {a}
Select(S->B)={b}
Select(A->aM)={a}
Select(M->A)={a)
Selec(M->#)=(#)
Select(B->bN)={b}
Select(N->B)={b}
Select(N->#)={#}
Void praseS(){
Switc(lookahead){
Case a:
ParseA();
Break;
Case b:
ParseB();
Break;
Defalut:
Print(“error”);
Exit();
}
}
Void praseA(){
Switc(lookahead){
Case a:
MatchToken(a)
ParseM();
Break;
Defalut:
Print(“error”);
Exit();
}
}
Void praseB(){
Switc(lookahead){
Case b:
MatchToken(b)
ParseN();
Break;
Defalut:
Print(“error”);
Exit();
}
}
Void praseM(){
Switc(lookahead){
Case a:
ParseA();
Break;
Case #:
MatchToken(#)
Break;
Defalut:
Print(“error”);
Exit();
}
}
Void praseN(){
Switc(lookahead){
Case b:
ParseB();
Break;
Case #:
MatchToken(#)
Break;
Defalut:
Print(“error”);
Exit();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
귀속 하강 식별기-컴파일링 원리작업용 단순화 반복 감소 인식기: 예: 문법 G[S]: S-> A|B M->A|# B->bN N->B|# ①문법은 좌귀속을 포함하지 않는다 follow 아니요 {a,b} 아니요 아니요 {b} 예. 예. {b,#} ①...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.