20
COMPLIER FILE Submitted by: Pinak Mukherjee (038/CS/GTBIT/04)

Complier File

Embed Size (px)

DESCRIPTION

Compiler File &th Sem

Citation preview

Page 1: Complier File

COMPLIER FILE

Submitted by: Pinak Mukherjee (038/CS/GTBIT/04)

Department of Computer Science and Engineering

Guru Tegh Bahadur Institute of Technology

Page 2: Complier File

/*Generation of code in c++ to add two numbers by coding in c*/void main(){char a[40],b[40],c[40],d[40]; clrscr(); do {printf("Enter class name=>"); scanf("%s",a); }while(strlen(a)>=40); do {printf("Enter name of first variable=>"); scanf("%s",b); }while((!strcmp(a,b))||(strlen(b)>=40)); do {printf("Enter name of second variable=>"); scanf("%s",c); }while((!strcmp(a,c))||(!strcmp(c,b))||(strlen(c)>=40)); do {printf("Enter name of class variable=>"); scanf("%s",d);}while((!strcmp(a,d))||(!strcmp(d,c))||(!strcmp(d,b))||(strlen(d)>=40)); clrscr(); printf("class %s",a); printf("\n{\n private:\n"); printf(" int %s;\n",b); printf(" int %s;\n",c); printf(" public:\n"); printf(" void getinput()\n {"); printf("\n cout<<\"Enter first number:\";"); printf("\n cin>>%s;",b); printf("\n cout<<\"Enter second number:\";"); printf("\n cin>>%s;",c); printf("\n }"); printf("\n void addnos()\n {"); printf("\n cout<<\"The Sum is:\"<<%s+%s;",b,c); printf("\n }"); printf("\n };"); printf("\nvoid main()\n {"); printf("\n %s %s;",a,d); printf("\n %s.getinput();",d); printf("\n %s.addnos();",d);printf("\n }"); getch();

Page 3: Complier File

}

OUTPUTEnter class name=>studentEnter name of first variable=>aEnter name of second variable=>bEnter name of class variable=>student1class student{ private: int a; int b; public: void getinput() { cout<<"Enter first number:"; cin>>a; cout<<"Enter second number:"; cin>>b; } void addnos() { cout<<"The Sum is:"<<a+b; } };void main() { student student1; student1.getinput(); student1.addnos(); }

Page 4: Complier File

/*Generation of code in java through code in c*/void main(){char a[40],b[40],c[40],d[40]; clrscr(); do {printf("Enter class name=>"); scanf("%s",a); }while(strlen(a)>=40); do {printf("Enter name of first variable=>"); scanf("%s",b); }while((!strcmp(a,b))||(strlen(b)>=40)); do {printf("Enter name of second variable=>"); scanf("%s",c); }while((!strcmp(a,c))||(!strcmp(c,b))||(strlen(c)>=40)); do {printf("Enter name of class variable=>"); scanf("%s",d); }while((!strcmp(a,d))||(!strcmp(d,c))||(!strcmp(d,b))||(strlen(d)>=40)); clrscr();printf("public class %s",a); printf("private int %s;\n",b); printf("private int %s;\n",c); printf("public static void main(){\n"); printf("\n System.out.println(\"Enter first number:\");"); printf("\n cin>>%s;",b); printf("\n System.out.println(\"Enter second number:\");"); printf("\n cin>>%s;",c); printf("\n System.out.println(\"The Sum is:\",%s+%s);",b,c); printf("\n }"); printf("\n}"); getch();}

Page 5: Complier File

OUTPUTEnter class name=>STUDENTEnter name of first variable=>AEnter name of second variable=>BEnter name of class variable=>STUDENT1public class STUDENTprivate int A;private int B;public static void main(){ System.out.println("Enter first number:"); cin>>A; System.out.println("Enter second number:"); cin>>B; System.out.println("The Sum is:",A+B); }}/* Program on lexical analysis */

#include"stdio.h"#include"conio.h"#include"string.h"#include"ctype.h"#define MAX 30

void main(){ char str[MAX]; int state=0; int i=0, j, startid=0, endid, startcon, endcon;

clrscr();

for(j=0; j<MAX; j++) str[j]=NULL; //Initialise NULL

printf("*** Program on Lexical Analysis ***"); printf("Enter the string: "); gets(str); //Accept input string str[strlen(str)]=' ';

printf("Analysis:");

while(str[i]!=NULL) { while(str[i]==' ') //To eliminate spaces

i++; switch(state) {

Page 6: Complier File

case 0: if(str[i]=='i') state=1; //if else if(str[i]=='w') state=3; //while else if(str[i]=='d') state=8; //do else if(str[i]=='e') state=10; //else else if(str[i]=='f') state=14; //for else if(isalpha(str[i]) || str[i]=='_') {

state=17;startid=i;

} //identifiers

else if(str[i]=='<') state=19; //relational '<' or '<='

else if(str[i]=='>') state=21; //relational '>' or '>='

else if(str[i]=='=') state=23; //relational '==' or assignment '='

else if(isdigit(str[i])) {

state=25; startcon=i; } //constant

else if(str[i]=='(') state=26; //special characters '('

else if(str[i]==')') state=27; //special characters ')'

else if(str[i]==';') state=28; //special characters ';'

else if(str[i]=='+') state=29; //operator '+'

else if(str[i]=='-') state=30; //operator '-'

break;

//States for 'if' case 1: if(str[i]=='f') state=2;

else { state=17; startid=i-1; i--; } break;

case 2: if(str[i]=='(' || str[i]==NULL)

Page 7: Complier File

{ printf("if : Keyword\n"); state=0; i--; } else { state=17; startid=i-2; i--; } break;

//States for 'while' case 3: if(str[i]=='h') state=4;

else { state=17; startid=i-1; i--; } break;

case 4: if(str[i]=='i') state=5; else { state=17; startid=i-2; i--; } break;

case 5: if(str[i]=='l') state=6; else { state=17; startid=i-3; i--; } break;

case 6: if(str[i]=='e') state=7; else { state=17; startid=i-4; i--; } break;

case 7: if(str[i]=='(' || str[i]==NULL) { printf("while : Keyword \n"); state=0; i--; } else { state=17; startid=i-5; i--; } break;

//States for 'do' case 8: if(str[i]=='o') state=9;

else { state=17; startid=i-1; i--; } break;

case 9: if(str[i]=='{' || str[i]==' ' || str[i]==NULL || str[i]=='(') { printf("do : Keyword \n"); state=0; i--; } break;

//States for 'else' case 10: if(str[i]=='l') state=11;

else { state=17; startid=i-1; i--; } break;

case 11: if(str[i]=='s') state=12; else { state=17; startid=i-2; i--; }

Page 8: Complier File

break; case 12: if(str[i]=='e') state=13;

else { state=17; startid=i-3; i--; } break;

case 13: if(str[i]=='{' || str[i]==NULL) { printf("else : Keyword \n"); state=0; i--; } else { state=17; startid=i-4; i--; } break;

//States for 'for' case 14: if(str[i]=='o') state=15;

else { state=17; startid=i-1; i--; } break;

case 15: if(str[i]=='r') state=16; else { state=17; startid=i-2; i--; } break;

case 16: if(str[i]=='(' || str[i]==NULL) { printf("for : Keyword \n"); state=0; i--; } else { state=17; startid=i-3; i--; } break;

//States for identifiers case 17:

if(isalnum(str[i]) || str[i]=='_') {

state=18; i++; }

else if(str[i]==NULL||str[i]=='<'||str[i]=='>'||str[i]=='('||str[i]==')'||str[i]==';'||str[i]=='='||str[i]=='+'||str[i]=='-') state=18;

i--; break;

case 18:

if(str[i]==NULL || str[i]=='<' || str[i]=='>' || str[i]=='(' || str[i]==')' || str[i]==';' || str[i]=='=' || str[i]=='+' ||str[i]=='-')

{ endid=i-1; printf(" ");

Page 9: Complier File

for(j=startid; j<=endid; j++)printf("%c", str[j]);

printf(" : Identifier \n"); state=0; i--; } break;

//States for relational operator '<' & '<=' case 19: if(str[i]=='=') state=20;

else if(isalnum(str[i]) || str[i]=='_') { printf("< : Relational operator \n"); i--; state=0; } break;

case 20: if(isalnum(str[i]) || str[i]=='_') { printf("<= : Relational operator \n"); i--; state=0; } break;

//States for relational operator '>' & '>=' case 21: if(str[i]=='=') state=22;

else if(isalnum(str[i]) || str[i]=='_') { printf("> : Relational operator \n"); i--; state=0; } break;

case 22: if(isalnum(str[i]) || str[i]=='_') { printf(">= : Relational operator \n"); i--; state=0; } break;

//States for relational operator '==' & assignment operator '=' case 23: if(str[i]=='=') state=24;

else { printf("= : Assignment operator \n"); i--;

Page 10: Complier File

state=0; } break;

case 24: if(isalnum(str[i])) { printf("== : Relational operator \n"); state=0; i--; } break;

//States for constants case 25: if(isalpha(str[i]))

{ printf(" *** ERROR *** \n "); puts(str); for(j=0; j<i; j++)

printf(" "); printf("^"); printf("Error at position %d Alphabet cannot follow digit \n", i); state=99; }

else if(str[i]=='(' || str[i]==')' || str[i]=='<' || str[i]=='>' || str[i]==NULL || str[i]==';' || str[i]=='=') { endcon=i-1; printf(" "); for(j=startcon; j<=endcon; j++)

printf("%c", str[j]); printf(" : Constant \n"); state=0; i--; } break;

//State for special character '(' case 26: printf(" ( : Special character \n");

startid=i; state=0; i--; break;

//State for special character ')' case 27: printf(" ) : Special character \n");

state=0; i--; break;

//State for special character ';'

Page 11: Complier File

case 28: printf(" ; : Special character \n"); state=0; i--; break;

//State for operator '+' case 29: printf(" + : Operator \n");

state=0; i--; break;

//State for operator '-' case 30: printf("+ : Operator \n");

state=0; i--; break;

//Error State case 99: goto END;

} i++; } printf("\n End of program"); END: getch();}

/* Output

Correct input-------------

*** Program on Lexical Analysis ***

Enter the string: for(x1=0; x1<=10; x1++);

Analysis:

for : Keyword( : Special characterx1 : Identifier= : Assignment operator0 : Constant; : Special characterx1 : Identifier<= : Relational operator

Page 12: Complier File

10 : Constant; : Special characterx1 : Identifier+ : Operator+ : Operator) : Special character; : Special character

End of program

Wrong input-----------

*** Program on Lexical Analysis ***

Enter the string: for(x1=0; x1<=19x; x++);

Analysis:

for : Keyword( : Special characterx1 : Identifier= : Assignment operator0 : Constant; : Special characterx1 : Identifier<= : Relational operator

Token cannot be generated*/

OUTPUT*** Program on Lexical Analysis ***Enter the string: if (a>b) a=25;Analysis:if : Keyword ( : Special character a : Identifier> : Relational operator b : Identifier ) : Special character a : Identifier= : Assignment operator 25 : Constant ; : Special character

Page 13: Complier File

End of program

/*Count number of characters, words, lines in a file */

#include<fstream.h>#include<conio.h>#include<string.h>#include<ctype.h>void main(){ clrscr();char ch,fname[50];int count=0,ascii,line=0,words=0,previous=10; cout<<"Enter the complete path of the file:"<<"\n";cin.get(fname,50); fstream fio; fio.open(fname,ios::in) ; fio.seekg(0);while(fio){ fio.get(ch); if(ch !=10 && ch !=-1) { count++;if(ch==32 && previous !=32){words++;}previous=ch;}else{if(ch==10) line++;if (previous !=10 && previous != 32) words++;previous=ch;}ascii=ch; cout<<ch<<":"<< ascii<<"\n";}

fio.close();cout<<"number of characters:"<<count<<"\n";cout<<"number of lines:"<<line<<"\n";

Page 14: Complier File

cout<<"number of words:"<<words<<"\n";getch();}

OUTPUTEnter the complete path of the file:c:\Documents and Settings\User1\Desktop\text.txtnumber of characters:98number of lines:4number of words:26

*/ First and follow */

#include<iostream.h>#include<conio.h> struct prod { char left, right[10][10]; int no_prod; }; struct firstnfollow { char ch[100]; int n_f; }; void main() { clrscr(); prod p[]={{'E',{"TR"},1}, {'R',{"+TR","~"},2}, {'T',{"FD"},1}, {'D',{"*FD","~"},2}, {'F',{"(E)","i"},2}};

firstnfollow f1[10]; firstnfollow f2[]={{"$",1},{"",0},{"",0},{"",0},{"",0}}; int n=5; // int n=5; char temp; for(int i=0;i<n;i++) { for(int j=0;j<p[i].no_prod;j++) { f1[i].ch[j]=p[i].right[j][0]; f1[i].n_f=p[i].no_prod; } } for(i=0;i<n;i++) { while(f1[i].ch[0]>=65&&f1[i].ch[0]<=90) { temp=f1[i].ch[0]; for(int j=1;j<f1[i].n_f;j++) f1[i].ch[j-1]=f1[i].ch[j]; f1[i].n_f--;

Page 15: Complier File

for(int k=0;k<n;k++) if(temp==p[k].left) { for(j=0;j<f1[k].n_f;j++) f1[i].ch[f1[i].n_f+j]=f1[k].ch[j]; f1[i].n_f+=f1[k].n_f; break; } } } int k,flag; for(i=0;i<n;i++) { for(int j=0;j<p[i].no_prod;j++) { k=0; while(p[i].right[j][k]!='\0') { if(p[i].right[j][k]>=65&&p[i].right[j][k]<=90&&p[i].right[j][k+1]!='\0') { for(int x=0;x<n;x++) if(p[i].right[j][k]==p[x].left) break; for(int y=0;y<n;y++) if(p[i].right[j][k+1]==p[y].left) break; if(y<5) { for(int s=0;s<f1[y].n_f;s++) if(f1[y].ch[s]!='~') f2[x].ch[f2[x].n_f++]=f1[y].ch[s]; } else f2[x].ch[f2[x].n_f++]=p[i].right[j][k+1]; } k++; } } } for(i=0;i<n;i++) { for(int j=0;j<p[i].no_prod;j++) { k=0; while(p[i].right[j][k]!='\0') { if(p[i].right[j][k]>=65&&p[i].right[j][k]<=90) { if(p[i].right[j][k+1]=='\0') { for(int a=0;a<n;a++) if(p[i].right[j][k]==p[a].left) break; if(a!=i) for(int b=0;b<f2[i].n_f;b++) f2[a].ch[f2[a].n_f++]=f2[i].ch[b]; } else

Page 16: Complier File

{ if(p[i].right[j][k+1]>=65&&p[i].right[j][k+1]<=90) { flag=0; for(int x=0;x<n;x++) if(p[i].right[j][k+1]==p[x].left) break; for(int s=0;s<f1[x].n_f;s++) if(f1[x].ch[s]=='~') { flag=1; break; } if(flag==1) { for(int a=0;a<n;a++) if(p[i].right[j][k]==p[a].left) break; for(int b=0;b<f2[i].n_f;b++) f2[a].ch[f2[a].n_f++]=f2[i].ch[b]; } } } } k++; } } } int q,j,s; for(i=0;i<n;i++) { q=0; j=0; while(f2[i].ch[j]!='\0') { k=j+1; while(f2[i].ch[k]!='\0') { if(f2[i].ch[j]==f2[i].ch[k]) { s=k; while(f2[i].ch[s]!='\0') { f2[i].ch[s]=f2[i].ch[s+1]; s++;q++; } } else k++; } j++; } f2[i].n_f-=q; } cout<<"The Firsts are: "; for(i=0;i<n;i++) { cout<<"\n"<<p[i].left<<" ---- ";

Page 17: Complier File

for(int j=0;j<f1[i].n_f;j++) cout<<f1[i].ch[j]<<" "; } cout<<"\nThe Follows are: "; for(i=0;i<n;i++) { cout<<"\n"<<p[i].left<<" ---- "; j=0; while(f2[i].ch[j]!='\0') { cout<<f2[i].ch[j]<<" "; j++; } } getch(); }

OUTPUTThe Firsts are:E ---- ( iR ---- + ~T ---- ( iD ---- * ~F ---- ( iThe Follows are:E ---- $ )R ---- $ )T ---- + $ )D ---- + $ )F ---- * + $ )