Javaを使用して字句解析器を実装しています。「String palavras_reservadas」の中には、変数の名前付けなどに使用できないすべての予約語があります。マッチャーは、入力コード内の予約語を見つける責任があります。入力コードのすべての行を、「vetor1」という ArrayList の別の位置に配置しました。この「vetor1」は、予約語が 1 つ見つかった時点で分割したいと考えています。たとえば、入力として次のコードがあります。
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;
(またはそのようなもの)。これを行うために分割を使用できますか?
これは私がこれまでに持っているものです:
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);
}
}
}