home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / BB2-120.ZIP / C.LNG < prev    next >
Text File  |  1989-01-09  |  4KB  |  212 lines

  1. ?≡«»≤≥
  2. «c-language-items»
  3. ?«c-language-items»
  4. «external-definition»
  5. «function-definition»
  6. «statement»
  7. ≡«program»  «external-definition»
  8. ≤«external-definition»≥...
  9. ?«external-definition»
  10. «function-definition»
  11. «declaration»
  12. «preprocessor-statement»
  13. ≡«function-definition» ≤«decl-specifiers»≥ «declarator»
  14. ≤«declaration-list»≥ {
  15. ≤«declaration-list»≥
  16. ≤«statement-list»≥
  17. }
  18. ≡ STATEMENTS
  19. ≡«statement-list» «statement»
  20. ≤«statement-list»≥
  21. ?«statement»
  22. identifier : «statement»
  23. case «constant-expression»: «statement»
  24. default: «statement»
  25. «compound-statement»
  26. «expression»;
  27. «if-statement»
  28. switch ( «expression» ) «statement»
  29. while («expression») «statement»
  30. «do-statement»
  31. for («expression» ; «expression» ; «expression») «statement»
  32. goto identifier;
  33. continue;
  34. break;
  35. return ≤«expression»≥;
  36. «preprocess-statement»
  37. ;
  38. ≡«compound-statement» {
  39. ≤«declaration-list»≥
  40. ≤«statement-list»≥
  41. }
  42. ≡«if-statement» if («expression») «statement»
  43. ≤else if «statement»≥...
  44. ≤else «statement»≥
  45. ≡«do-statement» do «statement»
  46. while ( «expression» );
  47. ?«preprocessor-statement»
  48. #define identifier token-string
  49. #define identifier (identifier≤, identifier≥...) token-string
  50. #undef identifier
  51. #include "filename"
  52. #include <filename>
  53. «#if-statement»
  54. «#ifdef-statement»
  55. «#ifndef-statement»
  56. #else
  57. #endif
  58. #line constant identier
  59. ≡«#if-statement» #if «constant-expression»
  60. [#else]
  61. #endif
  62. ≡«#ifdef-statement» #ifdef identifier
  63. [#else]
  64. #endif
  65. ≡«#ifndef-statement» #ifndef indentifier
  66. [#else]
  67. #endif
  68. ≡ DECLARATIONS
  69. ≡«declaration» «decl-specifiers» «init-declarator»≤, «init-declarator»≥...;
  70. ?«decl-specifiers»
  71. «type-specifier» ≤«decl-specifiers»≥
  72. «sc-specifier» ≤«decl-specifiers»≥
  73. ≡«init-declarator» «declarator» ≤= «initializer»≥
  74. ?«sc-specifier»
  75. auto
  76. static
  77. extern
  78. register
  79. typedef
  80. ?«type-specifier»
  81. void
  82. char
  83. short
  84. int
  85. long
  86. float
  87. double
  88. unsigned
  89. «struct-or-union-specifier»
  90. «enum-specifier»
  91. «typedef-name»
  92. ?«struct-or-union-specifier»
  93. struct identifier
  94. struct [identifier] «{struct-decl-list}»
  95. union identifier
  96. union [identifier] «{struct-decl-list}»
  97. ≡«{struct-decl-list}» {
  98. «struct-decl-list»
  99. }
  100. ≡«struct-decl-list»
  101. struct-declaration
  102. ≤«struct-decl-list»≥
  103. ≡«struct-declaration» «type-specifier-list» «struct-declarator-list»;
  104. ≡«struct-declarator-list» «struct-declarator»≤, «struct-declarator»≥...
  105. ≡«type-specifier-list» «type-specifier» ≤«type-specifier»≥...
  106. ?«struct-declarator»
  107. «declarator»
  108. ≤«declarator»≥ : «constant-expression»
  109. ?«enum-specifier»
  110. enum ≤identifier≥ { «enumeration_list» }
  111. enum ≤identifier≥
  112. ≡«enumeration-list» «enumerator» ≤«, «enumerator»≥
  113. ≡«enumerator» «enumeration-constant» ≤«constant-expression»≥
  114. ?«declarator»
  115. identifier
  116. («declarator»)
  117. «declarator»[≤«constant-expression»≥]
  118. «declarator»(«parameter-type-list»)
  119. «declarator»(≤«identifier-list»≥)
  120. *≤«type-specifier-list»≥«declarator»
  121. ?«parameter-type-list»
  122. «parameter_list»
  123. «parameter_list»,...
  124. ≡«parameter-list» «parameter-declaration»≤, «parameter-declaration»≥...
  125. ?«parameter-declaration»
  126. «decl-specifiers» «declarator»
  127. «decl-specifiers» ≤«abstract-declarator»≥
  128. ≡«type-name» «type-specifier-list» ≤«abstract-declarator»≥
  129. ?«abstract-declaractor»
  130.  
  131. * «abstract-declarator»
  132. ( «abstract-declarator» )
  133. «abstract-declarator»  [ ≤«constant-expression»≥ ]
  134. «abstract-declarator» (≤«parameter-type-list»≥)
  135. ≡«typedef-name» identifier
  136. ≡«declaration-list» «declaration»
  137. ≤«declaration»≥...
  138. ?«initializer»
  139. = «expression»
  140. { «initializer-list» }
  141. ?«initializer-list»
  142. «initializer» ≤, «initializer»≥...
  143. ≡«comment» /* text */
  144. ≡ EXPRESSIONS
  145. ≡«constant-expression» «expression»
  146. ?«expression»
  147. «primary»
  148. * «expression»
  149. & «expression»
  150. - «expression»
  151. ! «expression
  152. ~ «expression»
  153. ++«lvalue»
  154. --«lvalue»
  155. «lvalue»++
  156. «lvalue»--
  157. sizeof «expression»
  158. («type-name») «expression»
  159. «expression» binop «expression»
  160. «expression» ? «expression» : «expression»
  161. «lvalue» asgnop «expression»
  162. «expression» , «expression»
  163. ?«primary»
  164. identifier
  165. constant
  166. string
  167. («expression»)
  168. «primary» ( ≤«expression»≥... )
  169. «primary»[expression]
  170. «lvalue».identifier
  171. «primary»->identifier
  172. ?«lvalue»
  173. identifier
  174. «primary» [«expression»]
  175. «lvalue».identifier
  176. «primary»->identifier
  177. * «expression»
  178. ( «lvalue» )
  179. ?«binop»
  180. *
  181. /
  182. %
  183. +
  184. -
  185. <<
  186. >>
  187. <
  188. >
  189. <=
  190. >=
  191. ==
  192. !=
  193. &
  194. ^
  195. |
  196. &&
  197. ||
  198. ?:
  199. ?«asgnop»
  200. =
  201. +=
  202. -=
  203. *=
  204. /=
  205. %=
  206. >>=
  207. <<=
  208. &=
  209. ^=
  210. |=
  211.  
  212.