Skip to content

HVML 扩展实验

rcy edited this page Nov 7, 2020 · 5 revisions

HVML 解释器实现

HVML(the Hybrid Virtual Markup Language)是一种全新的、通用的、数据驱动的、虚拟标记语言。HVML 主要用于基于外部数据生成并更新实际的 HTML/XML 文档。在设计上,HVML 和传统的脚本语言有很大的不同,由于抽象层次高,为这类语言开发解释器有一定的挑战。

背景

https://github.com/HVML/hvml-docs

进度

Week 0

~10.31

在过去的一周里,我完成了对 HVML 的初步调研,在没有联系其创始人魏永明老师的情况下,我对 HVML 有了一个大致的认知,修正我此前开题答辩时的一些错误认识。

在 10.31 晚的交流会后,我跟魏老师首次线下见面,再度明确了 HVML 的一些设计理念和工作任务。目前已经有了一个 HVML 计算器程序,它带有内嵌数组,可以经过迭代,生成 html,并在用户交互时响应。

考虑到 observe 等标签来不及实现,因此我们下面几周的工作目标是目标是基于 init、iterate 等生成一个 HTML 文件。为了保证我与李煜宸两人工作独立性,魏老师将任务分成两部分:

  • 分工一:完成 v-Dom 生成、执行栈编写

  • 分工二:完成 json 求值表达式

目前暂未对这两个分工进行分配,我们下一周的任务是先各自用 HVML 完成一个不带 observe 标签的无交互网页编写,它将有机会和之前的计算器例子一起作为 HVML 展示样例。

Week 1

11.1~11.7

过去一周里我熟悉了 HVML 的基本语法,并速成了 JavaScript,然后改造了网上的一个 HTML-CSS-JavaSCript 混合的数字华容道程序。

原项目地址为 https://github.com/Olusamimaths/8-Puzzle-Game-Js-Tutorial-Files ,我将它的 JavaScript 逻辑大幅度简化(将反人类的拖拽移动改成了 click 移动)以保证容易用 HVML 复现,然后改写成了一个不带交互的 HVML。

我的 HVML 见 https://github.com/learncompiler/prj3_2020/blob/main/8-Puzzle-Game-Js-Tutorial-Files/index.hvml ,目前还没有引入动态操作,我计划在后面再继续完善它,确保原来的 JavaSCript 确实被翻译成 HVML 或者被外部的 Python 实现。

Clone this wiki locally