Advertisement
Guest User

Untitled

a guest
Jul 12th, 2011
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.43 KB | None | 0 0
  1. program := definitions
  2.  
  3. definitions := definition [definitions]
  4.  
  5. definition := variable-definition
  6. := namespace-definition
  7. := function-definition
  8.  
  9. pointer-modifier := '*' ['const']
  10. array-modifier := '[' expression ']' [array-modifier] [pointer-modifier]
  11. reference-modifier := '&'
  12. := '&&'
  13.  
  14. type-modifiers := pointer-modifier
  15. := array-modifier
  16. := reference-modifier
  17.  
  18. type-base := identifier
  19. := expression
  20. := type-literal
  21. := 'auto'
  22.  
  23. type-definition := ['const'] ['volatile'] type-base [type-modifiers]
  24.  
  25. variable-definition := ['static'] [type-definition] identifier = expression
  26. := ['static'] [type-definition] identifier function-call
  27. := ['static'] [type-definition] identifier
  28.  
  29. namespace-definition := 'namespace' identifier '{' [definitions] '}'
  30.  
  31. function-definition := [type-definition] identifier function-arguments-list compound-statement
  32.  
  33. function-arguments-list := '(' function-arguments ')' [function-arguments-list]
  34.  
  35. function-arguments := [type-definition] identifier
  36.  
  37. variable-modifiers := ['static'] ['auto'] [type-definition]
  38.  
  39. type-definition-list := type-definition [',' type-definition-list]
  40.  
  41. function-call-expression := expression function-call
  42. function-call := '(' [expression-list] ')'
  43.  
  44. identifier := [_\w][_\w\d]*
  45.  
  46. cast-expression := 'static_cast' function-call
  47. := 'dynamic_cast' function-call
  48. := 'reinterpret_cast' function-call
  49. := 'const_cast' function-call
  50.  
  51. arithmetic-expression := expression '*' expression
  52. := expression '+' expression
  53. := expression '/' expression
  54. := expression '-' expression
  55. := '+' expression
  56. := '-' expression
  57. := expression '+=' expression
  58. := expression '*=' expression
  59. := expression '/=' expression
  60. := expression '-=' expression
  61.  
  62. boolean-expression := expression '>' expression
  63. := expression '<' expression
  64. := expression '==' expression
  65. := expression '!=' expression
  66. := expression '<=' expression
  67. := expression '>=' expression
  68. := '!' expression
  69.  
  70. member-expression := expression '.' identifier
  71. := expression '->' identifier
  72.  
  73. bitwise-expression := expression '>>' expression
  74. := expression '<<' expression
  75. := expression '>>=' expression
  76. := expression '<<=' expression
  77. := '~' expression
  78. := expression '&' expression
  79. := expression '|' expression
  80. := expression '^' expression
  81.  
  82. type-literal := 'type' [':' type-definition-list] '{' [definitions] '}'
  83.  
  84. integral-literal := \d+
  85. := '0x' [\dA-F]+
  86.  
  87. string-literal := \"(\\.|[^\\"])*\"
  88.  
  89.  
  90. floating-point-literal := \d+ '.' \d+
  91.  
  92. literal-expression := type-literal
  93. := integral-literal
  94. := floating-point-literal
  95. := string-literal
  96.  
  97. access-expression := expression '[' expression ']'
  98.  
  99. assignment-expression := expression '=' expression
  100.  
  101. this-expression := 'this'
  102.  
  103. expression-list := [expression [',' expression-list]]
  104.  
  105. initializer-expression := expression
  106. := variable-definition
  107.  
  108. expression := member-expression
  109. := boolean-expression
  110. := arithmetic-expression
  111. := cast-expression
  112. := function-call-expression
  113. := access-expression
  114. := assignment-expression
  115. := identifier
  116. := this-expression
  117. := literal-expression
  118. := bitwise-expression
  119. := type-definition
  120.  
  121. if-statement := 'if' '(' initializer-expression ')' statement [else-statement]
  122. else-statement := 'else' statement
  123.  
  124. label-statement := identifier ':'
  125. goto-statement := 'goto' identifier
  126.  
  127. return-statement := 'return' expression
  128.  
  129. throw-statement := 'throw' expression
  130. try-statement := 'try' compound-statement catch-statement
  131. catch-statement := 'catch' '(' type-definition identifier ')' compound-statement [catch-statement]
  132. := 'catch' '(' '...' ')' compound-statement
  133.  
  134. for-statement := 'for' '(' initializer-expression ';' expression ';' expression ')' compound-statement
  135. while-statement := 'while' '(' initializer-expression ')' compound-statement
  136. do-while-statement := 'do' compound-statement 'while' '(' expression ')'
  137. case-statement := 'case' expression ':' statement-list [case-statement]
  138. := 'default' ':' statement-list
  139. switch-statement := 'switch' '(' initializer-expression ')' '{' case-statement '}'
  140.  
  141. break-statement := 'break'
  142. continue-statement := 'continue'
  143.  
  144. statement := expression
  145. := return-statement
  146. := if-statement
  147. := throw-statement
  148. := try-statement
  149. := compound-statement
  150. := label-statement
  151. := goto-statement
  152. := for-statement
  153. := while-statement
  154. := do-while-statement
  155. := switch-statement
  156. := break-statement
  157. := continue-statement
  158.  
  159. statement-list := statement [statement-list]
  160.  
  161. compound-statement := '{' [statement-list] '}'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement