计算机语言是什么,在我看来它们就像一张图:语法节点就是图上的节点,彼此间的相互调用(引用、包含)就是它们的连线,当然是有向的连线。
下面是从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
下面是从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

