Така че това, което се опитвам да направя тук, е да получа текста от JTextArea ta, като използвам метода String code = ta.getText(); ta се намира в класа TextIDE и е деклариран като public static JTextArea ta = new JTextArea();
След това обаче извлякох текста, който е въведен от потребителя, който искам да го направя в масив от символи, така че използвам метода code.toCharrArray(); След това в метода compileText използвам оператора for, за да потърся буквата „p“ и ако я намеря, извиквам метода p() и изпращам къде е броячът i и действителния масив от знаци, за да мога продължете търсенето на буквата „r“ и правя това, докато класът намери думата print. Всеки път, когато го направи, трябва да добави друга JTextArea, която работи като конзола, разположена в клас, наречен Listener, така че използвам Listener.c.jt1.append(s); като има предвид, че s е равно на всичко, което идва след print до момента, в който намира точка и запетая ';'.
Но не работи, не получавам грешка, така че предполагам, че тук има логическа грешка... Благодаря за всяка помощ!! :)
public class Compiler {
String code = TextIDE.ta.getText(); //Gets the text that was inputted by the user
public Compiler(){ //Constructor
if(!(code.endsWith("programEnd"))){
Listener.c.jt2.append("Error - Code must end with line: programEnd on the last line");
}else{
compileText(code, 0);
}
}
public void compileText(String code, int start){ //Starts the compiling
char[] codeArray = code.toCharArray();
System.out.println(codeArray.length);
for(int i = start; i < codeArray.length; i++){ //Looks for character 'p'
switch(codeArray[i]){
case 'p': p(codeArray, ++i);
System.out.println("p");
break;
}
}
}
public void p(char[] codeArray, int start){
for(int i = start; i < codeArray.length; i++){
switch(codeArray[i]){
case 'r': r(codeArray, ++i);
System.out.println("r");
break;
}
}
}
public void r(char[] codeArray, int start){
for(int i = start; i < codeArray.length; i++){
switch(codeArray[i]){
case 'i': i(codeArray, ++i);
System.out.println("i");
break;
}
}
}
public void i(char[] codeArray, int start){
for(int i = start; i < codeArray.length; i++){
switch(codeArray[i]){
case 'n': n(codeArray, ++i);
System.out.println("n");
break;
}
}
}
public void n(char[] codeArray, int start){
for(int i = start; i < codeArray.length; i++){
switch(codeArray[i]){
case 't': t(codeArray, ++i);
System.out.println("t");
break;
}
}
}
public void t(char[] codeArray, int start){
String s = "";
for(int i = start; i < codeArray.length; i++){
if(!(codeArray[i] == ';')){
s += codeArray[i];
}else{
Listener.c.jt1.append(s);
compileText(code, ++i);
break;
}
}
}
}