マンゴーというおもちゃのプログラミング言語を作ろうとしています。私は最初にそれをJavaにコンパイルし、Javaとしてコンパイルして実行したかったのです。しかし、私はそれが非常に遅いアプローチであることに気づきました。そこで、Javaバイトコードにコンパイルして実行することにしました。私はマンゴーコードと同等のJavaコードを与えました。マンゴーコードをバイトコード付きの同等の.classファイルにコンパイルするのを手伝ってくれませんか。
test.mangoで
println("Hello World!")
等しいだろう
public class test
{
public static void main(String[] args){
System.out.println("Hello World!")
}
}
test.javaでjavapを使用して、次のバイトコードを生成しました
Compiled from "test.java"
public class test extends java.lang.Object{
public test();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
3: ldc #3; //String Hello World!
5: invokevirtual #4; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
8: return
}
しかし、これをtest.classとして保存して実行すると、コマンドプロンプトで次のエラーが発生します
java.lang.ClassFormatError: Incompatible magic value number 1131375984
私はJavaプログラミングの2学期しか取っていません。私の教授は、Javaバイトコードを使用してJVM上にプログラミング言語を書くことができると私に言いました。だから私だけが試してみたかったのです。私はプログラミング言語の設計の経験がありません。ですから、どんな助けでも本当に役に立ちます。手がかりを得るためにJava仕様を調べましたが、何も得られませんでした。