home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Interactive Guide / c-cplusplus-interactive-guide.iso / c_ref / csource4 / 232_01 / syntax < prev    next >
Text File  |  1987-06-17  |  9KB  |  642 lines

  1. .so macros
  2. .ds CH
  3. .Sx "Class Description"
  4. .PS
  5. ellipsewid = 1.3i
  6. arrow
  7. A: ellipse "class heading"
  8. arc -> cw
  9. arc
  10. ellipse "instance variables"
  11. arc ->
  12. arc cw
  13. B: ellipse "protocol"
  14. arrow
  15. arrow from A.e to B.w
  16. .PE
  17. .Sx "Class Heading"
  18. .PS
  19. arrow
  20. circle "\fBClass\fP"
  21. arrow
  22. ellipse "variable"
  23. arrow right 3i
  24. move left 3i
  25. move right 0.1i
  26. arc -> cw
  27. arc
  28. ellipse "colon variable"
  29. arc ->
  30. arc cw
  31. .PE
  32. .IP
  33. \fBvariable\fP defines the class name, must begin with an upper case letter.
  34. .br
  35. \fBcolon variable\fP defines the superclass name, superclass is \fBObject\fP
  36. if not given.
  37. .Sx "Instance Variables"
  38. .PS
  39. arrow
  40. circle "|"
  41. arrow
  42. A: ellipse "variable"
  43. arc -> cw
  44. arc cw
  45. arrow left 1.3i
  46. arc cw
  47. arc cw
  48. move to A.e
  49. arrow
  50. circle "|"
  51. arrow
  52. .PE
  53. .IP
  54. Instance variables must begin with a lower case letter.
  55. .Sx "Protocol"
  56. .PS
  57. arrow
  58. circle "["
  59. arrow
  60. A: ellipse "method"
  61. arc -> cw
  62. line down 0.2i
  63. arc cw
  64. arrow left 0.4i
  65. circle "|"
  66. arrow left 0.4i
  67. arc cw
  68. line up 0.2i
  69. arc cw
  70. move to A.e
  71. arrow
  72. circle "]"
  73. arrow
  74. .PE
  75. .IP
  76. Vertical bar separating methods \fBmust\fP be placed in column 1.
  77. .Sx "Method"
  78. .PS
  79. arrow
  80. A: ellipse "method pattern"
  81. arc -> cw
  82. arc
  83. ellipse "temporary variables"
  84. arc ->
  85. arc cw
  86. C: ellipse "statements"
  87. arrow
  88. arrow from A.e to C.w
  89. .PE
  90. .bp
  91. .Sx "Method Pattern"
  92. .PS
  93. A: arrow
  94. ellipse "unary selector"
  95. arrow right 3i
  96. move to A
  97. arc -> cw
  98. line down 0.1i
  99. B: arc
  100. ellipse "binary selector"
  101. arrow
  102. ellipse "argument variable"
  103. arc ->
  104. line up 0.1i
  105. arc -> cw
  106. move to start of B
  107. line down 0.6i
  108. arc
  109. ellipse "keyword selector"
  110. arrow
  111. C: ellipse "argument variable"
  112. arc
  113. line up 0.6i
  114. move to C.e
  115. right
  116. arc -> cw
  117. arc cw
  118. arrow left 3.1i
  119. arc -> cw
  120. arc cw
  121. .PE
  122. .IP
  123. Argument variables must begin with a lower case letter,
  124. and must be distinct from instance variables.
  125. .Sx "Temporary Variables"
  126. .PS
  127. arrow
  128. circle "|"
  129. arrow
  130. A: ellipse "variable"
  131. arc -> cw
  132. arc cw
  133. arrow left 1.3i
  134. arc cw
  135. arc cw
  136. move to A.e
  137. arrow
  138. circle "|"
  139. arrow
  140. .PE
  141. .IP
  142. temporary variables must begin with lower case letters,
  143. and must be distinct from both instance and argument variables.
  144. .Sx "Statements"
  145. .PS
  146. arrow
  147. A: line right 1.5i
  148. move to start of A
  149. arc -> cw
  150. arc
  151. circle "\s+6\(ua\s-6"
  152. arc ->
  153. arc cw
  154. B: ellipse "expression"
  155. arrow right 2.5i
  156. move to B.e
  157. move right 0.5i
  158. arc -> cw
  159. arc
  160. circle "."
  161. arc ->
  162. arc cw
  163. move to B.e
  164. arc -> cw
  165. line down 0.4i
  166. arc -> cw
  167. circle "."
  168. arrow left 2.5i
  169. arc cw
  170. arrow up 0.4i
  171. arc cw
  172. .PE
  173. .Sx "Expression"
  174. .PS
  175. A: arrow right 3.3i
  176. move to start of A
  177. arc -> cw
  178. arc
  179. ellipse "variable"
  180. arrow
  181. B: circle "<\(mi"
  182. arc ->
  183. arc cw
  184. C: ellipse "cascaded expression"
  185. arrow
  186. move to B.e
  187. arc -> cw
  188. arc cw
  189. arrow left 2.3i
  190. arc -> cw
  191. arc cw
  192. .PE
  193. .bp
  194. .Sx "Cascaded Expression"
  195. .PS
  196. arrow
  197. ellipse "simple expression"
  198. arrow right 3.5i
  199. move left 0.5i
  200. right
  201. arc -> cw
  202. arc cw
  203. circle ";"
  204. arrow
  205. ellipse "continuation"
  206. arc -> cw
  207. arc cw
  208. .PE
  209. .Sx "Simple Expression"
  210. .PS
  211. arrow
  212. A: ellipse "binary"
  213. arrow
  214. move to A.e
  215. arc -> cw
  216. line down 0.2i
  217. arc cw
  218. ellipse "keyword"
  219. arc -> cw
  220. line up 0.2i
  221. arc cw
  222. .PE
  223. .Sx "Binary"
  224. .PS
  225. arrow
  226. A: ellipse "unary"
  227. arrow
  228. move to A.e
  229. arc -> cw
  230. B: line down 0.2i
  231. arc cw
  232. ellipse "binary selector"
  233. arc -> cw
  234. line up 0.2i
  235. arc cw
  236. .PE
  237. .Sx "Unary"
  238. .PS
  239. arrow
  240. A: ellipse "primary"
  241. B: line right 2i
  242. arc -> cw
  243. arc cw
  244. ellipse "unary selector"
  245. arc -> cw
  246. arc cw
  247. move to B.e
  248. arrow right
  249. .PE
  250. .Sx "Primitive"
  251. .PS
  252. arrow right 0.2i
  253. circle "<primitive" wid 0.7i
  254. arrow right 0.2i
  255. ellipse "unsigned integer"
  256. A: line right 1.7i
  257. arc -> cw
  258. arc cw
  259. ellipse "primary"
  260. arc -> cw
  261. arc cw
  262. move to A.e
  263. arrow right
  264. circle ">"
  265. arrow right
  266. .PE
  267. .IP
  268. Unsigned integer must be a number in the range 0-255.
  269. .bp
  270. .Sx "Primary"
  271. .PS
  272. A: arrow right 2i
  273. ellipse "variable"
  274. arrow right 2i
  275. move to start of A
  276. move right 0.5i
  277. arc -> cw
  278. B: line down 0.1i
  279. arc
  280. arrow right 1i
  281. ellipse "literal"
  282. arrow right 1i
  283. arc ->
  284. line up 0.1i
  285. arc cw
  286. move to end of B
  287. C: arrow down 0.6i
  288. arc
  289. arrow right 1i
  290. ellipse "block"
  291. arrow right 1i
  292. arc ->
  293. line up 0.6i
  294. move to end of C
  295. Z: arrow down 0.6i
  296. arc
  297. arrow right 1i
  298. ellipse "primitive"
  299. arrow right 1i
  300. arc ->
  301. line up 0.6i
  302. move to end of Z
  303. arrow down 0.6i
  304. arc
  305. circle "("
  306. arrow
  307. ellipse "cascaded expression"
  308. arrow
  309. circle ")"
  310. arc ->
  311. line up 0.6i
  312. .PE
  313. .IP
  314. If variable begins with an upper case letter it is a class name, otherwise
  315. variable must be instance, argument or temporary variable or pseudo variable
  316. name.
  317. .Sx "Continuation"
  318. .PS
  319. A: arrow
  320. arrow right 1.5i
  321. ellipse "unary selector"
  322. Z: line right 1.5i
  323. arrow right 0.5i
  324. move to end of Z
  325. arc -> cw
  326. arrow down 2i
  327. arc -> cw
  328. arrow left 4.5i
  329. arc -> cw
  330. arrow up 2i
  331. arc -> cw
  332. move to end of A
  333. arc -> cw
  334. C: arrow down 0.4i
  335. arc
  336. ellipse "binary selector"
  337. arrow
  338. ellipse "unary"
  339. arc ->
  340. line up 0.4i
  341. arc cw
  342. move to end of C
  343. arrow down 0.6i
  344. arc
  345. ellipse "keyword"
  346. arrow
  347. D: ellipse "binary"
  348. arc ->
  349. line up 0.6i
  350. move to D.e
  351. right
  352. arc -> cw
  353. arc cw
  354. arrow left 3.1i
  355. arc cw
  356. arc -> cw
  357. .PE
  358. .bp
  359. .Sx "Block"
  360. .PS
  361. arrow
  362. A: circle "["
  363. arrow right 2.2i
  364. ellipse "statements"
  365. arrow
  366. circle "]"
  367. arrow
  368. move to A.e
  369. arc -> cw
  370. arc
  371. ellipse "block arguments" width 1.2i
  372. arc ->
  373. arc cw
  374. .PE
  375. .IP
  376. The last statement cannot be followed by a period.
  377. .Sx "Block Arguments"
  378. .PS
  379. arrow
  380. A: ellipse "colon variable"
  381. arrow
  382. circle "|"
  383. arrow
  384. move to A.e
  385. arc -> cw
  386. arc cw
  387. arrow left 1.3i
  388. arc cw
  389. arc cw
  390. .PE
  391. .Sx "Literal"
  392. .PS
  393. arrow right 1i
  394. A: arrow
  395. ellipse "number"
  396. arrow right 1.5i
  397. move to start of A
  398. arc -> cw
  399. B: line down 0.1i
  400. arc
  401. ellipse "symbol"
  402. arc ->
  403. line up 0.1i
  404. arc cw
  405. move to end of B
  406. C: arrow down 0.6i
  407. arc
  408. ellipse "string"
  409. arc ->
  410. line up 0.6i
  411. move to end of C
  412. D: arrow down 0.6i
  413. arc
  414. ellipse "character constant"
  415. arc ->
  416. line up 0.6i
  417. move to end of D
  418. H: arrow down 0.6i
  419. arc
  420. ellipse "bytearray"
  421. arc ->
  422. line up 0.6i
  423. move to end of H
  424. E: arrow down 0.6i
  425. arc
  426. ellipse "array constant"
  427. arc ->
  428. line up 0.6i
  429. .PE
  430. .bp
  431. .Sx "Number"
  432. .PS
  433. A: arrow right 3.6i
  434. move to start of A
  435. arc -> cw
  436. arc
  437. ellipse "base" width 0.8i
  438. arc ->
  439. arc cw
  440. arc -> cw
  441. arc
  442. ellipse "sign" width 0.8i
  443. arc ->
  444. arc cw
  445. ellipse "unsigned number"
  446. arrow
  447. .PE
  448. .Sx "Base"
  449. .PS
  450. arrow
  451. ellipse "unsigned integer"
  452. arrow
  453. circle "r"
  454. arrow
  455. .PE
  456. .Sx "Sign"
  457. .PS
  458. A: arrow
  459. arrow right 3i
  460. move to end of A
  461. B: arc cw
  462. arc
  463. circle "+"
  464. arc
  465. arc cw
  466. move to end of B
  467. arrow down 0.6i
  468. arc
  469. circle "\(mi"
  470. arc
  471. arrow up 0.6i
  472. .PE
  473. .Sx "Unsigned Number"
  474. .PS
  475. arrow
  476. A: ellipse "unsigned fraction"
  477. arc -> cw
  478. arc
  479. circle "e"
  480. arrow right 0.25i
  481. ellipse "sign" width 0.8i
  482. arrow right 0.25i
  483. ellipse "unsigned integer"
  484. arc ->
  485. arc cw
  486. move to A.e
  487. arrow right 4.2i
  488. .PE
  489. .Sx "Unsigned Fraction"
  490. .PS
  491. arrow
  492. A: ellipse "unsigned integer"
  493. arc -> cw
  494. arc
  495. circle "."
  496. arrow
  497. ellipse "unsigned integer"
  498. arc ->
  499. arc cw
  500. move to A.e
  501. arrow right 4i
  502. .PE
  503. .Sx "Unsigned Integer"
  504. .PS
  505. arrow
  506. A: circle "digit"
  507. arrow
  508. move to A.e
  509. arc -> cw
  510. arc cw
  511. arrow left 0.5i
  512. arc -> cw
  513. arc cw
  514. .PE
  515. .bp
  516. .Sx "Symbol"
  517. .PS
  518. arrow
  519. circle "#"
  520. arrow
  521. A: circle "char"
  522. arrow
  523. move to A.e
  524. arc cw
  525. arc cw
  526. arrow left 0.5i
  527. arc cw
  528. arc cw
  529. .PE
  530. .IP
  531. char is any non-space character that is not one of period, parenthesis
  532. or square braces.
  533. .Sx "String"
  534. .PS
  535. arrow
  536. circle "'"
  537. arrow
  538. A: circle "char"
  539. arrow
  540. circle "'"
  541. arrow
  542. move to A.e
  543. arc cw
  544. arc cw
  545. arrow left 0.5i
  546. arc cw
  547. arc cw
  548. .PE
  549. .IP
  550. To include a quote mark in a string, use two adjacent quote marks.
  551. .Sx "Character Constant"
  552. .PS
  553. arrow
  554. circle "$"
  555. arrow
  556. circle "char"
  557. arrow
  558. .PE
  559. .Sx "Bytearray"
  560. .PS
  561. arrow
  562. circle "#"
  563. arrow
  564. circle "["
  565. arrow
  566. A: ellipse "unsigned integer"
  567. arrow
  568. circle "]"
  569. arrow
  570. move to A.e
  571. arc -> cw
  572. arc cw
  573. line left 1.3i
  574. arc -> cw
  575. arc cw
  576. .PE
  577. .IP
  578. Integer must be in the range 0 through 255.
  579. .Sx "Array Constant"
  580. .PS
  581. arrow
  582. circle "#"
  583. arrow
  584. ellipse "array"
  585. arrow
  586. .PE
  587. .bp
  588. .Sx "Array"
  589. .PS
  590. arrow
  591. circle "("
  592. arrow
  593. A: arc -> cw
  594. arc
  595. ellipse "number"
  596. arc ->
  597. arc cw
  598. B: arrow
  599. circle ")"
  600. arrow
  601. move to start of A
  602. arrow right 2.5i
  603. move to end of A
  604. C: arrow down 0.6i
  605. arc
  606. ellips