Skip to content

Instantly share code, notes, and snippets.

@a7r3
Last active January 30, 2019 05:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save a7r3/9ab4f1729665d5dba8364b177a331cbe to your computer and use it in GitHub Desktop.
Save a7r3/9ab4f1729665d5dba8364b177a331cbe to your computer and use it in GitHub Desktop.
import java.util.*;
import java.io.*;
class Tokenizer {
private static List<String> keywords = new ArrayList<>();
private static List<String> identifiers = new ArrayList<>();
private static List<String> special = new ArrayList<>();
private static List<String> preproc = new ArrayList<>();
private static List<String> brackets = new ArrayList<>();
private static List<String> values = new ArrayList<>();
private static List<String> KEYWORDS;
private static List<String> OPERATORS;
private static List<String> BRAKET;
static {
KEYWORDS = new ArrayList<>();
KEYWORDS.add("void");
KEYWORDS.add("int");
OPERATORS = new ArrayList<>();
OPERATORS.add("+");
OPERATORS.add("-");
OPERATORS.add("=");
BRAKET = new ArrayList<>();
BRAKET.add("{");
BRAKET.add("}");
BRAKET.add("(");
BRAKET.add(")");
}
public static void main(String args[]) throws Exception {
File file = new File(args[0]);
BufferedReader br = new BufferedReader(new FileReader(file));
String st;
int line = 1;
while ((st = br.readLine()) != null) {
/*
Keywords
Identifiers
Constants
Strings
Special Symbols
Operators
*/
System.out.println("In Line #" + line + ": " + st);
line++;
String[] lineElements = st.trim().split(" ");
if (lineElements[0].contains("#")) {
String preproc = String.join("", Arrays.asList(lineElements));
System.out.println("Preprocessor : " + preproc);
continue;
}
for (int i = 0; i < lineElements.length; i++) {
String element = lineElements[i];
if (KEYWORDS.contains(element)) {
keywords.add(element);
System.out.println("Keyword : " + element);
} else if (BRAKET.contains(element)) {
brackets.add(element);
System.out.println("Bracket : " + element):
} else if (OPERATORS.contains(element)) {
operators.add(element):
System.out.println("Operator : " + element);
} else if (element.matches(".*\(.*\)")) {
identifiers.add(element.substring(0, element.indexOf("(")));
System.out.println("Identifier : " + element.substring(0, element.indexOf("("));
} else {
if (element.contains(",")) {
continue;
}
if (element.contains("=")) {
operators.add("=");
System.out.println("Operator: =");
String subElements = element.split("=");
identifiers.add(subElements[0]);
System.out.println("Identifier : " + subElement[0]);
values.add(subElements[1]);
System.out.println("Value : " + subElements[1]);
}
}
}
/*
for (String element : lineElements) {
for (int i = 0; i < element.length(); i++) {
int lastIndex = 0;
if (element.charAt(i) == ' ' && lastIndex == 0) {
keywords.add(element.substring(lastIndex, i));
System.out.println("Keyword : " + element.substring(lastIndex, i));
} else if (element.charAt(i) == '=') {
identifiers.add(element.substring(lastIndex, i));
System.out.println("Identifier : " + element.substring(lastIndex, i));
} else if (element.charAt(i) == ';') {
special.add(";");
System.out.println("Special: ;");
break;
} else if (element.charAt(i) == ',') {
special.add(",");
System.out.println("Special : ,");
} else if (BRAKET.contains(element.charAt(i))) {
special.add(String.valueOf(element.charAt(i)));
System.out.println("Bracket : " + String.valueOf(element.charAt(i)));
}
lastIndex = i;
}
*/
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment