当前位置: 首页 > news >正文

WSN - Wirth syntax notation 沃斯语法符号

一、 WSN - (Wirth syntax notation) 沃斯语法符号

沃斯语法符号(WSN)是一种元语法,即一种描述形式语言的形式化方法。

最初由Niklaus Wirth于1977年提出,作为巴科斯-诺尔形式(BNF)的替代方案。

它比BNF有几个优点,因为它可以使用自身定义,它包含一个显式的迭代构造,并且避免了为空字符串使用显式符号(如<空格>或ε)。

WSN已被用于多个国际标准,从ISO 10303-21开始。

二、WSN 自己定义自己

syntax = { production } . 
production = identifier "="  expression  "." . 
expression  = term { "|" term } . 
term= factor { factor } . 
factor = identifier | literal | " [" expression  "] " |  "(" expression ")" | "{"  expression "}" . 
identifier = letter { letter } . 
literal = " character { character } " .
  • = 等号表示新生成或者(新)定义。
  • 左侧的元素被定义为右侧元素的组合。
  • 每个新的生成(定义)以 .(句号)终止。

我们今天认为这些概念是理所当然的,但它们在1977年是及其具有开创性的,甚至是有争议的。

Wirth后来将一些概念(具有不同的语法和符号)合并到扩展的巴科斯-诺尔形式中。

三、 GoLang Notation - Go语言的符号定义

Syntax      = { Production } .
Production  = production_name "=" [ Expression ] "." .
Expression  = Term { "|" Term } .
Term        = Factor { Factor } .
Factor      = production_name | token [ "…" token ] | Group | Option | Repetition .
Group       = "(" Expression ")" .
Option      = "[" Expression "]" .
Repetition  = "{" Expression "}" .

Productions 是由术语(terms) 和以下运算符(operators)构建的表达式,优先级递增:

|   alternation
()  grouping
[]  option (0 or 1 times)
{}  repetition (0 to n times)

参考链接:
1、https://amturing.acm.org/award_winners/wirth_1025774.cfm
2、https://de-academic.com/dic.nsf/dewiki/1021428
3、https://dl.acm.org/doi/pdf/10.1145/359863.359883
4、https://zhuanlan.zhihu.com/p/676018344
5、https://en-academic.com/dic.nsf/enwiki/4522574
6、https://golang.google.cn/ref/spec#Notation
7、https://www.cl.cam.ac.uk/~mgk25/iso-14977.pdf

http://www.dtcms.com/a/316632.html

相关文章:

  • 模板的进阶
  • JAVA,ThreadLocal
  • 浮动路由和BFD配置
  • 瀑布模型与敏捷开发的选择分析
  • 如何在nuxt项目中使用scss
  • 数据库SQL高阶操作1——Mysql8转换DM8相关sql语法写法优化调整,包括递归,函数,以及方言等特殊操作的改造支持
  • vue2 vue3 区别
  • PostGIS面试题及详细答案120道之 (101-110 )
  • 解决微信小程序中camera组件被view事件穿透触发对焦以及camera的bindtap事件
  • 猜数字游戏 Java
  • 并发编程的三要素是什么
  • Docker Desktop
  • 实战项目3-工控软件-2.0- 自定义控件HMILabel的创建
  • 用 Spark 找出最大值:高性能计算的正确姿势
  • 线性筛和os数组(牛客多校25年#7-G)
  • (ZipList入门笔记二)为何ZipList可以实现内存压缩,可以详细介绍一下吗
  • web_socket_channel 后台重连机制失败
  • Kafka 的基本操作(1)
  • Web存储技术详解:sessionStorage、localStorage与Cookie
  • MySQL 深分页优化方案
  • Matplotlib(六)- 坐标轴定制
  • 【motion】HumanML3D 的安装1:环境搭建
  • 制造业ERP系统架构设计方案(基于C#生态)
  • [激光原理与应用-151]:光学器件 - 光学平晶:高精度平面度检测的核心工具
  • 用phpstudy安装php8.2后报错:意思是找不到php_redis.dll拓展时
  • 如何对云环境或者超融合系统进行性能测试?
  • Pandas 入门:数据分析的得力工具
  • PowerBI VS QuickBI 实现图表的动态配色
  • Vue 2 渲染链路剖析
  • Linux逻辑卷管理操作指南