!============================================== Abbreviations used in grammar {Hex Digit} = {Digit} + [abcdefABCDEF] {Oct Digit} = [01234567] {Id Head} = {Letter} + [_] {Id Tail} = {Id Head} + {Digit} {String Ch} = {Printable} - ["] {Char Ch} = {Printable} - [''] DecLiteral = [123456789]{digit}* OctLiteral = 0{Oct Digit}* HexLiteral = 0x{Hex Digit}+ FloatLiteral = {Digit}*.{Digit}+ StringLiteral = '"'( {String Ch} | '\'{Printable} )* '"' CharLiteral = '' ( {Char Ch} | '\'{Printable} )'' Id = {Id Head}{Id Tail}* !============================================== The grammar starts here! ::= | ::= | | | | | | typedef id id ';' !============================================== Functions ::= '(' ')' ';' | '(' ')' ';' ::= ',' | ::= '(' ')' | '(' ')' | '(' ')' ::= ',' | ::= Id ',' | Id !============================================== Enums and Structs ::= struct Id '{' '}' ::= union Id '{' '}' ::= | ::= enum Id '{' '}' ::= ',' | ::= Id | Id '=' OctLiteral | Id '=' HexLiteral | Id '=' DecLiteral !============================================== Variable Declaration ::= ';' ::= | struct Id | struct '{' '}' | union Id | union '{' '}' | enum Id ::= extern | static | register | auto | ::= volatile | const | ::= signed | unsigned | long | short | signed short | unsigned short | signed long | unsigned long | ::= char | int | float | double | void ::= '*' | Id ::= ',' | !============================================== Statements ::= |