Advertisement
Guest User

Untitled

a guest
Oct 28th, 2016
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.04 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3. public class LeksickiAnalizator {
  4. public static void main(String[] args) {
  5.  
  6. // String line;
  7. int brRetka = 0;
  8. int slovo = 0;
  9. String oznaka = null;
  10. int brojac = 0;
  11.  
  12. Scanner sc = new Scanner(System.in);
  13. System.out.println("Unesite program koji želite leksički analizirati: ");
  14.  
  15. String input;
  16. String[] splitInput;
  17.  
  18. while (sc.hasNextLine()) {
  19.  
  20. input = sc.nextLine();
  21. splitInput = input.split("[ \t\n]");
  22. brRetka++;
  23. int brojac1 = 0;
  24. for (int i = 0; i < splitInput.length; i++) {
  25.  
  26. String jedinka = splitInput[i];
  27.  
  28. char[] charArray = jedinka.toCharArray();
  29. int len = charArray.length;
  30.  
  31. if (jedinka.contains("//")) {
  32. break;
  33.  
  34. } else if (jedinka.length() == 1) {
  35.  
  36. switch (jedinka) {
  37. case "+":
  38. oznaka = "OP_PLUS";
  39. break;
  40. case "-":
  41. oznaka = "OP_MINUS";
  42. break;
  43. case "*":
  44. oznaka = "OP_PUTA";
  45. break;
  46. case "/":
  47. oznaka = "OP_DIJELI";
  48. break;
  49. case "(":
  50. oznaka = "L_ZAGRADA";
  51. break;
  52. case ")":
  53. oznaka = "D_ZAGRADA";
  54. }
  55.  
  56. if (Character.isLetter(charArray[0])) {
  57. oznaka = "IDN";
  58. } else if (Character.isDigit(charArray[0])) {
  59. oznaka = "BROJ";
  60. }
  61.  
  62. } else if (jedinka.length() == 2) {
  63.  
  64. switch (jedinka) {
  65. case "za":
  66. oznaka = "KR_ZA";
  67. break;
  68. case "od":
  69. oznaka = "KR_OD";
  70. break;
  71. case "do":
  72. oznaka = "KR_DO";
  73. break;
  74. case "az":
  75. oznaka = "KR_AZ";
  76. break;
  77.  
  78. }
  79.  
  80. } else
  81.  
  82. {
  83.  
  84. int br = 0;
  85.  
  86. for (int j = 0; j < len; j++) {
  87. if (j == 0 && (charArray[0] == '-' || Character.isDigit(charArray[0]))) {
  88. br++;
  89. } else if (Character.isDigit(charArray[j])) {
  90. br++;
  91. } else if (Character.isLetter(charArray[j])) {
  92. slovo++;
  93. }
  94.  
  95. }
  96.  
  97. int broji = 0;
  98. for (i = 0; i < jedinka.length(); i++) {
  99. while (Character.isDigit(jedinka.charAt(broji)) || Character.isLetter(jedinka.charAt(broji))) {
  100. jedinka = jedinka.substring(0, i);
  101. oznaka = "IDN";
  102. }
  103.  
  104. }
  105. System.out.print("IDN ");
  106. System.out.print(brRetka++);
  107. System.out.print(jedinka);
  108.  
  109. System.out.print("OP_PRIDRUZI ");
  110. System.out.print(brRetka + " ");
  111.  
  112. System.out.print("=");
  113.  
  114. if (br == len) {
  115. oznaka = "BROJ";
  116. } else if (slovo <= len && (br + slovo) == len && Character.isLetter(charArray[0])) {
  117. oznaka = "IDN";
  118. } else if (Character.isDigit(charArray[0]) && slovo == (len - 1)) {
  119. oznaka = "BROJ";
  120. brojac++;
  121. }
  122.  
  123. if (brojac1 > 0) {
  124. break;
  125. }
  126. }
  127. System.out.print(oznaka);
  128. System.out.print(" " + brRetka);
  129. if (brojac > 0) {
  130. System.out.print(" " + charArray[0]);
  131. System.out.print("IDN");
  132. System.out.print(" " + brRetka);
  133. System.out.println(" " + jedinka.substring(1));
  134.  
  135. } else {
  136. System.out.println(" " + jedinka);
  137. }
  138.  
  139. }
  140.  
  141. }
  142.  
  143. sc.close();
  144. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement