Advertisement
Guest User

Untitled

a guest
Mar 30th, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.76 KB | None | 0 0
  1. import java.util.*;
  2. class SPM
  3. {
  4. int i,j,k,l,m,n;
  5. public void Mat()
  6. {
  7.  
  8. System.out.println("Enter the no. of Productions:\t");
  9. Scanner Sc2=new Scanner(System.in);
  10. m=Sc2.nextInt();
  11. String[] prod=new String[m];
  12. System.out.println("\nEnter the Productions:\t");
  13. Scanner Sc3= new Scanner(System.in);
  14. for(i=0;i<m;i++)
  15. {
  16. prod[i]=Sc3.nextLine();
  17. }
  18.  
  19. System.out.println("\nEnter the total No of Terminals and Non Terminals:");
  20. Scanner sc=new Scanner(System.in);
  21. k=sc.nextInt();
  22. String[] Str= new String[k];
  23. Scanner Sc1=new Scanner(System.in);
  24. System.out.println("Enter Non Terminals & Terminals:\t");
  25. for(i=0;i<k;i++)
  26. {
  27. Str[i]=Sc1.nextLine();
  28. }
  29.  
  30. System.out.println("\nProductions:\t");
  31. for(i=0;i<m;i++)
  32. {
  33. System.out.println(prod[i]);
  34. }
  35.  
  36. //Ist Matrix
  37. int[][] Ist=new int[k][k];
  38. for(i=0;i<k;i++)
  39. {
  40. for(j=0;j<k;j++)
  41. {
  42. for(n=0;n<m;n++)
  43. {
  44. if((Str[i].charAt(0)==prod[n].charAt(0)) && (Str[j].charAt(0)==prod[n].charAt(3)))
  45. {
  46. Ist[i][j]=1;
  47. }
  48. else{}
  49. }
  50.  
  51. }
  52. }
  53. System.out.println("\nFirst Matrix-\n");
  54. Printer(Ist,Str);
  55.  
  56. //Ist+ matrix
  57. int[][] IstPlus=new int[k][k];
  58. for(i=0;i<k;i++)
  59. {
  60. for(j=0;j<k;j++)
  61. {
  62. IstPlus[i][j]=Ist[i][j];
  63. }
  64. }
  65.  
  66. for(i=0;i<k;i++)
  67. {
  68. for(j=0;j<k;j++)
  69. {
  70. if(IstPlus[j][i]==1)
  71. {
  72. for(n=1;n<k;n++)
  73. {
  74. IstPlus[j][n] = IstPlus[j][n] | IstPlus[i][n];
  75. }
  76. }
  77. }
  78. }
  79. System.out.println("\nfirst+ matrix-\n");
  80. Printer(IstPlus,Str);
  81.  
  82. //Ist*
  83. int[][] IstStar=new int[k][k];
  84. for(i=0;i<k;i++)
  85. {
  86. for(j=0;j<k;j++)
  87. {
  88. IstStar[i][j]=IstPlus[i][j];
  89. if(i==j)
  90. IstStar[i][j]=1;
  91. }
  92. }
  93. System.out.println("\nFirst Matrix-\n");
  94. Printer(IstStar,Str);
  95.  
  96. //Last
  97. int[][] Last=new int[k][k];
  98. for(i=0;i<k;i++)
  99. {
  100. for(j=1;j<k;j++)
  101. {
  102. for(n=0;n<m;n++)
  103. {
  104. if(prod[n].length()==4)
  105. {
  106. if((Str[i].charAt(0)==prod[n].charAt(0)) && (Str[j].charAt(0)==prod[n].charAt(3)))
  107. Last[i][j]=1;
  108. }
  109. if(prod[n].length()==5)
  110. {
  111. if((Str[i].charAt(0)==prod[n].charAt(0)) && (Str[j].charAt(0)==prod[n].charAt(4)))
  112. Last[i][j]=1;
  113. }
  114. if(prod[n].length()==6)
  115. {
  116. if((Str[i].charAt(0)==prod[n].charAt(0)) && (Str[j].charAt(0)==prod[n].charAt(5)))
  117. Last[i][j]=1;
  118. }
  119. }
  120. }
  121. }
  122. System.out.println("\nLast matrix-\n");
  123. Printer(Last,Str);
  124.  
  125. //Last+
  126. int[][] LastPlus=new int[k][k];
  127. for(i=0;i<k;i++)
  128. {
  129. for(j=0;j<k;j++)
  130. {
  131. LastPlus[i][j]=Last[i][j];
  132. }
  133. }
  134.  
  135. for(i=0;i<k;i++)
  136. {
  137. for(j=0;j<k;j++)
  138. {
  139. if(LastPlus[j][i]==1)
  140. {
  141. for(n=1;n<k;n++)
  142. {
  143. LastPlus[j][n] = LastPlus[j][n] | LastPlus[i][n];
  144. }
  145. }
  146. }
  147. }
  148. System.out.println("\nLast+ matrix-\n");
  149. Printer(LastPlus,Str);
  150.  
  151. //last* matrix
  152. int[][] LastStar=new int[k][k];
  153. for(i=0;i<k;i++)
  154. {
  155. for(j=0;j<k;j++)
  156. {
  157. LastStar[i][j]=LastPlus[i][j];
  158. if(i==j)
  159. LastStar[i][j]=1;
  160. }
  161. }
  162. System.out.println("\nLast* matrix-:\n");
  163. Printer(LastStar,Str);
  164.  
  165. //Equal matrix
  166. int[][] Equal=new int[k][k];
  167. for(i=0;i<k;i++)
  168. {
  169. for(j=0;j<k;j++)
  170. {
  171. for(n=0;n<m;n++)
  172. {
  173. if(prod[n].length()==6)
  174. {
  175. if(prod[n].charAt(3)==Str[i].charAt(0) && prod[n].charAt(4)==Str[j].charAt(0))
  176. Equal[i][j]=1;
  177. if(prod[n].charAt(4)==Str[i].charAt(0) && prod[n].charAt(5)==Str[j].charAt(0))
  178. Equal[i][j]=1;
  179. }
  180. if(prod[n].length()==5)
  181. {
  182. if(prod[n].charAt(3)==Str[i].charAt(0) && prod[n].charAt(4)==Str[j].charAt(0))
  183. Equal[i][j]=1;
  184. }
  185. }
  186. }
  187. }
  188. System.out.println("\nEqual matrix-\n");
  189. Printer(Equal,Str);
  190.  
  191. //Less than matrix
  192. int[][] Less=new int[k][k];
  193. for(i=0;i<k;i++)
  194. {
  195. for(j=0;j<k;j++)
  196. {
  197. for(n=01;n<k;n++)
  198. {
  199. Less[i][j] = Less[i][j] | (Equal[i][n] * IstPlus[n][j]);
  200. }
  201. }
  202. }
  203. System.out.println("\nLess than matrix-\n");
  204. Printer(Less,Str);
  205.  
  206. //Greater than matrix
  207. int[][] LastPT=new int[k][k];
  208. int[][] Great=new int[k][k];
  209. String[][] GreatSym=new String[k][k];
  210. int[][] Great1=new int[k][k];
  211. for(i=0;i<k;i++)
  212. {
  213. for(j=0;j<k;j++)
  214. {
  215. LastPT[i][j]=LastPlus[j][i];
  216. }
  217. }
  218. for(i=0;i<k;i++)
  219. {
  220. for(j=0;j<k;j++)
  221. {
  222. for(n=0;n<k;n++)
  223. {
  224. Great1[i][j]=Great1[i][j]|(LastPT[i][n]*Equal[n][j]);
  225. }
  226. }
  227. }
  228. for(i=0;i<k;i++)
  229. {
  230. for(j=0;j<k;j++)
  231. {
  232. for(n=0;n<k;n++)
  233. {
  234. Great[i][j]=Great[i][j]|(Great1[i][n]*IstStar[n][j]);
  235. }
  236. }
  237. }
  238. for(i=0;i<k;i++)
  239. {
  240. for(j=0;j<k;j++)
  241. {
  242. if(Great[i][j]==1)
  243. GreatSym[i][j]=">";
  244. else
  245. GreatSym[i][j]="0";
  246. }
  247. }
  248. System.out.println("\nGreater than matrix-\n");
  249. Printer(GreatSym,Str);
  250.  
  251. //SPM matrix
  252. String[][] SPMat=new String[k][k];
  253. for(i=0;i<k;i++)
  254. {
  255. for(j=0;j<k;j++)
  256. {
  257. if(Equal[i][j]==1)
  258. SPMat[i][j]="=";
  259. else if(Less[i][j]==1)
  260. SPMat[i][j]="<";
  261. else if(Great[i][j]==1)
  262. SPMat[i][j]=">";
  263. else
  264. SPMat[i][j]="0";
  265. }
  266. }
  267. System.out.println("\nSPM matrix-\n");
  268. Printer(SPMat,Str);
  269. }
  270. public void Printer(int[][] f,String[] s)
  271. {
  272. System.out.print(" ");
  273. for(j=0;j<k;j++)
  274. {
  275. if(s[j]!=null)
  276. System.out.print(s[j] + " ");
  277. else
  278. System.out.print(" ");
  279. }
  280. for(i=0;i<k;i++)
  281. {
  282. System.out.print("\n" + s[i]);
  283. for(j=0;j<k;j++)
  284. {
  285. System.out.print(" " + f[i][j]);
  286. }
  287. }
  288. }
  289. public void Printer(String[][] f,String[] s)
  290. {
  291.  
  292. System.out.print(" ");
  293. for(j=0;j<k;j++)
  294. {
  295. if(s[j]!=null)
  296. System.out.print(s[j] + " ");
  297. else
  298. System.out.print(" ");
  299. }
  300. for(i=0;i<k;i++)
  301. {
  302. System.out.print("\n" + s[i]);
  303. for(j=0;j<k;j++)
  304. {
  305. System.out.print(" " + f[i][j]);
  306. }
  307. }
  308. }
  309.  
  310.  
  311.  
  312.  
  313. }
  314.  
  315. public class SPMatrix
  316. {
  317. public static void main(String args[])
  318. {
  319. SPM SPMat=new SPM();
  320. SPMat.Mat();
  321. }
  322.  
  323.  
  324. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement