< source programs >→< external declarations >|< external declarations >< function bodies >
< external declaration >→< header File >< function declaration >| Other declarations
< function body >→< return value type >< identifier >< formal parameter >< compound statement >
< return value type >→void|char|int|float
< identifiers >→< Letters >|< identifiers >< letters >|< identifiers >< numbers >
< letter >→a|b|c|...| y| |
< digital >→0|1|2|3|4|5|6|7|8| 9
< parameters >→< Data types > < identifiers >
< compound statement >→{}| {< statement list;}
< statement list >→< Compound statement >|< statement list >
< compound statement >→< Assignment Statement >|< conditional statement >|< Loop Statement >
< Assignment statements >→< identifiers >=< expressions >
< expression >→ expression + T | expression –t| T
T→f*f| T/f| F
f→ expression |i
< conditional statement >→s1| S2
<s1>→if < judgment Statement ><{conditional statement}> Else <{conditional statement}>
<s2>→if < judgment Statement ><{conditional statement}>| If < judge ><{Conditional statement}> S1
< judgment statements >→< identifiers >< logical operators >< identifiers | numbers >
< logical operator >→>|<|=|!| >=|<=
< loop statement >→<for statement >|<while statement >|<do while statement >
<for Statement >→for (Assignment statement; Judgment statement; < identifier ><D>) {statement list}
d→++|--
<while Statement >→while (judgment statement) {statement list}
<do While Statement >→do{statement list}while (judgment statement)
Simple C language Grammar