| 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> → E <TERM> → <P> <T_LIST> <T_LIST> → * <P> <T_LIST> <T_LIST> → / <P> <T_LIST> <T_LIST> → E <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
|