PlantUML-EBNF语法学习

news/2025/10/27 17:32:29/文章来源:https://www.cnblogs.com/huzhongqiang/p/19168949

背景

一图胜千言。有时候用图表表达意图比较直观、容易理解。但是用一般画图工具比较麻烦,也不容易修改,所以用文本描述设计意图,然后自动呈现图表就是一种理想的方案。
本文用EBNF语法图描述了语法图的语法。

参考

语法说明文档:https://plantuml.com/zh/ebnf 
 在线编辑器:https://editor.plantuml.com/uml/

语法

grammar

有多条规则构成:

@startebnf
grammar = { rule } ;
(*由0条或者多条规则组成*)
@endebnf

SoWkIImgIKtAI-DABqhCpKqiKh1Lg5OeAir9LQXLiERIq7e-PQF1ixaBdtLCUz7G-dJ9B23xnVAMfnqpd-zkUTOnGKkJoo4rBmLi0W00

rule

每一条规则形如:A=B;

@startebnf
rule = lhs , "=" , rhs , ";" ;
(*规则: A=B; A: 左侧,B: 右侧;*)
@endebnf

SoWkIImgIKtAI-CgAir9LR1LoCaeLj1HKB9L0f954BQrae8rbuRMY-KjJpjcMYausZfPApXQAJpTlkp9lkNlz_Gu0Tdzcy7isLgQN0wfUIbW4m40

lhs:左侧

左侧就是一个标识符。

@startebnf
lhs = identifier ;
(*左侧就是一个标识符*)
identifier = letter , { letter | digit | "_" } ;
digit = ? 0-9 ? ;
letter = ? A-Z or a-z ? ;
@endebnf

SoWkIImgIKtAI-FAoIXMi5N8J4dDAybCoqmjKh3cqj1wkdtPattBdsxO-6p6-YSx6fxiMFLiGVkBzMtFropJqkH2Kcoha9DQKW9aw2XKmvWr2YcPwPabG5efNacX5cWWX6-hOAzWe6i99Asve4f1GewwKGhvHGg9kbLW6OVKl1Immm00

rhs:右侧

@startebnf
rhs = identifier(*右侧:可以是标识符*)| terminal(*可以是终结符*)| "[" , rhs (* 也可以是一个可选项 *) , "]"| "{" , rhs (* 也可以是重复项 *), "}"| "(" , rhs (* 也可以是分组 *) , ")"| "(*" , string (* 也可以是注释 *) , "*)"| "?" , rhs (* 虚线方框 *) , "?"| rhs , "|" (* 多选一 *) , rhs| rhs , "," (* 多个右侧的连接 *), rhs ;
terminal = "'" , character , { character } , "'"| '"' , character , { character } , '"' ;
(*终结字符串*)
character = letter | digit | symbol | "_" ;
(*字符*)
symbol = "[" | "]" | "{" | "}" | "(" | ")" | "<" | ">"| "'" | '"' | "=" | "|" | "." | "," | ";" ;
(*符号*)
@endebnf

XPBBJi9058RtVOh9R5eQuWjWXVSmnXGeq0HgqdPZ618M1D04MPXuwK8b0JL6Go8BmHfvcLxeobVmp7GebOJOnUbSld_EEVDFmR9LqzQAHaKmQnPIa5xM35klw9ef8Ff9iZ-SUTzFFr-EFvnwxYIucGOFlTMq6xu-ofaO8iZMp8PkgFMDYBEXsm_TopyiFiGeYsWwIKRUuZvXlNdRcx_0D6

补充

  • 注释即可以修饰标识符和终结字符串,也可以单独一行
  • 终结字符串即可以用单引号,也可以是双引号,甚至不使用引号也可以
    • 不使用引号的时候,一般表示终结字符串
@startebnf
binaryDigit = 02a | 123;
@endebnf

SoWkIImgIKtAI-DAoinBBAfqoKpFB56mLJ0mIbIeKJ0qChRcSaZDIm6huE820000

  • 支持title作为标题
 title All EBNF elements managed by PlantUML
  • 表示一个或者多个的简便用法
@startebnf
one_or_more_ebnf = {a}-;
@endebnf

SoWkIImgIKtAI-FApqkDpo-ApyqlIeq72IZOAbGdrkfQSpcavgM0LG00

  • 支持‘*’,表示重复多少次
@startebnf
test = 4 * 2;
@endebnf

SoWkIImgIKtAI-CgIIqkKR1LC57GKZ2ovd98pKi12mC0

  • 支持自定义样式
@startebnf
<style>
element {ebnf {LineColor blueFontcolor greenBackgroundcolor palegreennote {Backgroundcolor pink}}
}
</style>
title Title
styled_ebnf = {"a", c , "a" (* Note on a *)}
| ? special ?
| "repetition", 4 * '2';
(* Global End Note *)
@endebnf

RL0z2y903DtpAnvTgaKGnCsFYg8kukGkrpRAuPahr-iWsl_kzHHS71AIz_9UGbQDLyvp8HUQD_vXU4bi-CxYyIIW9s817BJmnXhhK9YM8xIpuii8NHspH6ojojlLsLQg3rChmpzMhEUltvzHBRT8TTH7H_FnzoIllM6S-amHgixniWMUYKf6A352A338SEmtM852DkpeXHnDpQLM1dde4i

  • 排除符号‘-’
@startebnf
title First [modified] example of §5.8 Syntactic-term of ISO-EBNF
letter = ? "A" - "Z" ?;
vowel = "A" | "E" | "I" | "O" | "U";
consonant = letter - vowel;
@endebnf

BOvD2i8m48NtSuf7zd4d24LQXHQwiOlYHd4Hsoa4caJQmH_mFjx3ava6Dz_YU-yDKynY9k6h7qYiZ8pAJhFWx49l1ylz1VmqxXQ3CE3xMQysQ5zUJ2UsqyAJMtpTDhhS7oeY6bcYnHOvr4v1GvqKyYmcz_3WCGQBVaELYNLYatXKIwqBVWxUU8dL_p6DjCseOD-dLub-

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/947946.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年度在线网站客服系统综合排行榜正式发布

在信息爆炸的今天,客户耐心正以秒计算。您的网站访客可能只因一个无人应答的咨询窗口便悄然离去。一个得力的在线客服系统,早已不再是简单的“沟通工具”,而是企业挽留潜在客户、提升服务体验、最终实现业绩转化的战…

JDD Oxygen智能零售论坛 | 《大模型时代的广告营销变革与实践》

核心观点 1. 通用大模型想解决营销领域问题需向垂类模型转型。 “全才”通用大模型难覆盖广告营销全流程,需升级为“懂营销”的垂直模型,实现从“知道”到“落地执行”的三维跨越。 2. 广告智能体破解传统投放门槛高…

常用Web 实时通信技术:原理+选型,一篇通关

在 Web 开发中,实时通信技术的核心目标是实现客户端(Browser)与服务器之间低延迟、双向 / 单向的动态数据交互,而非传统 HTTP 的 “请求 - 响应” 模式。以下是 Web 端最常用的实时通信技术,从概念、原理特点、适…

ERP和CRM、SRM、MES之间的关系,怎么理解?

我的一个创业的朋友最近来问我,ERP、CRM、SRM和MES这四个系统到底该如何配合?这是很多公司在推进数字化转型时,都会遇到一个问题,我们公司也不例外。 虽然它们各自有不同的职能,但往往会让人搞不清楚。有时候,企…

2025年市面上新加坡留学品牌、行业内公司及口碑产品推荐排行

摘要 随着全球教育一体化加速,新加坡留学市场在2025年呈现稳健增长态势,行业竞争加剧,品牌分化明显。本文基于行业数据和用户反馈,梳理前十名新加坡留学服务提供商,并附详细排名表单供参考,旨在帮助读者做出明智…

滥用static inline

结论先行你现在的写法namespace hzi {static inline Config config; // ← 注意 static }会让每个包含 config.hpp 的 .cpp 文件都拥有自己独立的一份 config 对象。 因此: – 它们在内存中地址不同; – 在一个 .c…

2025年市面上氟碳铝单板品牌、市场氟碳铝单板公司、国内氟碳铝单板生产厂家、2025年氟碳铝单板品牌、口碑好的氟碳铝单板产品综合评测

文章摘要 氟碳铝单板作为现代建筑外墙装饰的核心材料,近年来随着绿色建筑和城市化进程的加速,行业年复合增长率超过15%(数据来源:中国建筑材料联合会2024年报告)。本文基于市场调研和用户反馈,为您呈现2025年氟碳…

2025/10/25(补)

A 用时:1h 预期:100pts 实际:100pts 处理出每个点开始有多少个三元组,依次用二分确定 \((x,y,z)\)。 总结:做题时要集中注意力,越快做完越好。 B 用时:1h 预期:60pts 实际:40pts 贪心的加点,加入的点的贡献为…

第二十四篇

今天是10月27日,绝望星期一,今天又在尝试链接数据库进行开发,当然又失败了,难受

2025强网杯ezphp复现

ezphp 终于,终于,终于肝出来了,其实肝了一天之后就基本全部出来了,一开始调用在匿名类中的全局函数的这一步卡了很久,于是先跳过这一步,对其他步骤先进行分析复现,到后来就差这最后一步被卡死了,百思不得其解,后来注意…

2025年西安楼房地产排名、口碑推荐榜单、公司推荐排行、开发商排名及高评价楼房地产分析

摘要 随着西安城市化进程加速和房地产市场持续升温,2025年西安楼房地产行业呈现出稳健增长态势,消费者对高品质住宅的需求日益凸显。本文基于行业数据和用户评价,整理了西安楼房地产排名前十的榜单,旨在为购房者提…

漏洞报告被拒绝的常见原因及避免方法

本文深入探讨了在漏洞赏金项目中漏洞报告被拒绝的常见原因,包括报告不清晰、缺乏重现步骤等问题,并提供了实用的改进建议,帮助安全研究人员提高报告质量并获得认可。24. 漏洞报告被拒绝的常见原因(以及如何避免) …

2025年市面上别墅石材品牌、行业内别墅石材公司、市场别墅石材供应商、目前别墅石材源头厂家、口碑好的别墅石材品牌推荐排行榜

摘要 别墅石材行业近年来随着高端住宅市场的蓬勃发展,需求持续增长,消费者对石材的品质、设计和供应商信誉要求越来越高。本文基于2025年市场数据,为您提供一份权威的别墅石材品牌推荐榜单,涵盖市面上热门品牌和供…

Spring AI alibaba Prompt模板Advisor自定义 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

11-文件上传

11-文件上传$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");文件上传和下载的原理文件上传从浏览器上传文件的时候需要对文件进行限制 这个限制是在配置文件…

wqe

wqe报告名称:AR(Active Area Reverse)fin cut工艺业务需求与数据目标报告(深度调研增强版) 版本:V1.2 日期:2025-9-4 编制人:[李晓睿/数字智能部] 审核人:[姓名/部门] 引言 1.1 背景与业务场景项目发起背景(…

集采带量下医疗器械生产厂家如何通过数字化转型实现降本增效

数字化管理系统正在成为医疗器械生产厂家应对集采挑战的“手术刀”,精准切除管理冗余和效率低下的痛点。数字化管理系统正在成为医疗器械生产厂家应对集采挑战的“手术刀”,精准切除管理冗余和效率低下的痛点。 “订…

告别命名误区!深度剖析TurtleBot3 vs. TurtleBot4 开源平台

一. TurtleBot3与TurtleBot4非“前任”与“继任”的关系 在高校机器人科研与教学领域,TurtleBot系列一直是ROS入门与原型验证的热门选择。当TurtleBot4推出后,许多老师不禁产生一个疑问:是否TurtleBot3已经过时?命…

2025年锌铝镁桥架公司、口碑好的锌铝镁桥架品牌、行业内锌铝镁桥架供应商、锌铝镁桥架公司推荐榜、靠谱的锌铝镁桥架供应厂家综合评测

文章摘要 锌铝镁桥架作为电缆敷设的关键组件,在2025年随着基础设施建设和智能电网发展,行业需求持续增长,预计市场规模年复合增长率达8%-10%。本文基于行业数据、用户口碑和公司实力,综合评测前十名锌铝镁桥架供应…