Open Moying-moe opened 10 months ago
一些实验
从谱面文本到目标数据的路径是这样的:
+--------------+ Parser +-----+ Preprocessing +------------+
| chart string | -------> | AST | --------------> | chart json |
+--------------+ +-----+ +------------+
Parser已经写了一个出来,目前已经处于可用状态,但是存在以下问题:
主要问题就是语法做的太深,一个note可能就有个三四层,并且每次都是直接把整个铺面全解析一遍,就会很慢。语法规则的细节也没优化。
目前大概想了一下优化思路:
不过说实话这玩意到底效率能做到多高,心里也是没底的……我是希望能做到1000note的文件在300ms的耗时,这样加上异步解析就几乎可以做到用户无感知了。
在写 maidata-rs,已经支持大部分语法,速度非常快(解析全部官谱只需要 3s,使用时完全无感),支持部分的错误恢复。demo。
有几个问题:
track
-group
-segment
1w1
):demo 里会直接报错,这一块需要实现一下,和语法错误合并起来
Where?
MajdataEdit
New Feature Request
Feature background
当前语法解析引擎较为破旧,健壮性差,难以维护扩展。需要对其进行重构以提升其健壮性、规范性。
Goals
What we need
目前所做的早期实验均基于Python的lark模块,暂时不知道.NET下有什么好用的可以用EBNF解析抽象语法树的库。如果找不到的话就只能利用python生成一个命令行工具来做了,性能可能会有损失。不过可以通过异步/多线程解析来削弱这个问题。