0

理論的には、冗長な「HTML スタイル」のマークアップを使用して Java プログラミング言語の構文を表現し、それを通常の Java コードに変換することは可能でしょうか? このタイプの変更された構文は、おそらく簡潔さを犠牲にして、コードの可読性を向上させる可能性があると思います。

通常の Java 構文を使用した、2 つのクラスで構成されるサンプル プログラム:

public class HelloWorld{
    public void doStuff(){
        System.out.println("Hello World!");
    }
}

public class MainClass{
    public static void main(String[] args){
        HelloWorld.doStuff();
    }
}

提案された「HTML スタイル」のマークアップを使用した同じプログラム (通常の Java 構文に変換):

<class = "public class HelloWorld">
    <function = "public void doStuff()">
        System.out.println("Hello World!");
    </function>
</class>

<class = "public class MainClass">
    <function = "public static void main(String[] args)">
        HelloWorld.doStuff();
    </function>
</class>
4

4 に答える 4

3

Coldfusionは、Web アプリケーションを構築するための、HTML または XML スタイルの構文を持つ言語です。

彼らは、HTML プログラマーにはなじみがあると主張したと思います (実際、そのタグのいくつかは HTML タグだと思いますが、私は CF の専門家ではありません)。

私がそれを少し見ただけで、将来そのようにコーディングしたいという欲求に圧倒されることはありませんでした。

于 2013-01-14T05:35:36.960 に答える
1

JHTMLのようなものを探していると思います:

このリンクからhttp://docs.oracle.com/cd/E13222_01/wls/docs45/classdocs/API_jhtml.html引用できます:

JHTML ファイル内のタグの間で、変数、メソッド、および内部クラスなどのクラス スコープ オブジェクトを宣言できます。JHTML では、このタイプの Java タグをいくつでも使用できますが、保守性を確保するために、関連する変数を JHTML の先頭でグループ化することをお勧めします。次の例では、HTTP サーブレット クラスで使用されるいくつかの変数を設定します。上記のタグからこれらを取り出して、他のメソッドからアクセスできるようにしました。呼び出しごとにインスタンス化されるわけではありません。新しい変数宣言は次のようになります。

<html>
<java type=class>
String jdbcClass = "weblogic.jdbc.oci.Driver";
String jdbcURL   = "jdbc:weblogic:oracle:goldengate";
String user = "scott";
String password = "";
</java>
</html>

ほとんどの場合、サーブレットのスレッド化の問題により、メソッド スコープの変数を使用することをお勧めします。これは、変数を他のメソッドで宣言するか、サービス メソッドの本体で (つまり、単純なタグ内で) 直接宣言することを意味します。スレッド化とサーブレットの詳細については、サーブレット開発者ガイドの「HTTP サーブレットでのスレッド化の問題」を参照してください。

この例は、メイン ブロックから呼び出される JHTML ファイルでクラス メソッドを定義する方法を示しています。

短いメソッド getCon() は、サーブレットの他の場所で使用される JDBC 接続オブジェクトを初期化します。メソッドの作業を try ブロックでラップしているため、失敗してもサーブレットが壊れないことに注意してください。

<java type=class>
  static final String jdbcClass = 
        "weblogic.jdbc.oci.Driver";
  static final String jdbcURL   = 
        "jdbc:weblogic:oracle:goldengate";
  static final String user      = "scott";
  static final String password  = "tiger";

  protected Connection getCon() {
    Connection conn  = null;
    try { 
      Class.forName(jdbcClass).newInstance();
      conn = DriverManager.getConnection(jdbcURL, 
                                         user, password);
    }
    catch (Exception f) {
    }
    return conn;
  }
</java>

このメソッドは、JHTML 内の他の Java コードから呼び出すことができます。このブロックで宣言されているその他の変数はクラス スコープにあるため、JHTML の任意のブロックからも参照できることに注意してください。

于 2013-01-14T05:31:50.453 に答える
1

はい、可能ですが、できません。本当に恐ろしいことです。

このような言語の別の例は ant です。

于 2013-01-14T05:41:05.160 に答える
1

はい、もちろん可能です。BNF 文法を使用して記述できるすべての言語は、XML マークアップを使用して表現できます。HTML マークアップを使用すると、さらにいくつかのゆがみが生じます (固定語彙があるため、HTML ではより困難ですが、<div class="X">代わりにを使用して回避できます<X>) 。 .

これを行う例は言語ペア XQuery / XQueryX です。ここで、XQueryX は XQuery 言語の XML 表現です。

それが役に立つかどうかは別の問題です。入力と出力の両方が XML である XSLT などの言語に XML ベースの構文を使用することには利点がありますが、冗長性には代償が伴います。

于 2013-01-14T08:33:39.400 に答える