home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 22 gnu / 22-gnu.zip / fweb140x.zip / fweb.info-1 (.txt) < prev    next >
GNU Info File  |  1996-02-27  |  50KB  |  994 lines

  1. This is Info file fweb.info, produced by Makeinfo-1.55 from the input
  2. file fweb.texinfo.
  3.    This file documents FWEB...
  4.    Copyright 1993 John A. Krommes
  5.    Permission is granted to make and distribute verbatim      copies of
  6. this manual provided the copyright notice and      this permission
  7. notice are preserved on all copies.
  8.    Permission is granted to process this file through TeX      and
  9. print the results, provided the printed document      carries a copying
  10. permission notice identical to this      one except for the removal of
  11. this paragraph (this      paragraph not being relevant to the printed
  12. manual).
  13.    Permission is granted to copy and distribute modified      versions
  14. of this manual under the conditions for      verbatim copying, provided
  15. also that the section      entitled "Copying" is included exactly as in
  16. the original, and provided      that the entire resulting derived work
  17. is distributed      under the terms of a permission notice identical to
  18. this      one.
  19.    Permission is granted to copy and distribute      translations of
  20. this manual into another language,      under the above conditions for
  21. modified versions,      except that this permission notice may be
  22. stated in a      translation approved by the author.
  23. File: fweb.info,  Node: Top,  Next: Copying,  Prev: (dir),  Up: (dir)
  24.    This info browser for FWEB is a "work-in-progress".  The previous
  25. large FWEB user manual (which was built in large measure from an early
  26. version of Levy's CWEB) is presently frozen at version 1.30.  One can
  27. obtained a TeX'd copy of the present documention by saying `tex
  28. fweb.texinfo'.
  29.    The first part of this master menu lists the major nodes in this Info
  30. document.  The rest of the menu lists all the lower-level nodes in the
  31. document.
  32.    This Texinfo documentation describes FWEB Version 1.40, which
  33. initiates a major upgrade project.  This version contains significant
  34. improvements and new features, both visible and invisible to the user.
  35. *THERE WILL BE BUGS.*  If you are involved in a large programming
  36. project dependent on FWEB, it is not recommended that you upgrade this
  37. version unless you have a need for specific bug fixes.  Versions 1.4?
  38. are not intended for new users, but only for very patient friends.
  39. * Menu:
  40. * Copying::             Your rights; NO WARRANTY.
  41. * Intro::               An introduction to FWEB.
  42. * Concepts::            General concepts of WEB programming.
  43. * Files::               Files used by FWEB.
  44. * Starting::            Command-line syntax and options
  45. * @ commands: AT commands.  FWEB commands.
  46. * Comments::            Commenting styles.
  47. * Languages::           Languages.
  48. * Macros::              Macro definitions and preprocessing.
  49. * Ratfor::              RATional FORtran.
  50. * Formatting::          Features and hints about formatting with FWEAVE.
  51. * Customization::       Customizing FWEB, learning about parameters, etc.
  52. * Hints::               Various usage tips, etc.
  53. * New features::        New features/changes in the current version.
  54. * Support::             Help, bug reports, etc.
  55. * Index::
  56.  -- The Detailed Node Listing --
  57. INTRODUCTION to FWEB
  58. * History::             History of literate programming.
  59. * Features::            Special features of FWEB.
  60. WEB CONCEPTS
  61. * Processors::          FTANGLE and FWEAVE.
  62. * Phases::              Phases of operation of the FWEB processors.
  63. * Structure::           The structure of a web.
  64. * Modules::             Use of named and unnamed modules.
  65. FILES
  66. * Input files::         Input files.
  67. * Output files::        Output files.
  68. * Change files::        Change files.
  69. Input files
  70. * Completion::          Automatic file-name completion.
  71. RUNNING FWEB
  72. * Syntax::      Command-line syntax.
  73. * Options::     Command-line options.
  74. Command-line options
  75. * Negating options:: How to invert the meaning of an option.
  76. * -1::          Brief debugging mode.
  77. * -2::          Verbose debugging mode.
  78. * -@: -AT.      Display information about control codes.
  79. * -A: -A_.      Turn on ASCII translations.
  80. * -B: -B_.      Turn off audible beeps.
  81. * -b::          Number blocks.
  82. * -c::          Set global language to C.
  83. * -c++: -cpp.   Set global language to C++.
  84. * -D: -D_.      Display information about FWEB's reserved words.
  85. * -d::          Convert unnumbered `do...enddo's to Fortran-77.
  86. * -E: -E_.      Change the delimiter of a file-name extension.
  87. * -e::          Turn on automatic file-name completion.
  88. * -F: -F_.    Compare output files with old versions.
  89. * -f::          Turn off module references for identifiers.
  90. * -h::          Where to get help.
  91. * -I: -I_.      Append a directory to search list for include files.
  92. * -i::          Don't print contents of @I include files.
  93. * -i!::         Don't even read @I include files.
  94. * -L: -L_.      Select global language.
  95. * -l::          Echo the input line.
  96. * -m::          Define a WEB macro.
  97. * -m4::         Understand the m4 built-in commands.
  98. * -m;::         Append pseudo-semicolons to WEB macro definitions.
  99. * -n::          Set global language to Fortran-77.
  100. * -n9::         Set global language to Fortran-90.
  101. * -n;::         For Fortran-77, supply semicolons automatically (default).
  102. * -nb::         In Fortran, number the ifs and dos.
  103. * -np::         Print semicolons in woven Fortran output.
  104. * -n\::         In Fortran-90, free-form syntax continued with '\\'.
  105. * -n&::         In Fortran-90, free-form syntax continued with '&'.
  106. * -n/::         In Fortran, recognize '//' as the start of a short comment.
  107. * -n!::         In Fortran, make '!' denote the start of a short comment.
  108. * -n)::         In Fortran, reverse array indices.
  109. * -o::          Turn off FWEAVE's mechanisms for overloading operators.
  110. * -q::          Don't translate Ratfor.
  111. * -P: -P_.      Select TeX processor.
  112. * -p::          Set style parameter.
  113. * -r::          Set the global language to Ratfor-77.
  114. * -r9::         Set the global language to Ratfor-90.
  115. * -rb::         In Ratfor, number the ifs and dos.
  116. * -rg::         Set |goto| parameters.
  117. * -rk::         Suppress comments about Ratfor statement translation.
  118. * -rK: -rK_.    Write out comments about Ratfor statement translation.
  119. * -r;::         Turn on Ratfor's auto-semi mode.
  120. * -r/::         In Ratfor, recognize '//' as the start of a short comment.
  121. * -r!::         In Ratfor, make '!' denote the start of a short comment.
  122. * -r)::         In Ratfor, reverse, array indices.
  123. * -s::          Print statistics about memory usage.
  124. * -T: -T_.      Flag-setting commands for FTANGLE.
  125. * -t::          Truncate identifiers.
  126. * -U: -U_.      Convert reserved output tokens to lower case.
  127. * -u::          Undefined a predefined or command-line macro.
  128. * -v::          Make all comments verbatim.
  129. * -W: -W_.      Flag-setting commands for FWEAVE.
  130. * -w::          Modify processing of `fwebmac.sty'.
  131. * -X: -X_.      Print selected cross-reference information.
  132. * -x::          Reduce or eliminate cross-reference information.
  133. * -y::          Allocate dynamic memory.
  134. * -Z: -Z_.      Display default values of style-file parameters.
  135. * -z::          Change name of style file.
  136. * -.::          Don't recognize dot constants.
  137. * -\::          Explicitly escape continued strings.
  138. * -(: -lp.      Continue parenthesized strings with backslashes.
  139. * -: -colon.    Set starting automatic statement number.
  140. * ->::          Redirect tangled output.
  141. * -=::          Redirect tangled output.
  142. * -#::          Don't print comments about line numbers and module names
  143.                 in tangled output.
  144. * -+: -plus.    Don't interpret compound assignment operators.
  145. * -/::          Recognize '//' as the start of a short comment.
  146. * -!::          Make '!' denoted the start of a short comment.
  147. * Info options:: Information options.
  148. `-T':  Flag-setting commands for FTANGLE.
  149. * -TD::                Permit processing of deferred macro definitions.
  150. * -T%::                Don't retain trailing comments.
  151. `-W':  Flag-setting commands for FWEAVE.
  152. * -W[::                 Turn on processing of bracketed array indices.
  153. * -Wdflmvw::             Don't print various things in woven output.
  154. WEB COMMANDS
  155. * @0: AT0.     Turn off debugging.
  156. * @1: AT1.     Display irreducible scraps.
  157. * @2: AT2.     Display detailed scrap reductions.
  158. Literal control characters:
  159. * @@: ATAT.     Insert an '@'.
  160. * @|: AT|.      Vertical bar/optional line break.
  161. Beginning of section:
  162. * @ : ATspace.  Begin minor section.
  163. * @*: AT*.      Begin major section.
  164. Beginning of code part:
  165. * @<: AT<.      Begin module name.
  166. * @>: AT>.      End module name.
  167. * @A: ATA_.     Begin code part.
  168. * @a: ATa.      Begin code part and mark next identifier.
  169. Control codes b-z:
  170. * @b: ATb.      Insert breakpoint command.
  171. * @c: ATc.      Set language to C.
  172. * @c++: ATcpp.  Set language to C++.
  173. * @D: ATD_.     Define outer macro.
  174. * @d: ATd.      Define outer macro and mark it.
  175. * @f: ATf.      Format identifier or module name.
  176. * @I: ATI_.     Include a WEB file, but don't print it.
  177. * @i: ATi.      Include a WEB file.
  178. * @L: ATL_.     Set language.
  179. * @l: ATl.      Specify limbo text.
  180. * @M: ATM_.     Define a WEB macro.
  181. * @m: ATm.      Define a WEB macro and mark it.
  182. * @N: ATN_.     Turn on language-independent mode.
  183. * @n: ATn.      Set language to Fortran-77.
  184. * @n9:ATn9.     Set language to Fortran-90.
  185. * @O: ATO_.     Open new output file (global scope).
  186. * @o: ATo.      Open new output file (local scope).
  187. * @r: ATr.      Set language to Ratfor-77.
  188. * @r9: ATr9.    Set language to Ratfor-90.
  189. * @u: ATu.      Undefine an outer macro.
  190. * @v: ATv.      Overload an operator.
  191. * @W: ATW_.     Overload an identifier.
  192. * @x: ATx.      Terminate ignorable material.
  193. * @y: ATy.     End first part of change.
  194. * @z: ATz.      Begin ignorable material.
  195. Conversion to ASCII:
  196. * @': ATquote.     Convert single character to ASCII.
  197. * @": AT".         Convert string to ASCII.
  198. Forward referencing:
  199. * @[: AT[.         Mark next identifier as defined in this section.
  200. Comments:
  201. * @/*: AT/*.        Begin a long verbatim comment.
  202. * @//: AT//.        Begin a short verbatim comment.
  203. * @%: AT%.          Ignore everything to next newline.
  204. * @?: AT?.          Begin a compiler directive.
  205. * @(: ATlp.         Begin a meta-comment.
  206. * @): AT).          End a meta-comment.
  207. Special brace:
  208. * @{: ATlb.        Suppress default insertion of breakpoint command.
  209. Index entries:
  210. * @_: AT_.         Force an index entry to be underlined (marked as defined).
  211. * @-: AT-.         Delete index entry for following identifier.
  212. * @+: ATplus.      Force index entry for following identifier.
  213. * @^: AT^.         Make index entry in Roman type.
  214. * @.: ATdot.       Make index entry in typewriter type.
  215. * @9: AT9.         Make index entry in format controlled by `\9'.
  216. Control text:
  217. * @t: ATt.         Put control text into TeX \hbox.
  218. * @=: AT=.         Pass control text verbatim to the output.
  219. Spacing:
  220. * @comma: ATcomma. Insert a thin space.
  221. * @/: AT/.         Insert a line break.
  222. * @|: AT|_.        Insert optional line break in an expression.
  223. * @#: AT#.         Force line break with blank line.
  224. * @~: AT~.         Cancel a line break (tie adjacent lines together).
  225. * @&: AT&.         Join left and right items.
  226. Pseudo (invisible) operators:
  227. * @e: ATe.         Invisible expression.
  228. * @;: AT;.         Invisible semicolon.
  229. * @colon: ATcolon.     Invisible colon.
  230. Miscellaneous:
  231. * @!: AT!.         Inhibit expansion for next macro.
  232. COMMENTING STYLES
  233. * Invisible comments::          Skipping input material.
  234. * Visible comments::            Comments in code mode.
  235. MACROS and PREPROCESSING
  236. * Outer macros::        Macros copied to beginning of output file (@d).
  237. * WEB macros::          Macros expanded by FWEB (@m).
  238. * Preprocessing::       FWEB's preprocessing language (@#if etc.)
  239. WEB macros
  240. * Macro features::      Various points about WEB macros.
  241. * Tokens::              Special tokens used in WEB macros.
  242. * Built-in functions::  Macro functions built into FWEB.
  243. Built-in functions
  244. * $A::                  Convert to ASCII.
  245. * $ABS::                Absolute value.
  246. * $ASSERT::             Assert a condition.
  247. * $COMMENT::            Generate a comment.
  248. * $DATE::               Today's date.
  249. * $DAY::                Today.
  250. * $DECR::               Decrement a macro.
  251. * $DEFINE::             Define a macro.
  252. * $DO::                 Macro `DO' loop.
  253. * $DUMPDEF::            Dump macro definitions to the terminal.
  254. * $E::                  2.71828...
  255. * $ERROR::              Send error message to output.
  256. * $EVAL::               Evaluate an expression.
  257. * $EXP::                Exponential function.
  258. * $GETENV::             Get value of environment variable.
  259. * $HOME::               The user's home directory.
  260. * $IF::                 Two-way conditional:  "If expression is true"
  261. * $IFCASE::             n-way conditional.
  262. * $IFDEF::              Two-way conditional:  "If macro is defined"
  263. * $IFNDEF::             Two-way conditional:  "If macro is not defined"
  264. * $IFELSE::             Two-way conditional:  "If macro1 equals macro2"
  265. * $INCR::               Increment a macro.
  266. * $INPUT_LINE::         Line number that begins current section.
  267. * $L::                  Change string to lower case.
  268. * $LANGUAGE::           Identifier for current language.
  269. * $LANGUAGE_NUM::       Number of current language.
  270. * $LEN::                Length of string.
  271. * $LOG::                Natural logarithm.
  272. * $LOG10::              Logarithm to the base 10.
  273. * $M::                  Define a macro.
  274. * $MAX::                Maximum of one or more elements.
  275. * $MIN::                Minimum of one or more elements.
  276. * $MODULE_NAME::        Name of present WEB module.
  277. * $MODULES::            Total number of independent modules.
  278. * $OUTPUT_LINE::        Current line number of tangled output.
  279. * $P::                  The C preprocessor symbol `'#''.
  280. * $PI::                 3.14159...
  281. * $POW::                Raise to a power.
  282. * $ROUTINE::            Current RATFOR program, function, or subroutine.
  283. * $SECTION_NUM::        Number of current section.
  284. * $SECTIONS::           Maximum number of sections.
  285. * $SQRT::               Square root.
  286. * $STRING::             Expand argument, then stringize.
  287. * $STUB::
  288. * $TIME::               The local time.
  289. * $TRANSLIT::           Transliterate a string.
  290. * $U::                  Change string to upper case.
  291. * $UNDEF::              Undefine a WEB macro.
  292. * $UNQUOTE::            Remove quotes from string.
  293. * $VERBATIM::           (Obsolete.)
  294. * $VERSION::            FWEB version number.
  295. LANGUAGES
  296. * Setting::             Setting the language.
  297. Special hints and considerations for each language.
  298. * C::                   C
  299. * C++: Cpp.             C++.
  300. * Fortran::             Fortran-77 and Fortran-90.
  301. * Ratfor: Ratfor_.      RATional FORtran.
  302. * TeX::                 TeX.
  303. * Verbatim::            Literal mode.
  304. RATFOR
  305. * Commands::            Ratfor commands.
  306. * Caviats::             Nuances about FWEB Ratfor.
  307. FORMATTING
  308. * Typesetting::         Woven output; TeX vs. LaTeX, etc.
  309. * Pretty-printing::     Turning ugly input into beautiful output.
  310. Typesetting
  311. * Output::    Structure of the TeX output from FWEAVE.
  312. * LaTeX::    Specifics of the LaTeX support.
  313. LaTeX support
  314. * Document style::    LaTeX's document style, options, etc.
  315. * Sections::            Section numbering, spacing, etc.
  316. * Table of contents::   The table of contents.
  317. * Customizing LaTeX::   Conditional flags, etc.
  318. Customizing LaTeX's output
  319. * Page references::     Indexing by page numbers.
  320. * Numbering::           Various section numbering schemes.
  321. Pretty-printing
  322. * Alternatives::        Alternatives for various input tokens.
  323. * Pseudo-operators::    Invisible parts of speech.
  324. * Overloading::         Changing the appearance of various quantities.
  325. CUSTOMIZATION
  326. * Environment variables::       Environment or logical variables.
  327. * Initialization::              Initialization file.
  328. * Memory allocation::           Dynamic memory allocation.
  329. * Style::                       Style file.
  330. Memory allocation
  331. * -yb::         Maximum bytes for identifiers, index entries, and module names.
  332. * -ybs::        Size of the change buffer.
  333. * -ycb::        Size of line buffer for C output.
  334. * -ycf::        A Ratfor buffer.
  335. * -ycg::        Another Ratfor buffer.
  336. * -yd::         Increment for expanding the dots table.
  337. * -ydt::        Maximum number of deferred macro tokens.
  338. * -ydx::        Maximum Number of deferred macro texts.
  339. * -ykt::        Stack size for FTANGLE.
  340. * -ykw::        Stack size for FWEAVE.
  341. * -yll::        Line length for FWEAVE's output.
  342. * -yln::        Maximum length of module names or strings.
  343. * -ylb::        Maximum number of nested loops in Ratfor.
  344. * -ylx::        Maximum length of expressions that can be expanded with
  345.                         the post-increment operators of Fortran or Ratfor.
  346. * -ym::         Maximum number of sections.
  347. * -yma::        Maximum number of arguments to WEB macros.
  348. * -ymb::        Size of the buffer for expanding WEB macros.
  349. * -yn::         Maximum number of identifiers, strings, and module names.
  350. * -ynf::        Maximum number of open input files.
  351. * -yop::        Maximum number of entries in the table for operator
  352.                         overloading.
  353. * -yr::         Maximum number of cross-references.
  354. * -ys::         Maximum number of scraps.
  355. * -ysb::        Size of style-file buffer.
  356. * -ytt::        Maximum number of tokens that FTANGLE can process.
  357. * -ytw::        Maximum number of tokens in the current section being
  358.                         processed by FWEAVE.
  359. * -yx::         Maximum number of texts.
  360. * -yxb::        Size of line buffer for TeX output.
  361. The Style file
  362. * Index params::                Customizing the index.
  363. * Module params::               Customizing the list of sections.
  364. * Contents params::             Customizing the table of contents.
  365. * Subscript params::            Customizing subscripting for cross-references.
  366. * Fwebmac params::              Customizing behavior of FWEB's macros.
  367. * Completion params::           Automatic selection of file extensions, etc.
  368. * Control-code mappings::       Remapping FWEB's control codes (danger)!
  369. * Miscellaneous params::        Other customizations.
  370. Customizing FWEAVE's index
  371. * delim_0: S_delim.             Insert after identifier in index entry.
  372. * delim_n: S_delim.             Insert between section numbers in index entry.
  373. * encap.infix: S_encap.         Start the section number.
  374. * encap.prefix: S_encap.        TeX macro to begin a section number.
  375. * encap.suffix: S_encap.        Ends the section number.
  376. * group_skip::
  377. * index.collate: S_index.       Collating sequence for index.
  378. * index.postamble: S_index.     TeX material to end the index.
  379. * index.preamble: S_index.      TeX material to begin the index.
  380. * index.tex: S_index.           Name of file holding index.
  381. * item_0::                      TeX command to begin an index entry.
  382. * language.prefix: S_language.  Begin a language entry in the index.
  383. * language.suffix: S_language.  End a language entry in the index.
  384. * lethead.prefix: S_lethead.    Begin a letter group.
  385. * lethead.suffix: S_lethead.    End a letter group.
  386. * lethead.flag: S_lethead.      Control beginning of letter group.
  387. * underline.prefix: S_underline. Begin an underlined index entry.
  388. * underline.suffix: S_underline. End an underlined index entry.
  389. Customizing the module list
  390. * modules.info: S_modules.
  391. * modules.postamble: S_modules. TeX commands to end module list.
  392. * modules.preamble: S_modules.  TeX commands to begin module list.
  393. * modules.tex: S_modules.       Name of file containing list of modules.
  394. Customizing the table of contents
  395. * contents.postamble: S_contents. TeX commands to end table of contents.
  396. * contents.preamble: S_contents.  TeX commands to begin table of contents.
  397. * contents.tex: S_contents.       Name of contents file.
  398. Customizing cross-reference subscripts
  399. * mark_defined.generic_name: S_mark_defined.
  400. * mark_defined.fcn_name: S_mark_defined.
  401. * mark_defined.WEB_macro: S_mark_defined.
  402. * mark_defined.outer_macro: S_mark_defined.
  403. * mark_defined.exp_type: S_mark_defined.
  404. * mark_defined.typedef_name: S_mark_defined.
  405. Customizing the behavior of `fwebmac.sty' macros
  406. * format.reserved: S_format.
  407. * format.short_identifier: S_format.
  408. * format.outer_macro: S_format.
  409. * format.WEB_macro: S_format.
  410. * format.intrinsic: S_format.
  411. * format.keyword: S_format.
  412. * format.typewriter: S_format.
  413. * format.wildcard: S_format.
  414. * indent.TeX: S_indent.         Paragraph indentation for TeX part.
  415. * indent.code: S_indent.        Paragraph indentation for code part.
  416. * LaTeX.options: S_LaTeX.       Set options for document style.
  417. * LaTeX.style: S_LaTeX.         Specify document style.
  418. Miscellaneous style-file parameters
  419. * ASCII_fcn::                   Routine for converting strings to ASCII.
  420. * cchar::                       Continuation character for Fortran.
  421. * cdir_start::                  `?' translates to this.
  422. * line_length: S_line_length.
  423. * meta.top: S_meta_t.           Material to precede tangled meta-comment.
  424. * meta.prefix: S_meta_t.        Begins each line of meta-comment.
  425. * meta.bottom: S_meta_t.        Material that follows the meta-comment.
  426. * outer.def: S_outer.           FTANGLE converts `@d' to this.
  427. * outer.undef: S_outer.         FTANGLE converts `@u' to this.
  428. * protect::                     Protection character to end a continued line.
  429. * suffix::                      Suffixes for output files.
  430. For FWEAVE:
  431. * macros::                      Default name of the macro package to be
  432.                                         read in by FWEAVE.
  433. * limbo::                       Default material to begin the limbo part
  434. * meta.code.begin: S_meta_w.
  435. * meta.code.end: S_meta_w.
  436. * meta.TeX.begin: S_meta_w.     TeX material to begin FWEAVE's
  437.                                                 output of a meta-comment.
  438. * meta.TeX.end: S_meta_w.       As above, but end the meta-comment.
  439. * preamble.named: S_preamble.   TeX material to begin named section.
  440. * preamble.unnamed: S_preamble. TeX material to begin unnamed section.
  441. For both processors:
  442. * dot_constant.begin: S_dot_constant.   Beginning character for dot constant.
  443. * dot_constant.end: S_dot_constant.     Ending character for dot constant.
  444. * null_file::                   Name of the null file.
  445. Automatic file name completion:
  446. * ext.web: S_ext.        Extensions for the web file.
  447. * ext.change: S_ext.     Extensions for the change file.
  448. * ext.hweb: S_ext.       Extensions for include files.
  449. * ext.hchange: S_ext.    Extensions for change files associated with
  450.                                 include files.
  451. File: fweb.info,  Node: Copying,  Next: Intro,  Prev: Top,  Up: Top
  452. FWEB Copying Permissions
  453. ************************
  454.    FWEB is "free"; this means that everyone is free to use them and
  455. free to redistribute them on a free basis.  FWEB operates under the
  456. terms of the GNU General Public License; see, for example, *Note
  457. Distribution: (emacs)Distrib.
  458.    Although it is hoped that FWEB will be useful, there is *ABSOLUTELY
  459. NO WARRANTY*.
  460. File: fweb.info,  Node: Intro,  Next: Concepts,  Prev: Copying,  Up: Top
  461. INTRODUCTION to FWEB
  462. ********************
  463.    FWEB is a system for "literate programming".  It was originally
  464. intended for scientific programming, and is in wide use in that arena;
  465. however, it has much broader applicability.  It is an extension of
  466. Knuth's WEB system that handles the specific languages C, C++, Fortran,
  467. Ratfor, and TeX.  It also supports a WYSIWYG language-independent mode
  468. as well as a (closely-related but not identical) verbatim `language'.
  469.    The origins of literate programming are described in the very
  470. enjoyable book by D. E. Knuth, "Literate Programming" (Center for the
  471. Study of Language and Information, Leland Standard Junior University,
  472. 1992).
  473.    Knuth's original WEB was written in Pascal and formatted Pascal code.
  474. Silvio Levy introduced CWEB, a WEB system written in C for C.  FWEB is a
  475. (by now, substantial) modification of an early version of CWEB that was
  476. graciously supplied by Levy.  It also borrows various ideas from the
  477. work of Ramsey and Briggs on language-independent webs.
  478. * Menu:
  479. * History::             History of literate programming.
  480. * Features::            Special features of FWEB.
  481. File: fweb.info,  Node: History,  Next: Features,  Prev: Intro,  Up: Intro
  482. History of WEB and literate programming
  483. =======================================
  484.    (To be completed; see Knuth's book.)
  485. File: fweb.info,  Node: Features,  Prev: History,  Up: Intro
  486. FWEB features
  487. =============
  488.    FWEB is distinguished from its relatives in several respects:
  489.    * FWEB introduces the concept of a current language (*note
  490.      Languages::.), so more than one compiler language can be processed
  491.      in a single WEB run.
  492.    * FWEB understands the syntaxes of several of the more important
  493.      compiler languages:  C, C++, Fortran, Ratfor, and TeX.  For other
  494.      languages, FWEB can work in a language-independent mode that
  495.      essentially weaves and tangles the source code verbatim, but still
  496.      provides the user with the powerful WEB features related to TEX
  497.      documentation, module names, macro processing, etc.
  498.    * FWEB contains a built-in Ratfor (RATional FORtran) translator.
  499.      *Note Ratfor::.
  500.    * FWEB has a built-in C-like macro preprocessor, which should be
  501.      especially useful for Fortran and Ratfor.  *Note Macros::, *Note
  502.      Preprocessing::.
  503.    * Many aspects of FWEB's behavior can be customized by means of
  504.      setting parameters in a style file.
  505. File: fweb.info,  Node: Concepts,  Next: Files,  Prev: Intro,  Up: Top
  506. WEB CONCEPTS
  507. ************
  508.    The principle concepts of WEB programming are laid out in Knuth's
  509. book, the reference to which is given in *Note Intro::.  FWEB follows
  510. most conventions introduced by WEB and CWEB, except that the names of
  511. some commands have been changed for consistency, symmetry, and/or
  512. clarity.
  513. * Menu:
  514. * Processors::          FTANGLE and FWEAVE.
  515. * Phases::              Phases of operation of the FWEB processors.
  516. * Structure::           The structure of a web.
  517. * Modules::             Use of named and unnamed modules.
  518. File: fweb.info,  Node: Processors,  Next: Phases,  Prev: Concepts,  Up: Concepts
  519. The FWEB processors
  520. ===================
  521.    Following Knuth's original design, FWEB consists of two processors,
  522. FTANGLE and FWEAVE.  Both operate on a single source file, say
  523. `test.web'.  FTANGLE produces compilable code, say `test.c', whereas
  524. FWEAVE produces a TeX file, `test.tex', that can be processed with TeX
  525. or LaTeX.  For detailed descriptions of the LaTeX support, see *Note
  526. LaTeX::.
  527. File: fweb.info,  Node: Structure,  Next: Modules,  Prev: Phases,  Up: Concepts
  528. The structure of a web
  529. ======================
  530.    An FWEB source file is structured into sections.  Each section
  531. consists of three (optional) parts: the
  532.   1. TeX part;
  533.   2. definition part; and
  534.   3. code part.
  535. Sections can be combined into larger units called "modules", as
  536. explained in *Note Modules::.
  537.    A simple example of an FWEB source file consisting of two sections
  538. is as follows:
  539.      @n
  540.      
  541.      @* INTRODUCTION.
  542.      This code is intended...
  543.      
  544.      @m PI 3.14159
  545.      
  546.      @a
  547.              program main
  548.              call compute
  549.              end
  550.      
  551.      @ The computational routine is pretty boring.
  552.      @a
  553.              subroutine compute
  554.              write(*,*) 'pi = ', PI
  555.              end
  556.    Commands to FWEB are begun by the `@' symbol (*note AT commands::.).
  557. In this example, the first command, `@n', sets the global language to
  558. Fortran-77.  For more information about languages, see *Note
  559. Languages::.
  560.    The `@*' command begins a major section (corresponding to LaTeX's
  561. `\section' command); this command is followed by the section name,
  562. terminated by a period.  Major sections are entered in the table of
  563. contents.  The command `@*n' begins a major (sub)section of level n,
  564. where `@*0' is equivalent to the simple `@*', `@*1' indicates a
  565. subsection, `@*2' indicates a subsubsection, and so on.
  566.    Minor sections are begun by `@ '; these have no associated names and
  567. are not entered into the table of contents.
  568.    All sections begin with TeX commentary.  This is followed by an
  569. optional definition part.  The beginning of the definition part is
  570. signaled by the appearance of any one of the commands `@d', `@f', `@m',
  571. `@v', `@W'.  In the example, the first section has a definition part
  572. consisting of one macro definition (`@m'); the second section has no
  573. definition part.
  574.    An unnamed code part is begun by `@a'.  A named code part is begun
  575. by the appearance of a module name such as `@<Global variables@>',
  576. followed by an equals sign; see *Note Modules::.
  577.    The portion of the source file before the first section (i.e., before
  578. the first `@*' or `@ ') is called `in limbo' or `the limbo part'.  The
  579. only `@' commands that are allowed in limbo (in addition to `@@', which
  580. is allowed anywhere) are the language-changing commands, and one of
  581. those should appear.  Other text in limbo is ignored by FTANGLE and is
  582. copied by FWEAVE to the output file.  Thus, one can make TeX macro
  583. definitions in limbo that override the defaults in FWEB's style file
  584. `fwebmac.sty'.  (Another way of getting TeX text into the limbo part is
  585. by means of the `@l' command; see *Note ATl::.)
  586. File: fweb.info,  Node: Modules,  Prev: Structure,  Up: Concepts
  587. Modules
  588. =======
  589.    Sections can be combined into modules.  Modules can be named or
  590. unnamed. There is just one unnamed module.
  591. The unnamed module
  592. ------------------
  593.    The unnamed module is introduced by the command `@a'.  Subsequent
  594. uses of `@a' accrete code to the unnamed module.  *FTANGLE outputs the
  595. unnamed module.*
  596. Named modules
  597. -------------
  598.    A module name is specified by
  599.      @< Arbitrary TeX text @>
  600. Leading and trailing white space around the name text is ignored.
  601.    To define a named module, replace the `@a' that begins the unnamed
  602. code part of a section by `@< module name @>='.  If one uses this
  603. construction with the same name in a later section, the effect is to
  604. *accrete* to the contents of the original section.  Thus, a named module
  605. might ultimately consists of the code from sections 2, 5, and 8, for
  606. example.
  607.    To use a named module, simply use the name anywhere in a code part;
  608. FTANGLE will insert the contents of the module at the point where the
  609. name is used.  For example,
  610.      @c
  611.      @ Here's how to use a named module.
  612.      @a
  613.      for(i=1; i<n; i++)
  614.              @< Inner loop @>@;
  615.      
  616.      @ Here's how to define a named module.  Definitions may occur after use.
  617.      @< Inner...@>=
  618.      {
  619.      a[i] = i;
  620.      }
  621. After a name has appeared once in full, it may be abbreviated by a
  622. unique prefix followed by 3 dots, as demonstrated in the above example.
  623. By convention, a complete module name cannot be a subset of another.
  624. For example, `@<Test@>' and `@<Test of graphics@>' will elicit an error
  625. message.
  626.    Commonly the first unnamed section in the code indicates its modular
  627. structure.  For example, a C code might begin with
  628.      @c
  629.      @* DEMO.
  630.      @a
  631.      @<Include files@>@;
  632.      @<Typedefs@>@;
  633.      @<Function prototypes@>@;
  634.      @<Global variables@>@;
  635. This way, global variable definitions can be introduced as needed, but
  636. will be guaranteed to appear at the top of the code.  Function
  637. prototypes could be handled this way as well; alternatively, they could
  638. all be collected into one section, perhaps at the end of the source
  639. file.  (The above organization still guarantees that they will appear at
  640. the beginning of the output.)  Functions could be introduced one at a
  641. time in unnamed sections.
  642. File: fweb.info,  Node: Phases,  Next: Structure,  Prev: Processors,  Up: Concepts
  643. Phases of processing
  644. ====================
  645.    The FWEB processors perform their work in several distinct phases.
  646. The phases of FTANGLE
  647. ---------------------
  648.    FTANGLE has two phases.  In phase 1, the source file is read; in
  649. phase 2, compilable code is written out in the order specified by the
  650.    More specifically, phase 1
  651.    * discards TeX documentation;
  652.    * tokenizes source;
  653.    * expands `@'...'', `@"..."', and `0b...' (in Fortran, also `0...'
  654.      and `0x...');
  655.    * stores code text in appropriate modules;
  656.    * memorizes macro definitions (`@d' and `@m').  *Note ATd::, *Note
  657.      ATm::.
  658.    Phase 2
  659.    * outputs outer macro definitions (`@d');
  660.    * outputs the unnamed module (`@a');
  661.    * expands WEB macros (`@m');
  662.    * expands built-in macros (*note Built-in functions::.);
  663.    * translates Ratfor statements.  *Note Ratfor::
  664. The phases of FWEAVE
  665. --------------------
  666.    FWEAVE has three phases.  In phase 1, the source file is read and
  667. cross-reference information is collected.  In phase2, the source file is
  668. read again, then pretty-printed including the cross-reference
  669. information.  In phase 3, the index and table of contents are written.
  670.    More specifically, phase 1
  671.    * tokenizes and stores identifiers and module names;
  672.    * collects cross-reference information;
  673.    * stores limbo text definitions (`@l') (*note ATl::.);
  674.    * collects information about overloaded operators (`@v') and
  675.      identifiers (`@W').  *Note ATv::, *Note ATW_::.
  676.    Phase 2
  677.    * outputs limbo text;
  678.    * outputs special TeX macros for overloaded operators;
  679.    * copies TeX material directly to output;
  680.    * treats material between vertical bars (`|...|') as code to be
  681.      typeset;
  682.    * tokenizes and stores contents of each code section;
  683.    * analyzes code syntax and converts to appropriate TeX macros.
  684. File: fweb.info,  Node: Files,  Next: Starting,  Prev: Concepts,  Up: Top
  685. FILES
  686. *****
  687.    FWEB works with a variety of files.  File names have the form
  688. `[path]/root[.ext]', where the brackets denote optional.  Here the slash
  689. is called the prefix end character.  Since this character differs for
  690. various operating systems, it can be changed in `custom.h' (*note
  691. Customization::.).  The character that initiates the file-name
  692. extension (normally a period) can be changed with the `-E' command-line
  693. option (*note -E_::.).
  694. * Menu:
  695. * Input files::         Input files.
  696. * Output files::        Output files.
  697. * Change files::        Change files.
  698. File: fweb.info,  Node: Input files,  Next: Output files,  Prev: Files,  Up: Files
  699. Input files
  700. ===========
  701.    `.fweb' -- Initialization file; always in the home directory.
  702.    `fweb.sty' -- Style file; in the directory of the WEB file    unless
  703. changed by    environment variable `FWEB_STYLE_DIR'.  The basic name
  704. can be    changed by the `-z' option (*note -z::.).
  705.    `name.web' -- Source code.
  706.    `name.ch' -- Change file.  *Note Change files::.
  707.    `name.hweb' -- Code included into web file with `@i' (*note ATi::.).
  708.   Include files are searched for in the path set by the environment
  709. variable `FWEB_INCLUDES' and/or the `-I' option (*note -I_::.).     If
  710. that path is empty, then the current directory is searched.
  711.    `name.hch' -- Change file for include file.
  712. * Menu:
  713. * Completion::          Automatic file-name completion.
  714. File: fweb.info,  Node: Completion,  Prev: Input files,  Up: Input files
  715. Automatic file-name completion
  716. ------------------------------
  717.    Automatic completion of input file names is turned on by the `-e'
  718. command-line option (*note -e::.). When in effect, input file names that
  719. include no period (have no extension) are completed automatically
  720. according to the contents of the following style-file entries:
  721.      Type of file    Style-file entry      Default
  722.      
  723.      WEB file           `ext.web'          `.web'
  724.      Change file        `ext.ch'           `.ch'
  725.      Include file       `ext.hweb'         `.hweb'
  726.      Change file
  727.       for include file  `ext.hch'          `.hch'
  728. More than one extension may be specified, as a space-delimited
  729. list--e.g., `"web wb"'; the first one that matches is used.
  730. File: fweb.info,  Node: Output files,  Next: Change files,  Prev: Input files,  Up: Files
  731. Output files
  732. ============
  733.    `name.tex' -- Woven output to be processed with TeX or LaTeX.
  734.    `CONTENTS.tex' -- Temporary file that accumulates table-of-contents
  735. information.
  736.    `INDEX.tex' -- Temporary file that stores indexing information.
  737.    `MODULES.tex' -- Temporary files that stores module list.
  738.    `name.ext' -- Compilable output file.
  739.    The names of the three temporary files can be changed with style-file
  740. options.  *Note Style::.  Commonly, one may put into the style file
  741. `fweb.sty' commands such as
  742.      index.tex "#.ndx"
  743.      modules.tex "#.mds"
  744.      contents.tex "#.cdts"
  745. The `#' is replaced by the root name of the web file.
  746.    The extensions for the compilable output file(s) have certain
  747. defaults, but can be changed by style-file parameters according to the
  748. following table:
  749.      Language        Style-file entry    UNIX default   non-UNIX default
  750.      
  751.       C               suffix.C               .c              .c
  752.       C++             suffix.Cpp             .c++            .cpp
  753.       Fortran--77     suffix.N               .f              .for
  754.       Fortran--90     suffix.N90             .f              .for
  755.       Ratfor--77      suffix.R               .f              .for
  756.       Ratfor--90      suffix.R90             .f              .for
  757.       TeX             suffix.X               .sty            .sty
  758.       VERBATIM        suffix.V               .mk             .mk
  759. File: fweb.info,  Node: Change files,  Prev: Output files,  Up: Files
  760. Change files
  761. ============
  762.    The primary input to the FWEB processors is the `test.web' source.
  763. However, a "change file" `test.ch' can also be specified.  A change
  764. file consists of instances of the following structure:
  765.      @x
  766.      (One or more lines of text, EXACTLY as in the web file.  Copy these
  767.      lines with the editor; don't type them from scratch.)
  768.      @y
  769.      (Replacement text.)
  770.      @z
  771. The change-file mechanism allows one to insert local changes or test new
  772. code without physically modifying the original web file.
  773.    To specify a change file, use its name as the second file name on the
  774. command line.  The extension `.ch' is assumed by default.  For example,
  775.      FTANGLE test test
  776. processes `test.web' with the change file `test.ch'.
  777.    In addition to `@x', `@y', and `@z', the only `@' commands allowed
  778. in a change file are language-changing commands such as `@c' and the
  779. special commands `@[' and `@]'.  The command `@[' is used for
  780. column-oriented languages such as Fortran-77 and means "switch into
  781. code mode".  Similarly, `@]' means "switch out of code mode".
  782.    All `@' commands in a change file must begin in column 1.  Lines not
  783. beginning with `@' are ignored, so may be used as comments.
  784. File: fweb.info,  Node: Starting,  Next: AT commands,  Prev: Files,  Up: Top
  785. RUNNING FWEB
  786. ************
  787.    FWEB has a Unix-style command-line syntax.  There are many
  788. command-line options, but most of these are unnecessary for standard
  789. appplications.
  790.    Commonly-used command-line options can be placed into the
  791. initialization file `.fweb'. *Note Options::.
  792. * Menu:
  793. * Syntax::      Command-line syntax.
  794. * Options::     Command-line options.
  795. File: fweb.info,  Node: Syntax,  Next: Options,  Prev: Starting,  Up: Starting
  796. Command-line syntax
  797. ===================
  798.    The command-line syntax is
  799.      ftangle-|
  800.              | webfile[.web] [changefile[.ch]] [-option...]
  801.      fweave--|
  802. File names are anything that doesn't begin with a `-'.  Options begin
  803. with a `-'.  File names and options can be intermixed, or the options
  804. may appear before the file names.  The first file name encountered is
  805. the web file (source file); the second, if it exists, is the change
  806. file.  [When no change file is specified, FWEB attempts to read from
  807. the null file (`/dev/null' on Unix systems).  This name should be
  808. specified when FWEB is installed, or can be set in the style file.
  809. *Note null_file::.]
  810.    An option consisting of a lone hyphen stands for the special file
  811. name `stdin', which means `read from the standard input.'  (This option
  812. should not be used except for very special effects.)
  813.    The web file is shown as required since one is normally processing a
  814. source.  However, a few of the information options (*note Info
  815. options::.) will work even in the absence of a web file.
  816. File: fweb.info,  Node: Options,  Prev: Syntax,  Up: Starting
  817. Command-line options
  818. ====================
  819.    Command-line options may be put into the initialization file `.fweb'
  820. (which is always in the user's home directory).  In that file, options
  821. beginning with a plus sign are processed before the command-line
  822. options.  Otherwise, they are processed after the command-line options.
  823. * Menu:
  824. * Negating options:: How to invert the meaning of an option.
  825. * -1::          Brief debugging mode.
  826. * -2::          Verbose debugging mode.
  827. * -@: -AT.      Display information about control codes.
  828. * -A: -A_.      Turn on ASCII translations.
  829. * -B: -B_.      Turn off audible beeps.
  830. * -b::          Number blocks.
  831. * -c::          Set global language to C.
  832. * -c++: -cpp.   Set global language to C++.
  833. * -D: -D_.      Display information about FWEB's reserved words.
  834. * -d::          Convert unnumbered `do...enddo's to Fortran-77.
  835. * -E: -E_.      Change the delimiter of a file-name extension.
  836. * -e::          Turn on automatic file-name completion.
  837. * -F: -F_.    Compare output files with old versions.
  838. * -f::          Turn off module references for identifiers.
  839. * -h::          Where to get help.
  840. * -I: -I_.      Append a directory to search list for include files.
  841. * -i::          Don't print contents of @I include files.
  842. * -i!::         Don't even read @I include files.
  843. * -L: -L_.      Select global language.
  844. * -l::          Echo the input line.
  845. * -m::          Define a WEB macro.
  846. * -m4::         Understand the m4 built-in commands.
  847. * -m;::         Append pseudo-semicolons to WEB macro definitions.
  848. * -n::          Set global language to Fortran-77.
  849. * -n9::         Set global language to Fortran-90.
  850. * -n;::         For Fortran-77, supply semicolons automatically (default).
  851. * -nb::         In Fortran, number the ifs and dos.
  852. * -np::         Print semicolons in woven Fortran output.
  853. * -n\::         In Fortran-90, free-form syntax continued with '\\'.
  854. * -n&::         In Fortran-90, free-form syntax continued with '&'.
  855. * -n/::         In Fortran, recognize '//' as the start of a short comment.
  856. * -n!::         In Fortran, make '!' denote the start of a short comment.
  857. * -n)::         In Fortran, reverse array indices.
  858. * -o::          Turn off FWEAVE's mechanisms for overloading operators.
  859. * -q::          Don't translate Ratfor.
  860. * -P: -P_.      Select TeX processor.
  861. * -p::          Set style parameter.
  862. * -r::          Set the global language to Ratfor-77.
  863. * -r9::         Set the global language to Ratfor-90.
  864. * -rb::         In Ratfor, number the ifs and dos.
  865. * -rg::         Set |goto| parameters.
  866. * -rk::         Suppress comments about Ratfor statement translation.
  867. * -rK: -rK_.    Write out comments about Ratfor statement translation.
  868. * -r;::         Turn on Ratfor's auto-semi mode.
  869. * -r/::         In Ratfor, recognize '//' as the start of a short comment.
  870. * -r!::         In Ratfor, make '!' denote the start of a short comment.
  871. * -r)::         In Ratfor, reverse, array indices.
  872. * -s::          Print statistics about memory usage.
  873. * -T: -T_.      Flag-setting commands for FTANGLE.
  874. * -t::          Truncate identifiers.
  875. * -U: -U_.      Convert reserved output tokens to lower case.
  876. * -u::          Undefined a predefined or command-line macro.
  877. * -v::          Make all comments verbatim.
  878. * -W: -W_.      Flag-setting commands for FWEAVE.
  879. * -w::          Modify processing of `fwebmac.sty'.
  880. * -X: -X_.      Print selected cross-reference information.
  881. * -x::          Reduce or eliminate cross-reference information.
  882. * -y::          Allocate dynamic memory.
  883. * -Z: -Z_.      Display default values of style-file parameters.
  884. * -z::          Change name of style file.
  885. * -.::          Don't recognize dot constants.
  886. * -\::          Explicitly escape continued strings.
  887. * -(: -lp.      Continue parenthesized strings with backslashes.
  888. * -: -colon.    Set starting automatic statement number.
  889. * ->::          Redirect tangled output.
  890. * -=::          Redirect tangled output.
  891. * -#::          Don't print comments about line numbers and module names
  892.                 in tangled output.
  893. * -+: -plus.    Don't interpret compound assignment operators.
  894. * -/::          Recognize '//' as the start of a short comment.
  895. * -!::          Make '!' denoted the start of a short comment.
  896. * Info options:: Information options.
  897. File: fweb.info,  Node: Negating options,  Next: -1,  Prev: Options,  Up: Options
  898. Negating options
  899. ----------------
  900.    To negate a command-line option, use an extra hyphen.  For example,
  901. `--v' means `Don't make all comments verbatim.'  This kind of
  902. construction is useful if an option such as  `-v' is turned on in the
  903. `.fweb' initialization file and you wish to turn it off for just one
  904. File: fweb.info,  Node: -1,  Next: -2,  Prev: Negating options,  Up: Options
  905. `-1':  Turn on brief debugging mode (FWEAVE).
  906. ---------------------------------------------
  907.    This option tells FWEAVE to display irreducible scraps.  (Need
  908. discussion somewhere of scraps.)
  909. File: fweb.info,  Node: -2,  Next: -AT,  Prev: -1,  Up: Options
  910. `-2':  Turn on verbose debugging mode (FWEAVE).
  911. -----------------------------------------------
  912.    This commands tells FWEAVE to display detailed reductions of the
  913. scraps as it does the pretty-printing.  Sometimes FWEAVE fails
  914. spectacularly at printing-printing a section, either because of a syntax
  915. error on the part of the user or because of a bug in FWEAVE's logic.
  916. This option helps one to figure out why.
  917.    This feature can be turned on more locally by means of the `@2'
  918. command.  *Note AT2::.
  919. File: fweb.info,  Node: -AT,  Next: -A_,  Prev: -2,  Up: Options
  920. `-@':  Display the control-code mappings.
  921. -----------------------------------------
  922.    This command supplies information about the `@' control codes:  it
  923. shows the associated style-file parameters that can be used to remap the
  924. codes, and it displays the precedence.  (Some codes may be used
  925. anywhere; others begin  a new part.  Codes that begin the definition
  926. part are labelled by `[D]'; codes that begin the code part are labelled
  927. by `[C]'; codes that begin a new section are labelled by `[S]'.)
  928. File: fweb.info,  Node: -A_,  Next: -B_,  Prev: -AT,  Up: Options
  929. `-A_':  Turn on ASCII translations.
  930. -----------------------------------
  931.    This command is used primarily for debugging.  FWEB works internally
  932. with the ASCII character set.  If FWEB is run on a non-ASCII machine,
  933. translations to and from the internal ASCII are done automatically; on
  934. an ASCII machine, these translations are unnecessary and are not
  935. performed unless the `-A' option is used.
  936. File: fweb.info,  Node: -B_,  Next: -b,  Prev: -A_,  Up: Options
  937. `-B':  Turn off audible beeps.
  938. ------------------------------
  939.    FWEB sometimes beeps the terminal for certain errors.  The `-B'
  940. option turns off the beeps, replacing them by a printed exclamation
  941. point.
  942.    (This option is sometimes called the "marriage-saver", after the
  943. situation that prompted a user's request for this feature.)
  944. File: fweb.info,  Node: -b,  Next: -c,  Prev: -B_,  Up: Options
  945. `-b':  Number blocks.
  946. ---------------------
  947.    Number do and if blocks in woven Fortran and Ratfor output.
  948. File: fweb.info,  Node: -c,  Next: -cpp,  Prev: -b,  Up: Options
  949. `-c':  Set global language to C.
  950. --------------------------------
  951.    *Note Languages::, *Note C::.
  952. File: fweb.info,  Node: -cpp,  Next: -D_,  Prev: -c,  Up: Options
  953. `-c++':  Set global language to C++.
  954. ------------------------------------
  955.    *Note Languages::, *Note Cpp::.
  956. File: fweb.info,  Node: -D_,  Next: -d,  Prev: -cpp,  Up: Options
  957. `-D':  Display reserved words.
  958. ------------------------------
  959.    This option displays the list of reserved words for the language
  960. currently in force.  Thus, to see the reserved words for Ratfor-90, say
  961.      ftangle -Lr9 -D
  962. For this option one must set the language on the command line, because
  963. the `-D' option is processed before the limbo section of the web file is
  964. read.)
  965.    If you say `-Dabc', you will get just the reserved words that begin
  966. with "abc".
  967. File: fweb.info,  Node: -d,  Next: -E_,  Prev: -D_,  Up: Options
  968. `-d':  Convert do...enddo.
  969. --------------------------
  970.    Obsolete.
  971. File: fweb.info,  Node: -E_,  Next: -e,  Prev: -d,  Up: Options
  972. `-E':  Change the delimiter of a file-name extension.
  973. -----------------------------------------------------
  974.    The standard delimiter for file-name extensions is a period, as in
  975. `test.web'.  To change this character to a comma, for example, say
  976. `-E,'.
  977. File: fweb.info,  Node: -e,  Next: -F_,  Prev: -E_,  Up: Options
  978. `-e':  Turn on automatic file-name completion.
  979. ----------------------------------------------
  980.    When the `-e' option is in effect, FWEB attempts to be helpful in
  981. figuring out what file name you intend.  For any input file name that
  982. has no extension (no embedded period), FWEB completes the name by adding
  983. the extension contained in the style-file parameter listed in the
  984. following table:
  985.              Type of file    Style-file entry      Default
  986.      
  987.              WEB file           `ext.web'          `.web'
  988.              Change file        `ext.ch'           `.ch'
  989.              Include file       `ext.hweb'         `.hweb'
  990.              Change file
  991.               for include file  `ext.hch'          `.hch'
  992. More than one extension may be specified, as a space-delimited
  993. list--e.g., `"web wb"'; the first one that matches is used.
  994.