⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.java

📁 java实现的一个pascal编译器
💻 JAVA
字号:
package uk.co.brainycreatures.jpascal;

import uk.co.brainycreatures.jpascal.node.*;
import uk.co.brainycreatures.jpascal.lexer.*;
import uk.co.brainycreatures.jpascal.parser.*;
import uk.co.brainycreatures.jpascal.code.*;
import uk.co.brainycreatures.jpascal.semantic.*;

import java.io.*;

public class Main {
  public static void main(String[] arguments){
    System.out.println("JPascal version 1.3");
    System.out.println("Copyright (c) 1999, 2000 Fidel Viegas.");
    System.out.println();

    if (arguments.length != 1) {
      System.out.println("Usage:");
      System.out.println("  java uk.co.brainycreatures.jpascal.Main file.pas");
      System.exit(1);
    }

    if (!arguments[0].substring(arguments[0].length() - 4,
        arguments[0].length()).equalsIgnoreCase(".pas")) {
      System.out.println("Error: wrong argument " + arguments[0]);
      System.out.println();
      System.out.println("Usage:");
      System.out.println("  java uk.co.brainycreatures.jpascal.Main file.pas");
      System.exit(1);
    }

    try{
      Lexer lexer = new Lexer(
                    new PushbackReader(
                    new BufferedReader(
                    new FileReader(arguments[0])), 1024));
      Parser parser = new Parser(lexer);

      System.out.println("Parsing " + arguments[0]);
      Node ast = parser.parse();

      System.out.println("Checking identifiers of " + arguments[0]);
      // check identifiers
      ast.apply(new IdentifierChecker());

      System.out.println("Type checking " + arguments[0]);
      // check types
      ast.apply(new TypeChecker());

      // Generate Java source code
      System.out.println("Generating " +
         arguments[0].substring(0, arguments[0].length() - 4)+ ".java");
      ast.apply(new JavaSourceGenerator(arguments[0]));
    }
    catch(Exception e){
      System.out.println(e);
    }
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -