Итак, что я пытаюсь здесь сделать, так это получить текст из JTextArea ta с помощью метода String code = ta.getText(); ta расположен в классе TextIDE и объявлен как public static JTextArea ta = new JTextArea();
Однако после этого я получил текст, введенный пользователем, я хочу превратить его в массив символов, поэтому я использую метод code.toCharrArray(); После этого в методе compileText я использую оператор for для поиска буквы «p», и если она найдена, я вызываю метод p() и отправляю туда, где был счетчик i и фактический массив символов, поэтому я могу продолжаю поиск буквы «р» и делаю это до тех пор, пока класс не найдет слово «печать». Всякий раз, когда это происходит, он должен добавить еще один JTextArea, который работает как консоль, расположенный в классе с именем Listener, поэтому я использую Listener.c.jt1.append(s); тогда как s равно тому, что идет после печати до точки, где она находит точку с запятой ';'.
Но это не работает, я не получаю ошибок, поэтому я предполагаю, что здесь есть логическая ошибка... Спасибо за любую помощь!! :)
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;
}
}
}
}