编译器之简单的类C文法

 ::= 

 

 ::= { ?  :  }*

 

 ::=  { ||  }*

 

 ::=  { &&  }*

 

 ::=  { |  }*

 

 ::=  { ^  }*

 

 ::= { &  }*

 

 ::= { w0  }*

            w0 ::=  == | !=

 

 ::=  { w1  }*

            w1 ::=  > | < | <= | >=

 

 ::= { w2  }*

            w2 ::= + | -

 

 ::=  { w3  }*

            w3 ::= * | / | %

 

 ::=  

                       | 

                       | (  )

                       | 

                       | 

 

 ::=  { [  ] }*

 

 ::= 

             | 

 

 ::=  { ,  }*

 

 ::=   

 

 ::= =

 

 ::= - | ~ | !

 

 ::= { const }? 

 

 

 ::= char

                   | int

                   | real

 

  ::=   { [ {}? ] }*

 

 ::=    {  }*

 

 ::= 

                    |  = 

 

 ::= 

                | {  }

                | {  , }

 

 ::= 

                     |  , 

 

 ::= ()

 

 ::= { {}* {}* }

 

 ::=

              | 

              | 

              | 

              | 

 

 ::= { {  }* }

 

 ::= {}? ;

 

 ::= if (  ) 

                        | if (  )  else 

 

 ::= while (  ) 

               | for ( {}? ; {}? ; {}? ) 

 

 ::= continue ;

                  | break ;

                  | 

                  | 

                  | 

                  | 

                  | 

 

 ::= { { 

 

 ::= if (  ) 

                        | if (  )  else 

 

几点限制:

const只能声明变量,后面必须跟立即数,数组只声明不初始化

你可能感兴趣的:(编译原理)