RoyDeng's Weblog

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  7 随笔 :: 1 文章 :: 23 评论 :: 1 引用

公告

计算机语言是什么,在我看来它们就像一张图:语法节点就是图上的节点,彼此间的相互调用(引用、包含)就是它们的连线,当然是有向的连线。
下面是从C#语法规范中截取的语法片断:
embedded-statement ::=
    block 
    empty-statement 
    expression-statement 
    selection-statement 
    iteration-statement 
    jump-statement 
    try-statement 
    checked-statement 
    unchecked-statement 
    lock-statement 
    using-statement 
    yield-statement 



iteration-statement ::=
    while-statement 
     do-statement 
     for-statement 
     foreach-statement 
     

while-statement ::=
    while ( boolean-expression ) embedded-statement 

do-statement ::=
    do embedded-statement while ( boolean-expression  ) ;

for-statement ::=
    for ( for-initializer opt ; for-condition opt ; for-iterator opt ) embedded-statement 

foreach-statement 
    foreach ( local-variable-type identifier in expression ) embedded-statement 

图一揭示了上面几个语法元素间的引用关系


可以看见,本来枯燥的C#语法,你现在可以清晰的通过一个图发现这些语法元素间的引用关系。很明显所有的循环语句都递归调用embedded-statement。如果你有足够的耐性将所有的CSharp语法元素都亲手这样画一便,相信你已经是一个CSharp的语法高手了。我曾经用这个方法画了Java的语法结构图,看着Java的语法体系的精妙,你会为自己能这样从全局把握这门语言而感到自豪。

其实,只要你把握好了这些语法元素间的引用关系,可以说你就已经掌握了C#的一大半了。下面这个表列出了最新的CSharp 3的语法引用关系。

http://www.cnblogs.com/GlobalFamily/articles/1080548.html

做人要厚道,转载请注明出处。
作者Blog RoyDeng
posted on 2008-02-25 14:10 RoyDeng 阅读(2650) 评论(9) 编辑 收藏