尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

PlantUML-EBNF语法学习

PlantUML-EBNF语法学习
📅 发布时间:2026/6/18 18:22:53

背景

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

相关新闻

  • 2025年度在线网站客服系统综合排行榜正式发布
  • 2025年市面上新加坡留学品牌、行业内公司及口碑产品推荐排行
  • Spring AI alibaba Prompt模板Advisor自定义 - 实践

最新新闻

  • 终极IT运维实战指南:LinkedIn技能评估完整题库解析
  • Microsoft Intune脚本开发指南:自定义脚本模板与最佳实践
  • 彻底解决!ExplorerPatcher优化Windows 10开始菜单响应速度的6大方案
  • 哪种眼油去黑眼圈效果好?亮眼去黑双在线,5款宝藏眼油分享 - 全网最美
  • 全能文档处理方案:clawPDF实战指南,让你的文件转换更高效
  • 2026成都自助机服务商推荐 定制需求专属榜 - 热点速览

日新闻

  • 2026年不锈钢卷板厂家推荐排行榜:冷轧热轧/304/201不锈钢卷板,高颜值耐腐蚀源头厂家实力精选 - 企业推荐官【官方】
  • FLUX.1-dev FP8模型实战指南:24GB以下显卡高效部署方案
  • 2026佛山长途搬家价目表:跨省跨市搬家费用完整计算指南 - 从来都是英雄出少年

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号