我正在尝试将自定义语言转换为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
带到我的眼前,但我不知道/了解他们做了什么以及我是否应该使用它们。
我应该遵循哪条路径?