语义分析器实现
语法树
- 由语法分析器输出
- 遍历该树即可执行语言功能
- 隐式语义计算:耦合在语法分析器中
渲染真实 DOM
参考代码
function trim (str) { return str.replace(/^<|>$/g, '') }
function renderNode (target, nodes) {
nodes.forEach(node => {
let newNode = document.createElement(trim(node.type))
if (!node.val) newNode = renderNode(newNode, node.children)
else newNode.innerHTML = node.val
target.appendChild(newNode)
})
return target
}
function render (dom, targetId) {
let target = document.getElementById(targetId)
target.innerHTML = ''
renderNode(target, dom.children)
}