Я использую лексический анализатор с использованием Java. Внутри «String palavras_reservadas» У меня есть все зарезервированные слова, которые нельзя использовать для обозначения переменных и тому подобного. Matcher отвечает за поиск этих зарезервированных слов внутри моего кода ввода. Я поместил все строки из моего кода ввода в другое положение ArrayList под названием «vetor1». Я хочу разбить этот «vetor1», когда найду одно зарезервированное слово. Например, у меня есть этот код, как мой вход:Использование split в Java
a = b + c;
if (a > b)
c = c + b;
Мой код будет поместить каждую строку в другую позицию массива:
v[0] = a = b + c;
v[1] = if (a > b)
v[2] = c = c + b;
и что я хочу сделать, это:
v[0] = a = b + c;
v[1] = if
v[2] = (a > b)
v[3] = c = c + b;
(или что-то в этом роде). Могу ли я использовать split для этого?
Это то, что я до сих пор:
public class AnalisadorLexico {
public static void main(String args[]) throws FileNotFoundException {
List<String> vetor1 = new ArrayList<String>();
File text = new File("/Users/Mvaguimaraes/Desktop/codigo.marcos");
Scanner scnr = new Scanner(text);
String palavras_reservadas = "fim-se|enquanto|então|se|senão|para|de|até|faça|fim-para|fim-enquanto";
Pattern r = Pattern.compile(palavras_reservadas);
int i = 0;
while(scnr.hasNextLine())
{
String line = scnr.nextLine();
vetor1.add(line);
Matcher m = r.matcher(scnr.nextLine());
if (m.find()) {
System.out.println("Found value: " + m.group());
}
}
for(i = 0; i<vetor1.size(); i++)
{
String value = vetor1.get(i);
System.out.println(value);
}
}
}
Есть ли другой способ сделать это без использования split? –
, вы можете сделать это, проверив ключевые слова (например, если) с помощью regex или string.substring (0,3) .equals ("if"), а затем разделите их вручную подстрокой следующим образом: если ваша позиция в списке равна k вы делаете list.set (k, string.substring (0,3)) и list.add (k + 1, string.substring (3, string.length) – Dix
В "m.group()" У меня есть строка для разделите последовательность. Итак, как мне ее использовать, чтобы разделить vetor1 в моем коде? –