Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Scanner;
- public class PascalDeclParser {
- public static void main(String[] args)
- {
- DisplayWelcomeMessage();
- String input = getUserInput();
- String input2 = "";
- for (int i = 0; i < input.length(); i ++)
- {
- if (input.charAt(i) != ' ')
- input2 += input.charAt(i);
- }
- input = input2;
- if(input.charAt(input.length()-1) == ';')
- {
- int DeclarationSize = getDSize(input);
- int NumofVar = GetNumVariableNames(input);
- String Types[] = GetTypes(input, DeclarationSize);
- input = RemoveTypes(input2);
- LoadVariables(NumofVar, input, DeclarationSize, Types);
- }
- else
- {
- System.out.println("You need a semi-colon at the end!");
- }
- }
- private static String RemoveTypes(String input) {
- String tempstring2 = "";
- String input2 = "";
- for(int i = 0; i < input.length(); i++)
- {
- if((input.charAt(i) == ':' || (tempstring2.length() > 0)) && (input.charAt(i) != ';'))
- {
- tempstring2 = tempstring2 + input.charAt(i);
- }
- else
- {
- tempstring2 = "";
- input2 = input2 + input.charAt(i);
- }
- }
- return input2;
- }
- public static String[] GetTypes(String input, int declarationSize)
- {
- String[] Types = new String[declarationSize];
- int k = 0;
- int start = 0;
- int end = 0;
- for(int i = 0; i < input.length(); i++)
- {
- if(input.charAt(i) == ':')
- {
- start = i + 1;
- }
- if(input.charAt(i) == ';')
- {
- end = i;
- Types[k] = input.substring(start, end);
- k = k + 1;
- }
- }
- return Types;
- }
- public static void PrintDeclaration(String[] variables, String[] breaks, String[] Types)
- {
- System.out.println("----------------");
- int k = 1;
- int r = 1;
- int types1 = 0;
- System.out.println("Declaration Statement: " + k);
- for(int i = 0; i < variables.length; i++)
- {
- System.out.println("Variable " + r + ": " + variables[i] + " (" + Types[types1] + ")");
- r = r + 1;
- for(int j = 0; j < breaks.length; j++)
- {
- if(variables[i] == breaks[j])
- {
- System.out.println("");
- k = k + 1;
- types1 = types1 + 1;
- System.out.println("Declaration Statement: " + k);
- r = 1;
- }
- }
- }
- System.out.println();
- }
- private static void LoadVariables(int ArraySize, String input, int DeclarationSize, String[] types)
- {
- String Variables[] = new String[ArraySize];
- String[] Breaks = new String[DeclarationSize-1];
- int j = 0;
- int k = 0;
- String tempstring = "";
- System.out.println();
- for(int i = 0; i < input.length(); i++)
- {
- if(input.charAt(i) == ';' && (k < (DeclarationSize-1)))
- {
- Breaks[k] = tempstring;
- k = k + 1;
- }
- if(input.charAt(i) == ',' || input.charAt(i) == ';' || input.charAt(i) == input.length())
- {
- Variables[j] = tempstring.trim();
- j = j+1;
- tempstring = "";
- }
- else
- {
- tempstring = tempstring + input.charAt(i);
- }
- }
- PrintDeclaration(Variables, Breaks, types);
- System.out.println("\n \n \n \n");
- }
- private static int GetNumVariableNames(String input)
- {
- int size = 0;
- for(int i = 0; i < (input.length()); i++)
- {
- if(input.charAt(i) == ',' || input.charAt(i) == ';' )
- size = size + 1;
- }
- return size;
- }
- private static int getDSize(String input)
- {
- int size = 0;
- for(int i = 0; i < input.length(); i++)
- {
- if(input.charAt(i) == ';')
- {
- size = size + 1;
- }
- }
- return size;
- }
- private static String getUserInput()
- {
- Scanner stdIn = new Scanner(System.in);
- String input = stdIn.nextLine();
- return input;
- }
- static void DisplayWelcomeMessage()
- {
- System.out.println("Welcome to the Pascal declaration parser! \n" +
- "Enter one line of Pascal-style declarations");
- }
- }
Add Comment
Please, Sign In to add comment