0

从理论上讲,是否可以使用冗长的“HTML 样式”标记来表示 Java 编程语言的语法,然后将其转换为普通的 Java 代码?我认为这种类型的修改语法可能会提高代码的可读性,但可能会牺牲简洁性。

一个由两个类组成的示例程序,使用普通的 Java 语法:

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是一种具有 HTML 或 XML 样式语法的语言,用于构建 Web 应用程序。

我认为他们认为 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 servlet 类使用的变量。我们已经从上面的标签中取出了这些,以便可以从其他方法访问它们,并且它们不会在每次调用时都实例化。新的变量声明现在如下所示:

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

在大多数情况下,由于 servlet 线程问题,最好使用方法范围的变量。这意味着要么在其他方法中声明变量,要么直接在服务方法的主体中(即,仅在普通标签内)。有关线程和 servlet 的更多详细信息,请参阅 servlet 开发人员指南中的 HTTP servlet 中的线程问题。

他的示例说明了如何在从主块调用的 JHTML 文件中定义一个类方法。

简短的方法 getCon() 初始化 JDBC Connection 对象,该对象在 servlet 的其他地方使用。请注意,我们将方法的工作包装在 try 块中,因此失败不会破坏 servlet。

<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

是的,这是可能的,但不要——这真的很可怕。

像这样的语言的另一个例子是蚂蚁。

于 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 回答