上一篇大概说了一下JS是怎么画UML 图形的。
这一篇简单介绍一下这个JS 解析 UML语法是怎么实现的。
https://github.com/bramp/js-sequence-diagrams/blob/master/src/grammar.ebnf
这个是Markdown UML语言的语法结构。摘抄了部分:
这一部分是将词和词组成语句。而语句和语句就组成篇章。
这里的意思是 UML是由 statement(语句)构成的。
statement有下面几种表示方法:
1. ‘title’ ‘:’ message 这里带上’’的都是token,在编译原理中,token标识不能再被解释的词。
2. ‘participant’ actor
3. ‘note’ (‘left of’ | ‘right of’ | ‘over’) actor ‘:’ message 表示note与Actor之间的关系
4. actor ( ‘-’ | ‘–’ ) ( ‘>’ | ‘>>’ )? actor ‘:’ message 标识actor之间的关系。
下面的词法分析会将字符转换为UML中有含义的字。类似字符组成词。用正则式将字母变成有含义的词。
例如下面这一句:
就是将不是’->:\n,’这些字符的多个字组成词,这个词叫做ACTOR.
一般来说终结符也就是类似’note’ 这样的字符需要先被定义。否则 ‘note’这样的字符集合就变成了markdown UML的ACTOR.
而下面的是将ACTOR词转成对象actor。
好吧上面就是UML的grammar. 其实用什么语言都可以写出来。不局限于JS. 具体grammar这块使用的是jison和ebnf.
有闲空的人可以看一下JS调用jison来做js parser以及EBNF表达式。