カスタム言語を に変換しようとしています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 ブロック内にのみ存在する必要があります。
私は正規表現を使用してパーサーを作成してきましたが、途中で、正規表現は遅く、HTML の生成が高速である必要があるため適切ではない可能性があることに気付きました。これは正規表現の強みの 1 つではありません。
pyparsing
グーグル/サーフィンは私の目に、PLY
、をもたらしますがANTLR
、私はそれらが何をするのか、そしてそれらを使用すべきかどうかを本当に知りません/理解していません.
どの道をたどればいいですか?