返回介绍

12.16.3 case生成式语句

发布于 2020-09-09 22:55:51 字数 805 浏览 999 评论 0 收藏 0

一个生成式可以使用case生成式语句从一组可选项中选择。case生成式语句的语法如下:

rs_case ::= case (expression) rs_case_item {rs_case_item} endcase

rs_case_item ::=
    expression {, expression} : production_item
  | default [:] production_item

除了下述的说明外,case生成式语句类似于过程化的case语句。case表达式被计算,它的值与每一个case条目表达式(它们以指定的顺序计算和比较)进行比较。产生的生成式是与case表达式匹配的第一个case条目表达式对应的生成式。如果没有找到匹配的case条目表达式,那么产生与可选的default条目相对应的生成式。

在一个case生成式语句中具有多个缺省语句是非法的。使用逗号分割多个case条目表达式能够共享相同的生成式。例如:

randsequence()
    SELECT : case (device & 7)
                 0       : NETWORK
                 1, 2    : DISK
                 default : MEMORY
             endcase;
    ...
endsequence

上面的例子定义了具有一个case语句的生成式SELECT。case表达式(device & 7)被计算并与两个case条目表达式进行比较。如果表达式与0匹配,那么产生生成式NETWORK;如果与1或2匹配,那么产生DISK生成式;否则产生MOMORY生成式。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文