Advertisement
Guest User

Untitled

a guest
Mar 30th, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.51 KB | None | 0 0
  1. import java.io.*;
  2. import java.util.*;
  3.  
  4. class OPMatrix
  5. {
  6. int i,j,k,z,w,q,p,l,y;
  7. String[] s;
  8. public void Matrix()
  9. {
  10. System.out.println(" Enter the number of Non-terminals & terminals:\t");
  11. Scanner c = new Scanner(System.in);
  12. k=c.nextInt();
  13. s = new String[k+1];
  14. int[][] first = new int[k+1][k+1];
  15. int[][] firstplus = new int[k+1][k+1];
  16. int[][] firststar = new int[k+1][k+1];
  17. int[][] firstterm = new int[k+1][k+1];
  18. int[][] last = new int[k+1][k+1];
  19. int[][] lastplus = new int[k+1][k+1];
  20. int[][] laststar = new int[k+1][k+1];
  21. int[][] lastterm = new int[k+1][k+1];
  22. int[][] temptrans = new int[k+1][k+1];
  23. int[][] equal = new int[k+1][k+1];
  24. int[][] less = new int[k+1][k+1];
  25. int[][] temp = new int[k+1][k+1];
  26. int[][] great1 = new int[k+1][k+1];
  27. int[][] great = new int[k+1][k+1];
  28. int[][] equalp =new int[k+1][k+1];
  29. String[][] opm = new String[k+1][k+1];
  30. String str="";
  31. String T = "+*()i";
  32. String NT="ETF";
  33. String symbols=" ";
  34. Scanner b = new Scanner(System.in);
  35. System.out.println(" Enter the " + k + " Non-terminals & terminals:\t");
  36. for(i=1;i<k+1;i++)
  37. {
  38. s[i]=b.nextLine();
  39. symbols+=s[i];
  40. }
  41. System.out.println("\n Enter the number of productions:\t");
  42. Scanner x = new Scanner(System.in);
  43. z=x.nextInt();
  44.  
  45. String[] prod = new String[z];
  46. System.out.println("Enter the " + z + " productions:\t");
  47. Scanner d = new Scanner(System.in);
  48. for(i=0;i<z;i++)
  49. {
  50. prod[i]=d.nextLine();
  51. }
  52. System.out.println("\n The productions are:\t");
  53. for(i=0;i<z;i++)
  54. {
  55. System.out.println(prod[i]);
  56. }
  57. //First matrix
  58. for(i=1;i<k+1;i++)
  59. {
  60. for(j=1;j<k+1;j++)
  61. {
  62. for(w=0;w<z;w++)
  63. {
  64. if((s[i].charAt(0)==prod[w].charAt(0)) && (s[j].charAt(0)==prod[w].charAt(4)))
  65. first[i][j]=1;
  66. }
  67. }
  68. }
  69. System.out.println("\n The First matrix is:\n");
  70. Printer(first,s);
  71. //First plus matrix
  72. System.out.println(" ");
  73. System.out.println("\n The First+ matrix is:\n");
  74. firstplus=Warshall(first);
  75. //First star matrix
  76. System.out.println(" ");
  77. System.out.println("\n The First* matrix is:\n");
  78. firststar=Kleens(firstplus);
  79. //First Term matrix
  80. System.out.println(" ");
  81. System.out.println("\n The First term matrix is:\n");
  82. for(i=0;i<prod.length;i++)
  83. {
  84. for(j=0;j<T.length();j++)
  85. {
  86. for(p=0;p<NT.length();p++)
  87. {
  88. if((prod[i].length()-1==4)&&prod[i].charAt(4)==T.charAt(j))
  89. {
  90. l=symbols.indexOf(prod[i].charAt(0));
  91. y=symbols.indexOf(prod[i].charAt(4));
  92. firstterm[l][y]=1;
  93. }
  94. if((prod[i].length()-1>4)&&(prod[i].charAt(5)==T.charAt(j)))
  95. {
  96. l=symbols.indexOf(prod[i].charAt(0));
  97. y=symbols.indexOf(prod[i].charAt(5));
  98. firstterm[l][y]=1;
  99. }
  100. if((prod[i].length()-1>4)&&(prod[i].charAt(5)==NT.charAt(p)))
  101. {
  102. l=symbols.indexOf(prod[i].charAt(0));
  103. y=symbols.indexOf(prod[i].charAt(4));
  104. firstterm[l][y]=1;
  105. }
  106. }
  107. }
  108. }
  109. Printer(firstterm,s);
  110. //Last Matrix
  111. for(i=1;i<k+1;i++)
  112. {
  113. for(j=1;j<k+1;j++)
  114. {
  115. for(w=0;w<z;w++)
  116. {
  117. if(prod[w].length()==5)
  118. {
  119. if((s[i].charAt(0)==prod[w].charAt(0)) && (s[j].charAt(0)==prod[w].charAt(4)))
  120. last[i][j]=1;
  121. }
  122. if(prod[w].length()==6)
  123. {
  124. if((s[i].charAt(0)==prod[w].charAt(0)) && (s[j].charAt(0)==prod[w].charAt(5)))
  125. last[i][j]=1;
  126. }
  127. if(prod[w].length()==7)
  128. {
  129. if((s[i].charAt(0)==prod[w].charAt(0)) && (s[j].charAt(0)==prod[w].charAt(6)))
  130. last[i][j]=1;
  131. }
  132. }
  133. }
  134. }
  135. System.out.println("\n The Last matrix is:\n");
  136. Printer(last,s);
  137. //Last+ matrix
  138. System.out.println(" ");
  139. System.out.println("\n The Last+ matrix is:\n");
  140. lastplus=Warshall(last);
  141. //Last* Matrix
  142. System.out.println(" ");
  143. System.out.println("\n The Last* matrix is:\n");
  144. laststar=Kleens(lastplus);
  145. //Last Term matrix
  146. System.out.println(" ");
  147. System.out.println("\n The Last term matrix is:\n");
  148. for(i=0;i<prod.length;i++)
  149. {
  150. for(j=0;j<T.length();j++)
  151. {
  152. for(p=0;p<NT.length();p++)
  153. {
  154. if((prod[i].length()-1==4) && prod[i].charAt(4)==T.charAt(j))
  155. {
  156. l=symbols.indexOf(prod[i].charAt(0));
  157. y=symbols.indexOf(prod[i].charAt(4));
  158. lastterm[l][y]=1;
  159. }
  160. if((prod[i].length()-1>4) && (prod[i].charAt(5)==T.charAt(j)))
  161. {
  162. l=symbols.indexOf(prod[i].charAt(0));
  163. y=symbols.indexOf(prod[i].charAt(5));
  164. lastterm[l][y]=1;
  165. }
  166. if((prod[i].length()-1>4) && (prod[i].charAt(5)==NT.charAt(p)))
  167. {
  168. l=symbols.indexOf(prod[i].charAt(0));
  169. y=symbols.indexOf(prod[i].charAt(6));
  170. lastterm[l][y]=1;
  171. }
  172. }
  173.  
  174. }
  175. }
  176. Printer(lastterm,s);
  177. //Equal matrix
  178. for(i=0;i<z;i++)
  179. {
  180. if(prod[i].substring(4).length()>=2)
  181. {
  182. str=prod[i].substring(4);
  183. for(j=0;j<str.length()-1;j++)
  184. {
  185. l=symbols.indexOf(str.charAt(j));
  186. y=symbols.indexOf(str.charAt(j+1));
  187. equal[l][y]=1;
  188. }
  189. }
  190. }
  191. System.out.println("\n The Equal matrix is:\n");
  192. Printer(equal,s);
  193. //Equal Precedence matrix
  194. for(i=0;i<z;i++)
  195. {
  196. for(j=0;j<T.length();j++)
  197. {
  198. for(p=0;p<NT.length();p++)
  199. {
  200. for(w=0;w<T.length();w++)
  201. {
  202. if((prod[i].substring(4)).equals(T.substring(j, j+1) + NT.substring(p, p+1) + T.substring(w, w+1)))
  203. {
  204. l=symbols.indexOf(prod[i].charAt(4));
  205. y=symbols.indexOf(prod[i].charAt(6));
  206. equalp[l][y]=1;
  207. }
  208. }
  209. }
  210. }
  211. }
  212. System.out.println("\n The Equal Precedence matrix is:\n");
  213. Printer(equalp,s);
  214. //Less than matrix
  215. for(i=1;i<k+1;i++)
  216. {
  217. for(j=1;j<k+1;j++)
  218. {
  219. for(w=1;w<k+1;w++)
  220. {
  221. temp[i][j] = temp[i][j] | (equal[i][w] * firststar[w][j]);
  222. }
  223. }
  224. }
  225. for(i=1;i<k+1;i++)
  226. {
  227. for(j=1;j<k+1;j++)
  228. {
  229. for(w=1;w<k+1;w++)
  230. {
  231. less[i][j] = less[i][j] | (temp[i][w] * firstterm[w][j]);
  232. }
  233. }
  234. }
  235. System.out.println("\n The Less than matrix is:\n");
  236. Printer(less,s);
  237. //Greater than matrix
  238. for(i=1;i<k+1;i++)
  239. {
  240. for(j=1;j<k+1;j++)
  241. {
  242. temp[i][j]=0;
  243. for(w=1;w<k+1;w++)
  244. {
  245. temp[i][j]=temp[i][j]|(laststar[i][w]*lastterm[w][j]);
  246. }
  247. }
  248. }
  249. for(i=1;i<k+1;i++)
  250. {
  251. for(j=1;j<k+1;j++)
  252. {
  253. temptrans[j][i]=temp[i][j];
  254. }
  255. }
  256. for(i=1;i<k+1;i++)
  257. {
  258. for(j=1;j<k+1;j++)
  259. {
  260. for(w=1;w<k+1;w++)
  261. {
  262. great[i][j]=great[i][j]|(temptrans[i][w]*equal[w][j]);
  263. }
  264. }
  265. }
  266. System.out.println("\n The Greater than matrix is:\n");
  267. Printer(great,s);
  268. //OPM matrix
  269. for(i=1;i<k+1;i++)
  270. {
  271. for(j=1;j<k+1;j++)
  272. {
  273. if(equalp[i][j]==1)
  274. opm[i][j]="=";
  275. else if(less[i][j]==1)
  276. opm[i][j]="<";
  277. else if(great[i][j]==1)
  278. opm[i][j]=">";
  279. else
  280. opm[i][j]="0";
  281. }
  282. }
  283. System.out.println("\n The opm matrix is:\n");
  284. Printer(opm,s);
  285. System.out.println("\n The opm matrix after superimposing is:\n");
  286.  
  287. for(j=4;j<k+1;j++)
  288. {
  289. if(j==4)
  290. System.out.print(" ");
  291. System.out.print(s[j] + " ");
  292. }
  293. for(i=4;i<k+1;i++)
  294. {
  295. System.out.print("\n" + s[i]);
  296. for(j=4;j<k+1;j++)
  297. {
  298. System.out.print(" " + opm[i][j]);
  299. }
  300. }
  301. }
  302. public int[][] Multiplier(int[][] f,int[][] g,int[][] h )
  303. {
  304. int [][]arr1=new int[k+1][k+1];
  305. int [][]arr2=new int[k+1][k+1];
  306. int [][]arr3=new int[k+1][k+1];
  307. arr1[][];
  308. for(i=1;i<k+1;i++)
  309. {
  310. for(j=1;j<k+1;j++)
  311. {
  312. for(w=1;w<k+1;w++)
  313. {
  314.  
  315. }
  316. public int[][] Warshall(int[][] f)
  317. {
  318. int[][] arrplus = new int[k+1][k+1];
  319. for(i=1;i<k+1;i++)
  320. {
  321. for(j=1;j<k+1;j++)
  322. {
  323. arrplus[i][j]=f[i][j];
  324. }
  325. }
  326. for(i=1;i<k+1;i++)
  327. {
  328. for(j=1;j<k+1;j++)
  329. {
  330. if(arrplus[j][i]==1)
  331. {
  332. for(w=1;w<k+1;w++)
  333. {
  334. arrplus[j][w] = arrplus[j][w] | arrplus[i][w];
  335. }
  336. }
  337. }
  338. }
  339. Printer(arrplus,s);
  340. return(arrplus);
  341. }
  342. public int[][] Kleens(int[][] f)
  343. {
  344. int[][] arrstar = new int[k+1][k+1];
  345. for(i=1;i<k+1;i++)
  346. {
  347. for(j=1;j<k+1;j++)
  348. {
  349. arrstar[i][j]=f[i][j];
  350. if(i==j)
  351. arrstar[i][j]=1;
  352. }
  353. }
  354. Printer(arrstar,s);
  355. return(arrstar);
  356. }
  357. public void Printer(int[][] f,String[] s)
  358. {
  359. for(j=0;j<k+1;j++)
  360. {
  361. if(s[j]!=null)
  362. System.out.print(s[j] + " ");
  363. else
  364. System.out.print(" ");
  365. }
  366. for(i=1;i<k+1;i++)
  367. {
  368. System.out.print("\n" + s[i]);
  369. for(j=1;j<k+1;j++)
  370. {
  371. System.out.print(" " + f[i][j]);
  372. }
  373. }
  374. }
  375. public void Printer(String[][] f,String[] s)
  376. {
  377. for(j=0;j<k+1;j++)
  378. {
  379. if(s[j]!=null)
  380. System.out.print(s[j] + " ");
  381. else
  382. System.out.print(" ");
  383. }
  384. for(i=1;i<k+1;i++)
  385. {
  386. System.out.print("\n" + s[i]);
  387. for(j=1;j<k+1;j++)
  388. {
  389. System.out.print(" " + f[i][j]);
  390. }
  391. }
  392. }
  393. }
  394.  
  395. class OPM
  396. {
  397. public static void main(String[] args)
  398. {
  399. OPMatrix opmatrix = new OPMatrix();
  400. opmatrix.Matrix();
  401. }
  402. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement