Simple CFG for C Language by Tehseen Raza  

 

FUNCTION DECLARATION 

<PROGRAM> <TYPES> id ( <PARAM_LIST> ) ; <PROGRAM> 

<PARAM_LIST> <DT> <ID> <PARAM> | <VOID> | E 

<PARAM> , <DT> <ID> <PARAM> | E 

<ID> id | E 

<TYPES> <DT> | <VOID> 

<VOID> void 

GLOBAL IDENTIFIERS 

<PROGRAM> <IDENTIFIER> <PROGRAM> 

MAIN FUNCTION

<PROGRAM>    <OPT_VOID> main ( <OPT_VOID> ) { <STMT_LIST> } <OPT_FUNCTION> 

<OPT_VOID> <VOID> | E 

<STMT_LIST> <STMT> <STMT_LIST> | E 

<STMT> <IDENTIFIER> 

<IDENTIFIER> <DT> id <OPT_VAL> <ID_LIST> 

<ID_LIST> , id <OPT_VAL> <ID_LIST> | ; 

<OPT_VAL> = <EXP> | E 

 

INPUT OUTPUT STATEMENT 

<STMT> cin >> id ; 

<STMT> cout << <OUTPUT> <OPT_OUTPUT> 

<OPT_OUTPUT> << <OUTPUT> <OPT_OUTPUT> | ; 

<OUTPUT> <EXP> | <STRING_CONSTANT> 

<STMT> id = <EXP> ;

 

MATHEMATICAL EVALUATION AND OTHER EXPRESSION 

<EXP> <TERM> <E_LIST>  

<E_LIST> + <TERM> <E_LIST>  

<E_LIST> - <TERM> <E_LIST>  

<E_LIST>

<TERM> <P> <T_LIST> 

<T_LIST> * <P> <T_LIST> 

<T_LIST> / <P> <T_LIST> 

<T_LIST>

<P> ( <EXP> ) 

<P> id |id <INCDEC_OP> | <NUMERIC_CONSTANT> |      <CHARACTER_CONSTANT> | id (< ID_2 > 

<INCDEC_OP>   ++ | --

TO HANDLE BLOCKS OF CODE AND RESOLVE SCOPE

<STMT> <L_BRACE> <STMT_LIST> <R_BRACE> 

<L_BRACE>

<R_BRACE>

 

 IF CONDITION 

<STMT> if ( <CONDITION> ) <STMT_LIST> <OPTIONAL_ELSE> 

<OPTIONAL_ELSE> ELSE <STMT_LIST> | E 

 CONDITIONS WITH LOGICAL OPERATOR

<CONDITION> ( <CONDITION_ST> ) <LOGICAL> 

<CONDITION> <CONDITION_ST> 

<CONDITION_ST> <OUTPUT> <ROP> <OUTPUT> 

<LOGICAL> <LOG_OP> ( <CONDITION_ST> ) <LOGICAL> 

<LOGICAL> E

 

FOR STATEMENT

<STMT> for ( id = <EXP> ; <CONDITION> ; <INC_DEC_FOR> ) <STMT_LIST> 

<INC_DEC_FOR> id = <EXP> | id <INC_DEC> 

 WHILE STATEMENT

<STMT> while ( <CONDITION> ) { <STMT_LIST> } 

FUNCTION CALLS 

<STMT> id ( <ID_2> ); 

<ID_2>     id <MORE_ID> | <NUMERIC_CONSTANT> <MORE_ID> |  <CHARACTER_CONSTANT> <MORE_ID> | E 

<MORE_ID>   ,   id <MORE_ID> | , <NUMERIC_CONSTANT> <MORE_ID> | , <CHARACTER_CONSTANT> <MORE_ID> | E

 

FUNCTION DEFINITION

<OPT_FUNCTION>   <TYPES> id ( <PARAM_LIST_2> ) { <STMT_LIST> } <OPT_FUNCTION> | E 

<PARAM_LIST_2> <DT> id <PARAM_2> | <VOID> | E 

<PARAM_2> , <DT> id <PARAM_2> | E

 

 

Hosted by www.Geocities.ws

1