java - 如何使用 BufferedReader 将行放入 ArrayList 中然后执行它们?

标签 java arraylist bufferedreader filereader tokenize

我正在尝试编写一个程序,该程序将执行文件中的简化编程语言语句并生成输出。文件中有几行将给出诸如变量=表达式、PRINT变量、GOTO'x line'、IF变量IS值THEN ....等语句。END行是最后一行,应该停止程序。

我使用空格作为分隔符,并且知道我需要使用 BufferedReader,然后使用标记器来分割这些行。我正在努力解决的是如何在拆分后存储所有这些语句/变量?并行 ArrayList 是一个好方法吗?如何分别读取每个变量和表达式并对其进行评估?这是我到目前为止所拥有的:

public void processProgram() {
    String fileName = getFileName();
    if(fileName != null)
        processProgram();
    String line = null;
    ArrayList<String> name = new ArrayList<String>();
    ArrayList<Integer> value = new ArrayList<Integer>();
    try (BufferedReader br = new BufferedReader(new FileReader(getFileName())))
    {

        while((line = br.readLine()) != null){
            name.add(line);
        }
    }  catch (IOException e) {
        e.printStackTrace();
    } 

    StringTokenizer tok = new StringTokenizer(line);
    while (tok.hasMoreTokens()) {
        String token = tok.nextToken(" ");

    }


}

我是一个完全的初学者,所以任何方向都会很棒。

最佳答案

用于解析指令的 Java 8 流

使用这样的代码:

Files.lines(Paths.get("Test.txt"))
                .map(p -> p.toUpperCase())
                .collect(Collectors.toList());

您可以获取文件中的所有行,对其进行转换(在本示例中,我只是将字符串设为大写,您可能希望将它们转换为可用的指令,但是您将它们存储在内部),然后将结果项存储到可供使用的列表中。

处理列表中的项目

您需要一个指令指针,然后根据该点的指令,您可以跟随下一条指令、跳转到另一个点或终止执行。

关于java - 如何使用 BufferedReader 将行放入 ArrayList 中然后执行它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49161097/

相关文章:

java - 在 Apache CXF JAX-RS 中,如何打开 AUTO_REDIRECT_ALLOW_REL_URI 标志?

java - Process.waitFor()、线程和 InputStreams

java - 流标记器、空格

java - 数组比数组列表快吗?

java - 是否可以以这样的方式编写一个文本文件,当 Java 编译器读取时,它会在某些点添加换行符?

java - 如何使用 Fortify 软件安全中心 REST API 下载保存的报告?

java - 如何使用 JSTL 在 jsp 页面中迭代 ArrayList<HashMap<String, String>>

java - 在 Android 中获取 ArrayList<DMatch> 的大小

java - 独立的Java控制台输入法?

java - 将文本文件读取到对象的对象数组中?