Anda di halaman 1dari 7

Date: -

Assignment 1
Practical No. 1-2
Statement: Write a program to implement the computation of FIRST and
FOLLOW of a generalized grammar. 

Code: package cd;


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
/**
*
* @author caesar
*/
public class Firstfollow {
static ArrayList f = new ArrayList();
//contains final FIRST list
static ArrayList al = new ArrayList();
//contains initial producation list
public static void main(String[] args) throws IOException {
InputStreamReader ir = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(ir);
System.out.println("Enter number of grammer:");
int numberOfGrammer = Integer.parseInt(br.readLine());

System.out.println("Enter grammer");
String s[] = new String[numberOfGrammer];
//for storing all the input statements
for (int i = 0; i < numberOfGrammer; i++) {
//input array s[]
s[i] = br.readLine();
}
//make array t[] to store first 4 chars of each s[]
for (String item : s) {
al.add(item.substring(0, 4));
}
//calculate and store all productions divided by / in
arraylist al
for (String item : s) {
if (item.contains("/")) {
int j = item.indexOf('/');
String fi = item.substring(0, 3) + item.substring(j
+ 1, j + 2);
al.add(fi);
}
}
//if non terminal then get its terminal or else add it in
the final array
for (Object al1 : al) {
String a = (String) al1;
if (Character.isUpperCase(a.charAt(3))) {
f.addAll(getTerminal(a));
} else {
f.add(a);
}
}
//System.out.println(al);
System.out.println("Final First List : " + filter(f));
}

private static ArrayList getTerminal(String a) {


char jf = a.charAt(0);

//js stores "S"

char s = a.charAt(3); //s is always uppercase


ArrayList finderAl = finder(s);
ArrayList getTerminalAl = new ArrayList();
for (Object finderAl1 : finderAl) {
getTerminalAl.add(jf + "->" + finderAl1);
}
//System.out.println(getTerminalAl);
return getTerminalAl;
}
private static ArrayList finder(char a) {
ArrayList finderAl = new ArrayList();
for (Object al1 : al) {
if (((String) al1).charAt(0) == a) {
finderAl.add(((String) al1).charAt(3));
}
}
//System.out.print(finderAl);
//finderAl has {C,d}
for (int i = 0, jl = finderAl.size(); i < jl; i++) {
String y = finderAl.get(i).toString();
if (Character.isUpperCase(y.charAt(0))) {
for (Object al1 : al) {
if (((String) al1).charAt(0) == y.charAt(0)) {
finderAl.add(((String) al1).charAt(3));
}
}
finderAl.remove(i);
//System.out.print(finderAl);
}
}
return finderAl;
}

private static ArrayList filter(ArrayList ak) {


ArrayList fi = new ArrayList();
for (int i = 0; i < ak.size(); i++) {
String a = (String) ak.get(i);
if (Character.isUpperCase(a.charAt(3))) {
ak.remove(i);
} else {
fi.add(a);
}
}
Set setItems = new LinkedHashSet(fi);
fi.clear();
fi.addAll(setItems);
return fi;
}
}

Date: -

Assignment 2
Practical No. 2
Statement: Write a program to count number of characters, words and lines
from an input file. 

Code: %{
#include<stdio.h>
int cc=0,bc=0,wc=0,lc=0;
char c;
%}
%%
[^ \t\n]+

{
wc++;
cc=cc+yyleng;
}

\n

lc++;

" "

bc++;

\t

bc=bc+5;

%%
main(int argc,char *argv[])
{
if (argc!=2)

printf("\nusage:./a.out filename\n");
return(0);
}

yyin=fopen(argv[1],"r");
yylex();
printf("\n no of lines are %d\n",lc);
printf("\n no of words are %d\n",wc);
printf("\n no of blanks are %d\n",bc);
printf("\n no of character are %d\n",cc);
}
int yywrap(){
return 1;
}

Date: -

Assignment 2
Practical No. 3
Statement: Write a program finding number of occurrence of a character in a
given word. 

Code: %{
#include<stdio.h>
int cc=0,bc=0;
char c;
%}
%%
[^ \t\n]+

{if(cc=='a'){
cc=cc+1;}

}
%%
main(int argc,char *argv[])
{
if (argc!=2)

printf("\nusage:./a.out filename\n");
return(0);
}

yyin=fopen(argv[1],"r");
yylex();
printf("\n no of occurence of character are %d\n",cc);
}
int yywrap(){return 1;}

Anda mungkin juga menyukai