1022 문법 분석 프로그램
#include<stdio.h>
#include<string.h>
int n,p,zbm;
char ch,code[1000],str[100];
void scaner();
void main()
{
printf("Please input the source code:
");
p=0;
do{
ch=getchar();
code[p++]=ch;
}while(ch!='#');
printf("
Output the code:
");
p=0;
do{
scaner();
if(zbm==98)printf("%s",str);
else if(zbm==99)printf("<error,%s>",str);
else printf("<%d,%s>",zbm,str);
}while(zbm!=0);
printf("
");
}
void scaner()
{
do{
ch=code[p++];
}while(ch==' ');
n=0;
if((ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z')||ch=='_')
{
while((ch>='0'&&ch<='9')||(ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z')||ch=='_')
{
str[n++]=ch;
ch=code[p++];
}
str[n++]='\0';
if (strcmp(str,"begin")==0)zbm=1;
else if(strcmp(str,"if" )==0)zbm=2;
else if(strcmp(str,"then" )==0)zbm=3;
else if(strcmp(str,"while")==0)zbm=4;
else if(strcmp(str,"do" )==0)zbm=5;
else if(strcmp(str,"end" )==0)zbm=6;
else zbm=10;
p--;
}
else if(ch>='0'&&ch<='9')
{
zbm=11;
while((ch>='0'&&ch<='9')||(ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z')||ch=='_')
{
if(ch<'0'||ch>'9')zbm=99;
str[n++]=ch;
ch=code[p++];
}
str[n++]='\0';
p--;
}
else
{
switch(ch)
{
case '+':zbm=13;str[n++]=ch; break;
case '-':zbm=14;str[n++]=ch; break;
case '*':zbm=15;str[n++]=ch; break;
case '/':zbm=16;str[n++]=ch; break;
case ':':zbm=17;str[n++]=ch;
if(code[p]=='=')
{ zbm=18;str[n++]=ch;}break;
case '<':zbm=20;str[n++]=ch;
if(code[p]=='=')
{ zbm=21;str[n++]=ch;}break;
if(code[p]=='>')
{ zbm=22;str[n++]=ch;}break;
case'>':zbm=23;str[n++]=ch;
if(code[p]=='=')
{ zbm=24;str[n++]=ch;}break;
case '=':zbm=25;str[n++]=ch; break;
case ';':zbm=26;str[n++]=ch; break;
case '(':zbm=27;str[n++]=ch; break;
case ')':zbm=28;str[n++]=ch; break;
case '#':zbm=0 ;str[n++]=ch; break;
case'
':zbm=98;str[n++]=ch; break;
case'\t':zbm=98;str[n++]=ch; break;
default :zbm=99;str[n++]=ch;
}
str[n++]='\0';
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.