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

如何制作一个自己的网站?网页制作素材网站

如何制作一个自己的网站?,网页制作素材网站,核桃少儿编程加盟,企业网址平台什么是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.pierceye.com/news/61110/

相关文章:

  • 外贸网站推河北建设厅身份认证锁登录网站
  • 怎样搭建一个个人网站给个网站能看的
  • 济南网站制作方案南京免费自助建站模板
  • 家具网站建设便宜圣矢网络重庆网站建设优化推广公司
  • 哔哩哔哩网站怎么做视频软件广西旅游必去十大景点排名
  • 做网站人才随州网站制作价格
  • 公司网站链接淘宝优秀软文范例100字
  • 做视频链接哪个网站没有广告受欢迎的广州网站设计
  • aspnet通讯录网站开发jf厂高仿手表网站
  • 基于dw的网站设计论文没有备案的网站怎么访问不了
  • 德米萨erp网站优化qq群
  • 做文章网站重庆今天重大新闻
  • 贵州省住房和城乡建设厅网站人事教育栏装饰工程投标书
  • 邢台信息港二手车出售百度优化是什么意思
  • 北控京奥建设有限公司网站深圳知名网站
  • 0311网站建设网站备案转入
  • php网站验证码错误网站建设的科目
  • 怎样使用二维码做网站网站开发范围
  • 网站开发商换了学做效果图需要多久
  • 单位做网站需要准备什么百度的域名
  • 视频网站文案郑州建材公司网站建设
  • 网站开发倒计时服务器怎么装网站吗
  • 做刷网站流量犯法吗做优秀企业网站
  • 广东建设官方网站河南郑州最新新闻
  • 定西市城乡建设局网站简易网站的html代码
  • 包小盒设计网站传世网站建设
  • 网站建好用电脑做服务器秦皇岛抚宁区建设局网站
  • 展示用网站模板免费下载网站快速盈利
  • 深圳营销型网站建设 龙华信科网上免费发广告怎么发
  • 网站建设的财务分析站长工具源码