Guest User

Untitled

a guest
Jun 19th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.71 KB | None | 0 0
  1. import java.util.Scanner;
  2. public class PascalDeclParser {
  3.  
  4.     public static void main(String[] args)
  5.     {
  6.         DisplayWelcomeMessage();
  7.         String input = getUserInput();
  8.         String input2 = "";
  9.         for (int i = 0; i < input.length(); i ++)
  10.         {
  11.             if (input.charAt(i) != ' ')
  12.                 input2 += input.charAt(i);
  13.         }
  14.         input = input2;
  15.         if(input.charAt(input.length()-1) == ';')
  16.         {
  17.             int DeclarationSize = getDSize(input);
  18.             int NumofVar = GetNumVariableNames(input);
  19.             String Types[] = GetTypes(input, DeclarationSize);
  20.             input = RemoveTypes(input2);
  21.             LoadVariables(NumofVar, input, DeclarationSize, Types);
  22.         }
  23.         else
  24.         {
  25.             System.out.println("You need a semi-colon at the end!");
  26.         }
  27.     }
  28.  
  29.     private static String RemoveTypes(String input) {
  30.         String tempstring2 = "";
  31.         String input2 = "";
  32.         for(int i = 0; i < input.length(); i++)
  33.         {
  34.             if((input.charAt(i) == ':' || (tempstring2.length() > 0)) && (input.charAt(i) != ';'))
  35.             {
  36.                 tempstring2 = tempstring2 + input.charAt(i);
  37.             }
  38.             else
  39.             {
  40.                 tempstring2 = "";
  41.                 input2 = input2 + input.charAt(i);
  42.             }
  43.         }
  44.         return input2;
  45.     }
  46.  
  47.     public static  String[] GetTypes(String input, int declarationSize)
  48.     {
  49.         String[] Types = new String[declarationSize];
  50.         int k = 0;
  51.         int start = 0;
  52.         int end = 0;
  53.         for(int i = 0; i < input.length(); i++)
  54.         {
  55.             if(input.charAt(i) == ':')
  56.             {
  57.                 start = i + 1;
  58.             }
  59.             if(input.charAt(i) == ';')
  60.             {
  61.                 end = i;
  62.                 Types[k] = input.substring(start, end);
  63.                 k = k + 1;
  64.             }
  65.         }
  66.         return Types;
  67.     }
  68.  
  69.     public static void PrintDeclaration(String[] variables, String[] breaks, String[] Types)
  70.     {
  71.         System.out.println("----------------");
  72.         int k = 1;
  73.         int r = 1;
  74.         int types1 = 0;
  75.         System.out.println("Declaration Statement: " + k);
  76.         for(int i = 0; i < variables.length; i++)
  77.         {
  78.             System.out.println("Variable " + r +  ": " + variables[i] + " (" + Types[types1] +  ")");
  79.             r = r + 1;
  80.             for(int j = 0; j < breaks.length; j++)
  81.             {
  82.                 if(variables[i] == breaks[j])
  83.                 {
  84.                     System.out.println("");
  85.                     k = k + 1;
  86.                     types1 = types1 + 1;
  87.                     System.out.println("Declaration Statement: " + k);
  88.                     r = 1;
  89.                 }
  90.             }
  91.         }
  92.         System.out.println();
  93.     }
  94.  
  95.     private static void LoadVariables(int ArraySize, String input, int DeclarationSize, String[] types)
  96.     {
  97.         String Variables[] = new String[ArraySize];
  98.         String[] Breaks = new String[DeclarationSize-1];
  99.         int j = 0;
  100.         int k = 0;
  101.         String tempstring = "";
  102.         System.out.println();
  103.         for(int i = 0; i < input.length(); i++)
  104.         {
  105.             if(input.charAt(i) == ';' && (k < (DeclarationSize-1)))
  106.             {
  107.                 Breaks[k] = tempstring;
  108.                 k = k + 1;
  109.             }
  110.             if(input.charAt(i) == ',' || input.charAt(i) == ';'  ||  input.charAt(i) == input.length())
  111.             {
  112.  
  113.                 Variables[j] = tempstring.trim();
  114.                 j = j+1;
  115.  
  116.                 tempstring = "";
  117.             }
  118.             else
  119.             {
  120.                 tempstring = tempstring + input.charAt(i);
  121.             }
  122.         }
  123.         PrintDeclaration(Variables, Breaks, types);
  124.         System.out.println("\n \n \n \n");
  125.     }
  126.  
  127.     private static int GetNumVariableNames(String input)
  128.     {
  129.         int size = 0;
  130.         for(int i = 0; i < (input.length()); i++)
  131.         {
  132.             if(input.charAt(i) == ',' || input.charAt(i) == ';' )
  133.                 size = size + 1;
  134.         }
  135.         return size;
  136.     }
  137.     private static int getDSize(String input)
  138.     {
  139.         int size = 0;
  140.         for(int i = 0; i < input.length(); i++)
  141.         {
  142.             if(input.charAt(i) == ';')
  143.             {
  144.                 size = size + 1;
  145.             }
  146.         }
  147.         return size;
  148.     }
  149.  
  150.     private static String getUserInput()
  151.     {
  152.         Scanner stdIn = new Scanner(System.in);
  153.         String input = stdIn.nextLine();
  154.         return input;
  155.     }
  156.  
  157.     static void DisplayWelcomeMessage()
  158.     {
  159.         System.out.println("Welcome to the Pascal declaration parser! \n" +
  160.                 "Enter one line of Pascal-style declarations");
  161.     }
  162. }
Add Comment
Please, Sign In to add comment