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

照明灯企业网站织梦模板html5教程零基础

照明灯企业网站织梦模板,html5教程零基础,网站如何建设与优化,做网站的备案什么是BNF范式,什么又是EBNF范式? 巴科斯范式及其扩展 BNF Augmented BNF 什么是巴科斯范式#xff1f;   巴科斯范式(BNF: Backus-Naur Form 的缩写)是由 John Backus 和 Peter Naur 首先引入的用来描述计算机语言语法的符号集。   现在 Augmented BNF                 什么是巴科斯范式        巴科斯范式(BNF: Backus-Naur Form 的缩写)是由 John Backus 和 Peter Naur 首先引入的用来描述计算机语言语法的符号集。   现在几乎每一位新编程语言书籍的作者都使用巴科斯范式来定义编程语言的语法规则。                 巴科斯范式的内容   在双引号中的字(word)代表着这些字符本身。而double_quote用来代表双引号。 在双引号外的字有可能有下划线代表着语法部分。  尖括号( )内包含的为必选项。  方括号( [ ] )内包含的为可选项。  大括号( { } )内包含的为可重复0至无数次的项。  竖线( | )表示在其左右两边任选一项相当于OR的意思。  :: 是“被定义为”的意思。           巴科斯范式示例            这是用BNF来定义的Java语言中的For语句的实例 FOR_STATEMENT ::        for ( ( variable_declaration |    ( expression ; ) | ; )        [ expression ] ;        [ expression ] ;        ) statement          这是Oracle packages的BNF定义 package_body :: package package_name is  package_obj_body { package_obj_body }  [ begin seq_of_statements ]  end [ package_name ] ; package_obj_body :: variable_declaration  | subtype_declaration  | cursor_declaration  | cursor_body  | exception_declaration  | record_declaration  | plsql_table_declaration  | procedure_body  | function_body procedure_body :: procedure procedure_name  [ ( argument { , argument } ) ]  return return_type  is  [ declare declare_spec ; { declare_spec ; } ]  begin  seq_of_statements  [ exception exception_handler { exception_handler } ]  end [ procedure_name ] ; statement :: comment  | assignment_statement  | exit_statement  | goto_statement  | if_statement  | loop_statement  | null_statement  | raise_statement  | return_statement  | sql_statement  | plsql_block     这是用BNF来定义的BNF本身的例子 syntax     ::  { rule } rule       ::  identifier  ::  expression expression ::  term { | term } term       ::  factor { factor } factor     ::  identifier |                 quoted_symbol |                 (  expression  ) |                 [  expression  ] |                 {  expression  } identifier ::  letter { letter | digit } quoted_symbol :: { any_character }            扩展的巴科斯范式 Augmented BNF        RFC2234 定义了扩展的巴科斯范式(ABNF)。近年来在Internet的定义中ABNF被广泛使用。ABNF做了更多的改进比如说在ABNF中尖括号不再需要。  什么是EBNF? 基本 (EBNF) 定义有关 EBNF 协定的详细情况可以参看 Computing Dictionary.  这里是要点一览: ... : 术语符号[...] : 选项:最多出现一次{...} : 重复项: 任意次数包括 0 次(...) : 分组| : 并列选项只能选一个 斜体字: 参数在其它地方有解释 http://estone.nease.net/sgf/sgf4.html#2 里会给出一个EBNF在棋牌类的应用. -------------------------------------------------------------------------------------------- BNF::     非终结符::或项列表      或项列表::     项     |     或项列表|项      项::     非终结符     |     终结符   |   项非终结符   |   项终结符      非终结符::       非终结符名             但愿能有人看得懂:-)   )           BNF就是巴科特·瑙尔式的缩写      在计算机的史前时代1950s)曾有一位大师他奠定了现代计算机的基础      在他老人家的诸多成就之中包括了对形式语言的研究和发明了高级语言      FORTRAN。      为了纪念他老人家我们把他提出的一套描述语言的方法叫做BNF           其实BNF很简单::表示定义   |表示或   尖括号()括起来的是非终结符      所谓非终结符就是语言中某些抽象的概念终结符就是可以直接出现在      语言中的符号           比如C语言的声明语句可以用BNF这样描述      声明语句   ::   类型标识符;   |   类型标识符[数字];      这一句中声明语句这个非终结符被定义成了两种形式上面用|隔开的两部分      在这里引入了三个终结符:   分号;     左右方括号[   ]           类型   ::   简单类型   |   指针类型   |   自定义类型      指针类型   ::   简单类型   *   |   自定义类型   *      简单类型   ::   int|char|double|float|long|short|void      自定义类型   ::   enum标识符|struct标识符|union标识符|标识符      到这里就基本上把类型定义清楚了           数字   ::   0X十六进制数字串   |   0八进制数字串   |   十进制数字串      十六进制数字串   ::   十六进制数字   |   十六进制数字串十六进制数字        八进制数字串   ::   八进制数字   |   八进制数字串八进制数字        十进制数字串   ::   十进制数字   |   十进制数字串十进制数字        十六进制数字   ::   十进制数字   |   A   |   B   |   C   |   D   |   E   |   F      十进制数字     ::   八进制数字   |   8   |   9        八进制数字   ::   0   |   1   |   2   |   3   |   4   |   5   |   6   |   7      到这里就把数字定义清楚了           标识符   ::   字母   |   标识符   字母数字串      字母数字串   ::   字母|十进制数字|字母数字串字母|字母数字串十进制数字        字母   ::   _   |   大写字母   |   小写字母      小写字母   ::   a|b|c|d|e|f|g|h|i|j   ……   偷个懒      大写字母   ::   A|B|C|D|E|F|G|H|I|J   ……           到此为止整个声明语句就定义完了就是说已经没有非终结符了虽然看起来很      繁但前面定义的各种非终结符都可以很容易的在别的地方重用比如函数声明      可以定义成下面的样子      函数声明语句   ::   类型标识符(形参表);      形参表   ::   类型标识符   |   形参表,形参表      只用两句就描述完了所以BNF实际上比用自然语言要简练得多      整个C语言只用一二百句就可以描述清楚      而且相当的精确不会有自然语言中那种模棱两可的表达      如果你对BNF比较敏感的话会发现C里面的标识符不能由数字开头      而且在C里面下划线是被当做字母看待的也就是说能用字母的地方      都可以用下划线比如最好用老一点的编译器比如PDP11上的cc      #define   ____   main      #define   ___   for      typedef   char*   _____;      int   (*______)(char   *,   ...)     printf;   //如果这一句不灵就用下面这句      //#define   ______   printf                         //如果你用的是C可以试一下下面这个      //int   (*______)(const   char   *,   ...)     printf;             ____(_,char*   __[])   //要是你编译器不吃可以改成int   ____(int   _,char*__[])      {          ___(   ;   _   ;   _   --)          {                ______(%s\n,   __[_]);          }      }           另外还有一种EBNF就没有正宗的BNF这么爽了也有很多人在用前面的      那些递归的定义被写成了{}           有一段时间PASCAL爱好者们喜欢用一个叫语法图的东西画出来很难看但      功能和BNF差不多现在好象已经没多少人用了           近几年流行另一种东西      digit     one   of                      0   1   2   3   4   5   6   7   8   9      这里非终结符digit用斜体表示one   of是这种方法里定义的一个量词常用斜黑体      我不喜欢这个因为我眼神不好常常分不清那个是斜体那个是正体
http://www.zqtcl.cn/news/802242/

相关文章:

  • 记事本做网站怎么加背景图网站开发需要哪些人怎么分工
  • 南宁网站建设找哪家网站被k换域名
  • spring mvc 网站开发网站开发与管理所对应的职位及岗位
  • 国内做视频的网站有哪些宁波网站制作与推广
  • 织梦软件展示网站源码建设工程竣工验收消防备案网站
  • 网站里面的链接怎么做漳州建设网站
  • 有什么网站建设类岗位企业门户网站设计论文
  • 外贸公司如何做公司网站集团网站建设建站模板
  • 嘉兴云推广网站贵州毕节网站建设
  • 班级网站模板青岛哪里有做网站公司的
  • 建设工程设计招标信息网站.制作一个聊天软件需要多少钱
  • 校园网站建设的意见新闻聚合网站开发 技术
  • 网站推广公司兴田德润电话多少wordpress 弹框
  • 大连网站建设谁家好软件开发需要什么技术
  • 广州网站建设哪家便宜成都电商app开发
  • 网站qq访客统计青岛网站设计定制
  • 山东嘉祥做网站的有哪几家销售外包
  • 怎么做网站_旅游网站定位
  • 湛江seo推广公司aso优化渠道
  • 网站设计培训机构内蒙古网上办事大厅官网
  • 什么是网站空间信息网站备案号中信息有变
  • 网站建设的基础怎么提升网站流量
  • 网站开发线框网页设计网站建设过程报告
  • 怎么用html做移动网站吗免费装修设计软件
  • 门头沟石家庄网站建设鞍山怎么样做一个自己的网站
  • 网站安装代码宣传网站建设背景
  • 网站空间续费东莞网站建设(信科分公司)
  • 少儿教育网站建设价格网页制作讲解视频
  • 网站开发方向的工作网站怎么做排名
  • 建设网站烧钱iis配置网站是什么