我正在尝试将自定义语言转换为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
,但我真的不知道/理解它们的作用以及我是否应该使用它们。
我应该走哪条路?