12.16
/*G[E]:
E->E+T|E-T|T
T->T*F|T/F|F
F->(E)|i
E->TE'
E'->+TE'|-TE'|ε
T->FT'
T'->*FT'|/FT'|ε
F->(E)|i
*/
#include<stdio.h>
char sym;
char LL1[1000];
int N=-1;
void T();
void E();
void F();
void e();
void t();
void error();
void scaner();
void main()
{
char ch;
int i=0;
printf(" sym :( # )
");
do{
scanf("%c",&ch);
LL1[i] = ch;
i++;
}while(ch != '#');
scaner();
E();
if(sym == '#')
printf(" !
");
else{
printf(" !!
");
error();
}
}
void scaner(){ //
N++;
if(LL1[N] == ' '){
N++;
}else{
sym = LL1[N];
}
}
void E(){
T();
e();
}
void T(){
F();
t();
}
void e(){
if(sym == '+'||sym == '-'){
scaner();
T();
e();
}
else if(LL1[N+1] == '#' || LL1[N+1] == '+' || LL1[N+1] == '/' || LL1[N+1] == '*' || LL1[N+1] == '-'){
if(LL1[N] != '(' && LL1[N] != ')')
error();
}
}
void t(){
if(sym == '*'||sym == '/'){
scaner();
F();
T();
}
else if(LL1[N+1] == '#' || LL1[N+1] == '+' || LL1[N+1] == '/' || LL1[N+1] == '*' || LL1[N+1] == '-'){
if(LL1[N] != '(' && LL1[N] != ')')
error();
}
}
void F(){
if(sym == '('){
scaner();
E();
if(sym == ')'){
scaner();
}else{
error();
}
}else //
while(1){
if(sym >= 'a' && sym<='z' || sym >= 'A' && sym <= 'Z' || sym >= '0' && sym <= '9'){
scaner();
}
else{
break;
}
}
}
void error(){
printf(" %d %c !
",N,sym);
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.