1

我正在尝试将自定义语言转换为html.
下面的例子应该很直观——不用解释就很容易理解:
这个输入文件...

css:
    define(style):
        if default:
            background-color=black
        if hovered:
            background-color=blue
    apply(style, tag=h1, tag=h2)

html:
    body(id="hello"):
        paragraph(id=demo):
            "This is a paragraph.
        input(type="button", onclick="displayDate()"):
            "Display Date

js:
    def displayDate():
        document.getElementById("demo").innerHTML=Date()

……应该翻译成……

h1 {
    background-color: black
}
h1 :hover {
    background-color: blue
}
id {
    background-color=black
}
id :hover {
    background-color=blue
}

<html>
    <body id="hello">
        <p id="demo">This is a paragraph.</p>
        <input type="button", onclick="displayDate()">Display Date</button>
    </body>

    <script>
        function displayDate() {
            document.getElementById("demo").innerHTML=Date()
        }
    </script>
</html>

输入文件有以下规则:

  • 它具有与 Python 相同的基于缩进的语法,因此应该进行缩进检查。

  • 以引号开始的行被解释为内容。

  • 某些语句应该只存在于某些上下文中,例如,define 语句应该只存在于 css 块中。

我一直在使用 Regex 编写我的解析器,但在中途意识到 Regex 很慢,并且可能不够,因为 HTML 的生成应该很快,这不是 Regex 的优势之一。

谷歌搜索/冲浪给我带来了pyparsing, PLY, ANTLR,但我真的不知道/理解它们的作用以及我是否应该使用它们。

我应该走哪条路?

4

0 回答 0