|
@@ -1,1184 +0,0 @@
|
|
|
-{
|
|
|
- TIGCC Documentation Tools
|
|
|
-
|
|
|
- Copyright (C) 2002-2004 Sebastian Reichelt
|
|
|
-
|
|
|
- This program is free software; you can redistribute it and/or modify
|
|
|
- it under the terms of the GNU General Public License as published by
|
|
|
- the Free Software Foundation; either version 2, or (at your option)
|
|
|
- any later version.
|
|
|
-
|
|
|
- This program is distributed in the hope that it will be useful,
|
|
|
- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
- GNU General Public License for more details.
|
|
|
-
|
|
|
- You should have received a copy of the GNU General Public License
|
|
|
- along with this program; if not, write to the Free Software Foundation,
|
|
|
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
-}
|
|
|
-
|
|
|
-program ConvertTexi;
|
|
|
-
|
|
|
-uses
|
|
|
- Windows,
|
|
|
- SysUtils,
|
|
|
- Classes,
|
|
|
- UtilsDos,
|
|
|
- UtilsWin,
|
|
|
- HelpSystemMasterUnit in '..\HelpSystemMasterUnit.pas';
|
|
|
-
|
|
|
-function GetSecID(Ref: string): string;
|
|
|
-begin
|
|
|
- Ref := StringReplace (Ref, #13#10, ' ', [rfReplaceAll]);
|
|
|
- Ref := StringReplace (Ref, #13, ' ', [rfReplaceAll]);
|
|
|
- Ref := StringReplace (Ref, #10, ' ', [rfReplaceAll]);
|
|
|
- Ref := StringReplace (Ref, ',, ', ',,', [rfReplaceAll]);
|
|
|
- if Ref = 'Invoking GCC,,GCC Command Options' then
|
|
|
- Result := 'comopts/comopts'
|
|
|
- else if (Ref = 'Overall Options,,Options Controlling the Kind of Output') or (Ref = 'Overall Options,,Options Controlling the Kind of Output, gcc.info, Using GNU CC') then
|
|
|
- Result := 'comopts/SEC4'
|
|
|
- else if Ref = 'C Dialect Options,,Options Controlling C Dialect' then
|
|
|
- Result := 'comopts/SEC6'
|
|
|
- else if Ref = 'Warning Options,,Options to Request or Suppress Warnings' then
|
|
|
- Result := 'comopts/SEC8'
|
|
|
- else if (Ref = 'Debugging Options,,Options for Debugging Your Program or GCC') or (Ref = 'Debugging Options,,Options for Debugging Your Program or @command{gcc}') then
|
|
|
- Result := 'comopts/SEC9'
|
|
|
- else if Ref = 'Optimize Options,,Options That Control Optimization' then
|
|
|
- Result := 'comopts/SEC10'
|
|
|
- else if Ref = 'Preprocessor Options,,Options Controlling the Preprocessor' then
|
|
|
- Result := 'comopts/SEC11'
|
|
|
- else if Ref = 'Assembler Options,,Passing Options to the Assembler' then
|
|
|
- Result := 'comopts/SEC12'
|
|
|
- else if Ref = 'Directory Options,,Options for Directory Search' then
|
|
|
- Result := 'comopts/SEC14'
|
|
|
- else if Ref = 'Spec Files,,Specifying subprocesses and the switches to pass to them' then
|
|
|
- Result := 'comopts/SEC15'
|
|
|
- else if Ref = 'M680x0 Options,,M680x0 Options' then
|
|
|
- Result := 'comopts/SEC16'
|
|
|
- else if Ref = 'Code Gen Options,,Options for Code Generation Conventions' then
|
|
|
- Result := 'comopts/SEC44'
|
|
|
- else if Ref = 'Environment Variables,,Environment Variables Affecting GCC' then
|
|
|
- Result := 'comopts/SEC45'
|
|
|
- else if Ref = 'CPP Overview' then
|
|
|
- Result := 'cpp/SEC2'
|
|
|
- else if Ref = 'Initial processing' then
|
|
|
- Result := 'cpp/SEC3'
|
|
|
- else if Ref = 'Tokenization' then
|
|
|
- Result := 'cpp/SEC3a'
|
|
|
- else if Ref = 'The preprocessing language' then
|
|
|
- Result := 'cpp/SEC3b'
|
|
|
- else if Ref = 'Header Files' then
|
|
|
- Result := 'cpp/SEC4'
|
|
|
- else if Ref = 'Include Syntax' then
|
|
|
- Result := 'cpp/SEC6'
|
|
|
- else if Ref = 'Include Operation' then
|
|
|
- Result := 'cpp/SEC7'
|
|
|
- else if Ref = 'Once-Only Headers' then
|
|
|
- Result := 'cpp/SEC8'
|
|
|
- else if Ref = 'Computed Includes' then
|
|
|
- Result := 'cpp/SEC8a'
|
|
|
- else if Ref = 'Wrapper Headers' then
|
|
|
- Result := 'cpp/SEC9'
|
|
|
- else if Ref = 'System Headers' then
|
|
|
- Result := 'cpp/SEC9a'
|
|
|
- else if Ref = 'Macros' then
|
|
|
- Result := 'cpp/SEC10'
|
|
|
- else if Ref = 'Object-like Macros' then
|
|
|
- Result := 'cpp/SEC11'
|
|
|
- else if Ref = 'Function-like Macros' then
|
|
|
- Result := 'cpp/SEC12'
|
|
|
- else if Ref = 'Macro Arguments' then
|
|
|
- Result := 'cpp/SEC12a'
|
|
|
- else if Ref = 'Variadic Macros' then
|
|
|
- Result := 'cpp/SEC13'
|
|
|
- else if Ref = 'Predefined Macros' then
|
|
|
- Result := 'cpp/SEC14'
|
|
|
- else if Ref = 'Standard Predefined Macros' then
|
|
|
- Result := 'cpp/SEC15'
|
|
|
- else if Ref = 'Common Predefined Macros' then
|
|
|
- Result := 'cpp/SEC15a'
|
|
|
- else if Ref = 'System-specific Predefined Macros' then
|
|
|
- Result := 'cpp/SEC16'
|
|
|
- else if Ref = 'Stringification' then
|
|
|
- Result := 'cpp/SEC17'
|
|
|
- else if Ref = 'Concatenation' then
|
|
|
- Result := 'cpp/SEC18'
|
|
|
- else if Ref = 'Undefining and Redefining Macros' then
|
|
|
- Result := 'cpp/SEC19'
|
|
|
- else if Ref = 'Directives Within Macro Arguments' then
|
|
|
- Result := 'cpp/SEC20'
|
|
|
- else if Ref = 'Macro Pitfalls' then
|
|
|
- Result := 'cpp/SEC22'
|
|
|
- else if Ref = 'Misnesting' then
|
|
|
- Result := 'cpp/SEC23'
|
|
|
- else if Ref = 'Operator Precedence Problems' then
|
|
|
- Result := 'cpp/SEC24'
|
|
|
- else if Ref = 'Swallowing the Semicolon' then
|
|
|
- Result := 'cpp/SEC25'
|
|
|
- else if Ref = 'Duplication of Side Effects' then
|
|
|
- Result := 'cpp/SEC26'
|
|
|
- else if Ref = 'Self-Referential Macros' then
|
|
|
- Result := 'cpp/SEC27'
|
|
|
- else if Ref = 'Argument Prescan' then
|
|
|
- Result := 'cpp/SEC28'
|
|
|
- else if Ref = 'Newlines in Arguments' then
|
|
|
- Result := 'cpp/SEC30'
|
|
|
- else if Ref = 'Conditionals' then
|
|
|
- Result := 'cpp/SEC31'
|
|
|
- else if Ref = 'Conditional Uses' then
|
|
|
- Result := 'cpp/SEC32'
|
|
|
- else if Ref = 'Conditional Syntax' then
|
|
|
- Result := 'cpp/SEC33'
|
|
|
- else if Ref = 'If' then
|
|
|
- Result := 'cpp/SEC34'
|
|
|
- else if Ref = 'Else' then
|
|
|
- Result := 'cpp/SEC35'
|
|
|
- else if Ref = 'Elif' then
|
|
|
- Result := 'cpp/SEC36'
|
|
|
- else if Ref = 'Deleted Code' then
|
|
|
- Result := 'cpp/SEC37'
|
|
|
- else if Ref = 'Ifdef' then
|
|
|
- Result := 'cpp/SEC38'
|
|
|
- else if Ref = 'Defined' then
|
|
|
- Result := 'cpp/SEC38a'
|
|
|
- else if Ref = 'Assertions' then
|
|
|
- Result := 'cpp/SEC39'
|
|
|
- else if Ref = 'Diagnostics' then
|
|
|
- Result := 'cpp/SEC40'
|
|
|
- else if Ref = 'Line Control' then
|
|
|
- Result := 'cpp/SEC41'
|
|
|
- else if Ref = 'Pragmas' then
|
|
|
- Result := 'cpp/SEC46'
|
|
|
- else if Ref = 'Other Directives' then
|
|
|
- Result := 'cpp/SEC42'
|
|
|
- else if Ref = 'Preprocessor Output' then
|
|
|
- Result := 'cpp/SEC43'
|
|
|
- else if Ref = 'Traditional Mode' then
|
|
|
- Result := 'cpp/SEC70'
|
|
|
- else if Ref = 'Traditional lexical analysis' then
|
|
|
- Result := 'cpp/SEC71'
|
|
|
- else if Ref = 'Traditional macros' then
|
|
|
- Result := 'cpp/SEC72'
|
|
|
- else if Ref = 'Traditional miscellany' then
|
|
|
- Result := 'cpp/SEC73'
|
|
|
- else if Ref = 'Traditional warnings' then
|
|
|
- Result := 'cpp/SEC74'
|
|
|
- else if Ref = 'Implementation Details' then
|
|
|
- Result := 'cpp/SEC80'
|
|
|
- else if Ref = 'Implementation-defined behavior' then
|
|
|
- Result := 'cpp/SEC81'
|
|
|
- else if Ref = 'Implementation limits' then
|
|
|
- Result := 'cpp/SEC82'
|
|
|
- else if Ref = 'Obsolete Features' then
|
|
|
- Result := 'cpp/SEC83'
|
|
|
- else if Ref = 'Obsolete once-only headers' then
|
|
|
- Result := 'cpp/SEC84'
|
|
|
- else if Ref = 'Miscellaneous obsolete features' then
|
|
|
- Result := 'cpp/SEC85'
|
|
|
- else if Ref = 'Differences from previous versions' then
|
|
|
- Result := 'cpp/SEC86'
|
|
|
- else if Ref = 'Invocation' then
|
|
|
- Result := 'cpp/SEC44'
|
|
|
- else if Ref = 'Environment Variables' then
|
|
|
- Result := 'cpp/SEC45'
|
|
|
- else if Ref = 'C Extensions' then
|
|
|
- Result := 'gnuexts/gnuexts'
|
|
|
- else if Ref = 'Statement Exprs' then
|
|
|
- Result := 'gnuexts/SEC63'
|
|
|
- else if Ref = 'Local Labels' then
|
|
|
- Result := 'gnuexts/SEC64'
|
|
|
- else if Ref = 'Labels as Values' then
|
|
|
- Result := 'gnuexts/SEC65'
|
|
|
- else if Ref = 'Nested Functions' then
|
|
|
- Result := 'gnuexts/SEC66'
|
|
|
- else if Ref = 'Constructing Calls' then
|
|
|
- Result := 'gnuexts/SEC67'
|
|
|
- else if Ref = 'Naming Types' then
|
|
|
- Result := 'gnuexts/SEC68'
|
|
|
- else if Ref = 'Typeof' then
|
|
|
- Result := 'gnuexts/SEC69'
|
|
|
- else if Ref = 'Lvalues' then
|
|
|
- Result := 'gnuexts/SEC70'
|
|
|
- else if Ref = 'Conditional Extensions' then
|
|
|
- Result := 'gnuexts/SEC71'
|
|
|
- else if Ref = 'Long Long' then
|
|
|
- Result := 'gnuexts/SEC72'
|
|
|
- else if Ref = 'Complex' then
|
|
|
- Result := 'gnuexts/SEC73'
|
|
|
- else if Ref = 'Hex Floats' then
|
|
|
- Result := 'gnuexts/SEC74'
|
|
|
- else if Ref = 'Zero Length' then
|
|
|
- Result := 'gnuexts/SEC75'
|
|
|
- else if Ref = 'Variable Length' then
|
|
|
- Result := 'gnuexts/SEC76'
|
|
|
- else if Ref = 'Variadic Macro Extensions' then
|
|
|
- Result := 'gnuexts/SEC77'
|
|
|
- else if Ref = 'Subscripting' then
|
|
|
- Result := 'gnuexts/SEC78'
|
|
|
- else if Ref = 'Pointer Arith' then
|
|
|
- Result := 'gnuexts/SEC79'
|
|
|
- else if Ref = 'Initializers' then
|
|
|
- Result := 'gnuexts/SEC80'
|
|
|
- else if Ref = 'Compound Literals' then
|
|
|
- Result := 'gnuexts/SEC81'
|
|
|
- else if Ref = 'Designated Inits' then
|
|
|
- Result := 'gnuexts/SEC82'
|
|
|
- else if Ref = 'Case Ranges' then
|
|
|
- Result := 'gnuexts/SEC83'
|
|
|
- else if Ref = 'Cast to Union' then
|
|
|
- Result := 'gnuexts/SEC84'
|
|
|
- else if Ref = 'Function Attributes' then
|
|
|
- Result := 'gnuexts/SEC85'
|
|
|
- else if Ref = 'Attribute Syntax' then
|
|
|
- Result := 'gnuexts/SEC85a'
|
|
|
- else if Ref = 'Function Prototypes' then
|
|
|
- Result := 'gnuexts/SEC86'
|
|
|
- else if Ref = 'C++ Comments' then
|
|
|
- Result := 'gnuexts/SEC87'
|
|
|
- else if Ref = 'Dollar Signs' then
|
|
|
- Result := 'gnuexts/SEC88'
|
|
|
- else if Ref = 'Character Escapes' then
|
|
|
- Result := 'gnuexts/SEC89'
|
|
|
- else if Ref = 'Alignment' then
|
|
|
- Result := 'gnuexts/SEC90'
|
|
|
- else if Ref = 'Variable Attributes' then
|
|
|
- Result := 'gnuexts/SEC91'
|
|
|
- else if Ref = 'Type Attributes' then
|
|
|
- Result := 'gnuexts/SEC92'
|
|
|
- else if Ref = 'Inline' then
|
|
|
- Result := 'gnuexts/SEC93'
|
|
|
- else if Ref = 'Extended Asm,,Assembler Instructions with C Expression Operands' then
|
|
|
- Result := 'gnuexts/SEC94'
|
|
|
- else if Ref = 'Asm Labels' then
|
|
|
- Result := 'gnuexts/SEC96'
|
|
|
- else if Ref = 'Explicit Reg Vars' then
|
|
|
- Result := 'gnuexts/SEC97'
|
|
|
- else if Ref = 'Global Reg Vars' then
|
|
|
- Result := 'gnuexts/SEC98'
|
|
|
- else if Ref = 'Local Reg Vars' then
|
|
|
- Result := 'gnuexts/SEC99'
|
|
|
- else if Ref = 'Alternate Keywords' then
|
|
|
- Result := 'gnuexts/SEC100'
|
|
|
- else if Ref = 'Incomplete Enums' then
|
|
|
- Result := 'gnuexts/SEC101'
|
|
|
- else if Ref = 'Function Names' then
|
|
|
- Result := 'gnuexts/SEC102'
|
|
|
- else if Ref = 'Return Address' then
|
|
|
- Result := 'gnuexts/SEC103'
|
|
|
- else if Ref = 'Other Builtins' then
|
|
|
- Result := 'gnuexts/SEC104'
|
|
|
- else if Ref = 'Escaped Newlines' then
|
|
|
- Result := 'gnuexts/SEC105'
|
|
|
- else if Ref = 'Multi-line Strings' then
|
|
|
- Result := 'gnuexts/SEC106'
|
|
|
- else if Ref = 'Mixed Declarations' then
|
|
|
- Result := 'gnuexts/SEC107'
|
|
|
- else if Ref = 'Unnamed Fields' then
|
|
|
- Result := 'gnuexts/SEC108'
|
|
|
- else if Ref = 'Volatiles' then
|
|
|
- Result := 'gnuexts/SEC109'
|
|
|
- else if Ref = 'Empty Structures' then
|
|
|
- Result := 'gnuexts/SEC111'
|
|
|
- else if Ref = 'Acknowledgements,,GNU Assembler Acknowledgements' then
|
|
|
- Result := 'gnuasm/acknowledge'
|
|
|
- else if Ref = 'Command Line,,Command Line' then
|
|
|
- Result := 'gnuasm/SEC9'
|
|
|
- else if (Ref = 'Invoking,,Command-Line Options') or (Ref = 'Invoking,,Comand-Line Options') then
|
|
|
- Result := 'gnuasm/SEC10'
|
|
|
- else if Ref = 'Overview,,Overview' then
|
|
|
- Result := 'gnuasm/SEC11'
|
|
|
- else if Ref = 'M68K-Opts,,M680x0 Options' then
|
|
|
- Result := 'gnuasm/SEC12'
|
|
|
- else if Ref = 'a,,Enable Listings: @option{-a[cdhlns]}' then
|
|
|
- Result := 'gnuasm/SEC13'
|
|
|
- else if Ref = 'listing,,Configuring listing output: @option{--listing}' then
|
|
|
- Result := 'gnuasm/SEC14'
|
|
|
- else if Ref = 'o,,Name the Object File: @option{-o}' then
|
|
|
- Result := 'gnuasm/SEC15'
|
|
|
- else if Ref = 'W,,Control Warnings: @option{-W}, @option{--warn}, @option{--no-warn}, @option{--fatal-warnings}' then
|
|
|
- Result := 'gnuasm/SEC16'
|
|
|
- else if Ref = 'R,,Join Data and Text Sections: @option{-R}' then
|
|
|
- Result := 'gnuasm/SEC17'
|
|
|
- else if Ref = 'L,,Include Local Labels: @option{-L}' then
|
|
|
- Result := 'gnuasm/SEC18'
|
|
|
- else if Ref = 'traditional-format,,Compatible Output: @option{--traditional-format}' then
|
|
|
- Result := 'gnuasm/SEC19'
|
|
|
- else if Ref = 'M,,Assemble in MRI Compatibility Mode: @option{-M}' then
|
|
|
- Result := 'gnuasm/SEC19a'
|
|
|
- else if Ref = 'Input Files,,Input Files' then
|
|
|
- Result := 'gnuasm/SEC21'
|
|
|
- else if Ref = 'Input Files,,Filenames and Line-numbers' then
|
|
|
- Result := 'gnuasm/SEC22'
|
|
|
- else if Ref = 'Object,,Output (Object) File' then
|
|
|
- Result := 'gnuasm/SEC23'
|
|
|
- else if Ref = 'Errors,,Error and Warning Messages' then
|
|
|
- Result := 'gnuasm/SEC24'
|
|
|
- else if Ref = 'Syntax,,Syntax' then
|
|
|
- Result := 'gnuasm/SEC25'
|
|
|
- else if Ref = 'Preprocessing,,Preprocessing' then
|
|
|
- Result := 'gnuasm/SEC26'
|
|
|
- else if Ref = 'Whitespace,,Whitespace' then
|
|
|
- Result := 'gnuasm/SEC27'
|
|
|
- else if Ref = 'Comments,,Comments' then
|
|
|
- Result := 'gnuasm/SEC28'
|
|
|
- else if Ref = 'Symbol Intro,,Symbols' then
|
|
|
- Result := 'gnuasm/SEC29'
|
|
|
- else if Ref = 'Statements,,Statements' then
|
|
|
- Result := 'gnuasm/SEC30'
|
|
|
- else if Ref = 'Constants,,Constants' then
|
|
|
- Result := 'gnuasm/SEC31'
|
|
|
- else if Ref = 'Characters,,Character Constants' then
|
|
|
- Result := 'gnuasm/SEC32'
|
|
|
- else if (Ref = 'Strings,,Strings') or (Ref = 'Strings') then
|
|
|
- Result := 'gnuasm/SEC33'
|
|
|
- else if Ref = 'Chars,,Characters' then
|
|
|
- Result := 'gnuasm/SEC34'
|
|
|
- else if Ref = 'Numbers,,Number Constants' then
|
|
|
- Result := 'gnuasm/SEC35'
|
|
|
- else if Ref = 'Integers,,Integers' then
|
|
|
- Result := 'gnuasm/SEC36'
|
|
|
- else if Ref = 'Bignums,,Bignums' then
|
|
|
- Result := 'gnuasm/SEC37'
|
|
|
- else if Ref = 'Flonums,,Flonums' then
|
|
|
- Result := 'gnuasm/SEC38'
|
|
|
- else if Ref = 'M68K-Syntax,,Syntax' then
|
|
|
- Result := 'gnuasm/SEC216'
|
|
|
- else if Ref = 'M68K-Moto-Syntax,,Motorola Syntax' then
|
|
|
- Result := 'gnuasm/SEC217'
|
|
|
- else if Ref = 'M68K-Branch,,Branch Improvement' then
|
|
|
- Result := 'gnuasm/SEC221'
|
|
|
- else if Ref = 'M68K-Chars,,Special Characters' then
|
|
|
- Result := 'gnuasm/SEC222'
|
|
|
- else if (Ref = 'Sections,,Sections and Relocation') or (Ref = 'Secs Background,,Background') then
|
|
|
- Result := 'gnuasm/SEC39'
|
|
|
- else if Ref = 'Ld Sections,,Linker Sections' then
|
|
|
- Result := 'gnuasm/SEC41'
|
|
|
- else if Ref = 'As Sections,,Assembler Internal Sections' then
|
|
|
- Result := 'gnuasm/SEC42'
|
|
|
- else if Ref = 'Sub-Sections,,Sub-Sections' then
|
|
|
- Result := 'gnuasm/SEC43'
|
|
|
- else if Ref = 'bss,,bss Section' then
|
|
|
- Result := 'gnuasm/SEC44'
|
|
|
- else if (Ref = 'Symbols,,Symbols') or (Ref = 'Symbols') then
|
|
|
- Result := 'gnuasm/SEC45'
|
|
|
- else if Ref = 'Labels,,Labels' then
|
|
|
- Result := 'gnuasm/SEC46'
|
|
|
- else if Ref = 'Setting Symbols,,Giving Symbols Other Values' then
|
|
|
- Result := 'gnuasm/SEC47'
|
|
|
- else if (Ref = 'Symbol Names') or (Ref = 'Symbol Names,,Symbol Names') then
|
|
|
- Result := 'gnuasm/SEC48'
|
|
|
- else if Ref = 'Symbol Names,,Local Symbol Names' then
|
|
|
- Result := 'gnuasm/SEC48L'
|
|
|
- else if Ref = 'Symbol Names,,Dollar Local Labels' then
|
|
|
- Result := 'gnuasm/SEC48LD'
|
|
|
- else if Ref = 'Dot,,The Special Dot Symbol' then
|
|
|
- Result := 'gnuasm/SEC49'
|
|
|
- else if (Ref = 'Symbol Attributes') or (Ref = 'Symbol Attributes,,Symbol Attributes') then
|
|
|
- Result := 'gnuasm/SEC50'
|
|
|
- else if Ref = 'Symbol Value,,Value' then
|
|
|
- Result := 'gnuasm/SEC51'
|
|
|
- else if Ref = 'Symbol Type,,Type' then
|
|
|
- Result := 'gnuasm/SEC52'
|
|
|
- else if Ref = 'COFF Symbols,,Symbol Attributes for COFF' then
|
|
|
- Result := 'gnuasm/SEC56'
|
|
|
- else if Ref = 'COFF Symbols,,Primary Attributes' then
|
|
|
- Result := 'gnuasm/SEC57'
|
|
|
- else if Ref = 'COFF Symbols,,Auxiliary Attributes' then
|
|
|
- Result := 'gnuasm/SEC58'
|
|
|
- else if (Ref = 'Expressions') or (Ref = 'Expressions,,Expressions') then
|
|
|
- Result := 'gnuasm/SEC60'
|
|
|
- else if Ref = 'Empty Exprs,,Empty Expressions' then
|
|
|
- Result := 'gnuasm/SEC61'
|
|
|
- else if Ref = 'Integer Exprs,,Integer Expressions' then
|
|
|
- Result := 'gnuasm/SEC62'
|
|
|
- else if Ref = 'Arguments,,Arguments' then
|
|
|
- Result := 'gnuasm/SEC63'
|
|
|
- else if Ref = 'Operators,,Operators' then
|
|
|
- Result := 'gnuasm/SEC64'
|
|
|
- else if (Ref = 'Prefix Ops,,Prefix Operator') or (Ref = 'Prefix Ops,,Prefix Operators') then
|
|
|
- Result := 'gnuasm/SEC65'
|
|
|
- else if (Ref = 'Infix Ops,,Infix Operator') or (Ref = 'Infix Ops,,Infix Operators') then
|
|
|
- Result := 'gnuasm/SEC66'
|
|
|
- else if Ref = 'Pseudo Ops,,Assembler Directives' then
|
|
|
- Result := 'gnuasm/SEC67'
|
|
|
- else if Pos ('.abort', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC68'
|
|
|
- else if Pos ('.ABORT', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC69'
|
|
|
- else if Pos ('.align', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC70'
|
|
|
- else if Pos ('.app-file', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC71'
|
|
|
- else if Pos ('.ascii', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC72'
|
|
|
- else if Pos ('.asciz', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC73'
|
|
|
- else if Pos ('.balign', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC74'
|
|
|
- else if Pos ('.byte', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC75'
|
|
|
- else if Pos ('.comm', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC76'
|
|
|
- else if Pos ('.data', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC77'
|
|
|
- else if Pos ('.def', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC78'
|
|
|
- else if Pos ('.desc', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC79'
|
|
|
- else if Pos ('.dim', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC80'
|
|
|
- else if Pos ('.double', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC81'
|
|
|
- else if Pos ('.eject', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC82'
|
|
|
- else if Pos ('.elseif', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC83IF'
|
|
|
- else if Pos ('.else', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC83'
|
|
|
- else if Pos ('.endef', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC84'
|
|
|
- else if Pos ('.endif', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC84IF'
|
|
|
- else if Pos ('.endfunc', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC84FUNC'
|
|
|
- else if Pos ('.endm', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC84M'
|
|
|
- else if Pos ('.endr', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC84R'
|
|
|
- else if Pos ('.end', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC83b'
|
|
|
- else if Pos ('.equiv', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC87'
|
|
|
- else if Pos ('.equ', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC86'
|
|
|
- else if Pos ('.err', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC88'
|
|
|
- else if Pos ('.even', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC70E'
|
|
|
- else if Pos ('.exitm', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC85'
|
|
|
- else if Pos ('.extern', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC89'
|
|
|
- else if Pos ('.fail', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC89a'
|
|
|
- else if Pos ('.file', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC90'
|
|
|
- else if Pos ('.fill', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC91'
|
|
|
- else if Pos ('.float', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC92'
|
|
|
- else if Pos ('.func', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC92a'
|
|
|
- else if (Pos ('.globl', Ref) > 0) or (Pos ('.global', Ref) > 0) then
|
|
|
- Result := 'gnuasm/SEC93'
|
|
|
- else if Pos ('.hword', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC94'
|
|
|
- else if Pos ('.ident', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC95'
|
|
|
- else if Pos ('.ifdef', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC96D'
|
|
|
- else if Pos ('.ifndef', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC96N'
|
|
|
- else if Pos ('.ifnotdef', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC96ND'
|
|
|
- else if (Pos ('.if ', Ref) > 0) or (Pos ('.if}', Ref) > 0) then
|
|
|
- Result := 'gnuasm/SEC96'
|
|
|
- else if Pos ('.incbin', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC97B'
|
|
|
- else if Pos ('.include', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC97'
|
|
|
- else if Pos ('.int', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC98'
|
|
|
- else if Pos ('.irpc', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC100'
|
|
|
- else if Pos ('.irp', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC99'
|
|
|
- else if Pos ('.lcomm', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC101'
|
|
|
- else if Pos ('.lflags', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC102'
|
|
|
- else if Pos ('.line', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC103'
|
|
|
- else if Pos ('.ln', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC105'
|
|
|
- else if Pos ('.list', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC107'
|
|
|
- else if Pos ('.long', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC108'
|
|
|
- else if Pos ('.macro', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC109'
|
|
|
- else if Pos ('.mri', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC106'
|
|
|
- else if Pos ('.nolist', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC110'
|
|
|
- else if Pos ('.octa', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC111'
|
|
|
- else if Pos ('.org', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC112'
|
|
|
- else if Pos ('.p2align[wl]', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC113'
|
|
|
- else if Pos ('.print', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC113a'
|
|
|
- else if Pos ('.psize', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC114'
|
|
|
- else if Pos ('.purgem', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC114a'
|
|
|
- else if Pos ('.quad', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC115'
|
|
|
- else if Pos ('.rept', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC116'
|
|
|
- else if Pos ('.sbttl', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC117'
|
|
|
- else if Pos ('.scl', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC118'
|
|
|
- else if Ref = 'Section,,COFF Version' then
|
|
|
- Result := 'gnuasm/SEC119'
|
|
|
- else if Pos ('.set', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC120'
|
|
|
- else if Pos ('.short', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC121'
|
|
|
- else if Pos ('.single', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC122'
|
|
|
- else if Ref = 'Size,,COFF Version' then
|
|
|
- Result := 'gnuasm/SEC123'
|
|
|
- else if Pos ('.sleb128', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC124'
|
|
|
- else if Pos ('.skip', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC125'
|
|
|
- else if Pos ('.space', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC126'
|
|
|
- else if Pos ('.stabd', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC127'
|
|
|
- else if Pos ('.stabn', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC127N'
|
|
|
- else if Pos ('.stabs', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC127S'
|
|
|
- else if Pos ('.string', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC128'
|
|
|
- else if Pos ('.struct', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC128a'
|
|
|
- else if Pos ('.symver', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC129'
|
|
|
- else if Pos ('.tag', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC130'
|
|
|
- else if Pos ('.text', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC131'
|
|
|
- else if Pos ('.title', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC132'
|
|
|
- else if Ref = 'Type,,COFF Version' then
|
|
|
- Result := 'gnuasm/SEC133'
|
|
|
- else if Pos ('.uleb128', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC134'
|
|
|
- else if Pos ('.val', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC135'
|
|
|
- else if Pos ('.vtable_entry', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC135a'
|
|
|
- else if Pos ('.word', Ref) > 0 then
|
|
|
- Result := 'gnuasm/SEC136'
|
|
|
- else if Ref = 'Bug Criteria,,Have You Found a Bug?' then
|
|
|
- Result := 'Bug Criteria,,Have You Found a Bug'
|
|
|
- else
|
|
|
- Result := StringReplace (Ref, '/', '_', [rfReplaceAll]);
|
|
|
- if Pos (':', Result) > 0 then
|
|
|
- Delete (Result, Pos (':', Result), Length (Result));
|
|
|
-end;
|
|
|
-
|
|
|
-procedure PreProcessSource(var Source: string);
|
|
|
-begin
|
|
|
- Source := StringReplace (Source, '@value{AS}', 'as', [rfReplaceAll]);
|
|
|
- Source := StringReplace (Source, '@value{LD}', 'ld', [rfReplaceAll]);
|
|
|
- Source := StringReplace (Source, '@value{GCC}', 'gcc', [rfReplaceAll]);
|
|
|
- Source := StringReplace (Source, '@value{CPP}', 'cpp', [rfReplaceAll]);
|
|
|
- Source := StringReplace (Source, '''''', '"', [rfReplaceAll]);
|
|
|
- Source := StringReplace (Source, '``', '"', [rfReplaceAll]);
|
|
|
- Source := StringReplace (Source, '´´', '"', [rfReplaceAll]);
|
|
|
-end;
|
|
|
-
|
|
|
-procedure PostProcessDest(var Dest: string);
|
|
|
-var
|
|
|
- P,
|
|
|
- I: Integer;
|
|
|
-begin
|
|
|
- Dest := StringReplace (Dest, '<BR><BR>'#13#10'<BR><BR>', '<BR><BR>', [rfReplaceAll]);
|
|
|
- Dest := StringReplace (Dest, #13#10#13#10'<BR><BR>', #13#10'<BR><BR>', [rfReplaceAll]);
|
|
|
- Dest := StringReplace (Dest, '<BR><BR>'#13#10#13#10, '<BR><BR>'#13#10, [rfReplaceAll]);
|
|
|
- Dest := StringReplace (Dest, '<LI>'#13#10'</LI>'#13#10, '', [rfReplaceAll]);
|
|
|
- Dest := StringReplace (Dest, '<LI>'#13#10'<BR><BR>', '<LI>', [rfReplaceAll]);
|
|
|
- Dest := StringReplace (Dest, '<BR><BR>'#13#10'</LI>'#13#10'</UL>', '</LI>'#13#10'</UL>', [rfReplaceAll]);
|
|
|
- Dest := StringReplace (Dest, '<BR><BR>'#13#10'</LI>'#13#10'</OL>', '</LI>'#13#10'</OL>', [rfReplaceAll]);
|
|
|
- Dest := StringReplace (Dest, '<BR><BR>'#13#10'<PRE>', '<PRE>', [rfReplaceAll]);
|
|
|
- Dest := StringReplace (Dest, '<BR><BR>'#13#10'</PRE>', '</PRE>', [rfReplaceAll]);
|
|
|
- Dest := StringReplace (Dest, '</PRE>'#13#10'<BR><BR>', '</PRE>', [rfReplaceAll]);
|
|
|
- Dest := StringReplace (Dest, #13#10#13#10'</PRE>', #13#10'</PRE>', [rfReplaceAll]);
|
|
|
- Dest := StringReplace (Dest, '<BR><BR>'#13#10'<UL', '<UL', [rfReplaceAll]);
|
|
|
- Dest := StringReplace (Dest, '</UL>'#13#10'<BR><BR>', '</UL>', [rfReplaceAll]);
|
|
|
- Dest := StringReplace (Dest, '<BR><BR>'#13#10'<OL', '<OL', [rfReplaceAll]);
|
|
|
- Dest := StringReplace (Dest, '</OL>'#13#10'<BR><BR>', '</OL>', [rfReplaceAll]);
|
|
|
- Dest := StringReplace (Dest, '<BR><BR>'#13#10'<DL', '<DL', [rfReplaceAll]);
|
|
|
- Dest := StringReplace (Dest, '</DL>'#13#10'<BR><BR>', '</DL>', [rfReplaceAll]);
|
|
|
- Dest := StringReplace (Dest, '<BR><BR>'#13#10'</DL>', '</DL>', [rfReplaceAll]);
|
|
|
- Dest := StringReplace (Dest, '<DD><DT>', '<BR>', [rfReplaceAll]);
|
|
|
- P := Pos ('</CODE></A>', Dest);
|
|
|
- while P > 0 do begin
|
|
|
- Dest [P + 2] := 'A';
|
|
|
- Dest [P + 3] := '>';
|
|
|
- Dest [P + 4] := '<';
|
|
|
- Dest [P + 5] := '/';
|
|
|
- Dest [P + 6] := 'C';
|
|
|
- Dest [P + 7] := 'O';
|
|
|
- Dest [P + 8] := 'D';
|
|
|
- Dest [P + 9] := 'E';
|
|
|
- I := P - 1;
|
|
|
- while (I > 0) and (Copy (Dest, I, Length ('<CODE>')) <> '<CODE>') do
|
|
|
- Dec (I);
|
|
|
- if I > 0 then begin
|
|
|
- Delete (Dest, I, Length ('<CODE>'));
|
|
|
- Dec (I);
|
|
|
- while (I > 0) and (Dest [I] <> '<') do
|
|
|
- Dec (I);
|
|
|
- if I > 0 then
|
|
|
- Insert ('<CODE>', Dest, I);
|
|
|
- end;
|
|
|
- P := Pos ('</CODE></A>', Dest);
|
|
|
- end;
|
|
|
- Dest := StringReplace (Dest, '. ', '. ', [rfReplaceAll]);
|
|
|
-end;
|
|
|
-
|
|
|
-function CountChars(Ch: Char; S: string): Integer;
|
|
|
-var
|
|
|
- I: Integer;
|
|
|
-begin
|
|
|
- Result := 0;
|
|
|
- for I := 1 to Length (S) do
|
|
|
- if S [I] = Ch then
|
|
|
- Inc (Result);
|
|
|
-end;
|
|
|
-
|
|
|
-type
|
|
|
- TListType = (ltNone, ltNormal, ltColumns, ltFiles);
|
|
|
-
|
|
|
-var
|
|
|
- FullContents,
|
|
|
- NewContents,
|
|
|
- CurFile,
|
|
|
- CurNode,
|
|
|
- CurSection,
|
|
|
- CurSectionTitle,
|
|
|
- CurSubFile: string;
|
|
|
- P,
|
|
|
- SecStart,
|
|
|
- PreFormatted,
|
|
|
- SCase,
|
|
|
- CodeFormat: Integer;
|
|
|
- InsertedSeeAlso: Boolean = False;
|
|
|
-
|
|
|
-procedure ProcessSecID(var SecID: string);
|
|
|
-begin
|
|
|
- if (SecID = 'Overview') and (CurFile = 'cpp') then
|
|
|
- SecID := 'CPP Overview'
|
|
|
- else if (SecID = 'Conditionals') and (CurFile = 'gnuexts') then
|
|
|
- SecID := 'Conditional Extensions'
|
|
|
- else if (SecID = 'Variadic Macros') and (CurFile = 'gnuexts') then
|
|
|
- SecID := 'Variadic Macro Extensions'
|
|
|
- else if (SecID = 'Pragmas') and (CurFile = 'gnuexts') then
|
|
|
- SecID := 'Pragma Extensions'
|
|
|
- else if (SecID = 'Acknowledgements,,Acknowledgements') and (CurFile = 'gnuasm') then
|
|
|
- SecID := 'Acknowledgements,,GNU Assembler Acknowledgements';
|
|
|
-end;
|
|
|
-
|
|
|
-function GetLinkTo(Ref: string): string;
|
|
|
-begin
|
|
|
- ProcessSecID (Ref);
|
|
|
- Result := GetSecID (Ref);
|
|
|
- if StartsWith (CurFile + '/', Result, True, 1, True) then
|
|
|
- Result := '$$LINK(' + Result + ')'
|
|
|
- else
|
|
|
- Result := '$$INFOLINK(' + Result + ')';
|
|
|
-end;
|
|
|
-
|
|
|
-procedure FinishSection;
|
|
|
-var
|
|
|
- I: Integer;
|
|
|
- SecID,
|
|
|
- TempContents,
|
|
|
- S: string;
|
|
|
-begin
|
|
|
- SecID := CurNode;
|
|
|
- if (Length (CurSection) > 0) and (((CurFile <> 'cpp') and (CurFile <> 'gnuexts')) or (SecID = 'Extended Asm')) then
|
|
|
- SecID := SecID + ',,' + CurSection;
|
|
|
- ProcessSecID (SecID);
|
|
|
- SecID := GetSecID (SecID);
|
|
|
- if Length (CurSubFile) > 0 then
|
|
|
- SecID := SecID + '_' + StringReplace (CurSubFile, '/', ' and ', [rfReplaceAll]);
|
|
|
- TempContents := Copy (NewContents, SecStart, Length (NewContents));
|
|
|
- PostProcessDest (TempContents);
|
|
|
- TrimHTMLWhiteSpace (TempContents);
|
|
|
- if (Pos ('@code', CurSectionTitle) > 0) and (Pos ('.', CurSectionTitle) > 0) then begin
|
|
|
- Delete (CurSectionTitle, 1, Pos ('.', CurSectionTitle) - 1);
|
|
|
- for I := 3 to Length (CurSectionTitle) do
|
|
|
- if not (CurSectionTitle [I] in ['A'..'Z', 'a'..'z', '_', '.', '0'..'9', '[', ']']) then begin
|
|
|
- Delete (CurSectionTitle, I, Length (CurSectionTitle));
|
|
|
- Break;
|
|
|
- end;
|
|
|
- end;
|
|
|
- if Length (TempContents) > 0 then begin
|
|
|
- if Length (CurSubFile) > 0 then
|
|
|
- S := CurSubFile
|
|
|
- else
|
|
|
- S := CurSectionTitle;
|
|
|
- WriteFile (SecID + '.hss', '[Main]'#13#10'Title=' + S + #13#10#13#10'[Top]'#13#10 + TempContents + #13#10);
|
|
|
- end;
|
|
|
- SecStart := Length (NewContents) + 1;
|
|
|
-end;
|
|
|
-
|
|
|
-procedure StartSeeAlso;
|
|
|
-var
|
|
|
- I: Integer;
|
|
|
-begin
|
|
|
- I := Length (NewContents);
|
|
|
- while (I > 0) and (NewContents [I] in [#13, #10, ' ', #9]) do
|
|
|
- Dec (I);
|
|
|
- InsertedSeeAlso := True;
|
|
|
- if (I <= 0) or (NewContents [I] in ['.', '>']) then
|
|
|
- NewContents := NewContents + 'See '
|
|
|
- else if (NewContents [I] in [',', ';', ':', '(', '[', '{']) then
|
|
|
- NewContents := NewContents + 'see '
|
|
|
- else
|
|
|
- InsertedSeeAlso := False;
|
|
|
-end;
|
|
|
-
|
|
|
-procedure EndSeeAlso;
|
|
|
-begin
|
|
|
- if InsertedSeeAlso and (P <= Length (FullContents)) and (FullContents [P] = ',') then
|
|
|
- Inc (P);
|
|
|
- InsertedSeeAlso := False;
|
|
|
-end;
|
|
|
-
|
|
|
-procedure ConvertFromP(ListType: TListType = ltNone);
|
|
|
-var
|
|
|
- I,
|
|
|
- J: Integer;
|
|
|
- Tag,
|
|
|
- Parameters,
|
|
|
- Quotes,
|
|
|
- S: string;
|
|
|
-begin
|
|
|
- while P <= Length (FullContents) do begin
|
|
|
- if FullContents [P] = '}' then begin
|
|
|
- Inc (P);
|
|
|
- Break;
|
|
|
- end else if FullContents [P] = '{' then begin
|
|
|
- Inc (P);
|
|
|
- ConvertFromP (ListType);
|
|
|
- end else if FullContents [P] = #13 then begin
|
|
|
- while (Length (NewContents) > 0) and (NewContents [Length (NewContents)] = ' ') do
|
|
|
- Delete (NewContents, Length (NewContents), 1);
|
|
|
- if PreFormatted > 0 then begin
|
|
|
- NewContents := NewContents + #13#10;
|
|
|
- Inc (P);
|
|
|
- end else begin
|
|
|
- if (Copy (FullContents, P, 2) = #13#13) or (Copy (FullContents, P, 4) = #13#10#13#10) or (((Copy (FullContents, P, 2) = #13'@') or (Copy (FullContents, P, 3) = #13#10'@')) and (Pos ('{', Copy (FullContents, P, 25)) <= 0) and (Pos ('if', Copy (FullContents, P, 25)) <= 0)) then begin
|
|
|
- if Copy (NewContents, Length (NewContents) - 9, 10) <> '<BR><BR>'#13#10 then
|
|
|
- NewContents := NewContents + #13#10'<BR><BR>'#13#10;
|
|
|
- while (P <= Length (FullContents)) and (FullContents [P] in [#13, #10]) do
|
|
|
- Inc (P);
|
|
|
- end else begin
|
|
|
- if Copy (NewContents, Length (NewContents) - 1, 2) <> #13#10 then
|
|
|
- NewContents := NewContents + #13#10;
|
|
|
- Inc (P);
|
|
|
- end;
|
|
|
- end;
|
|
|
- end else if FullContents [P] = '@' then begin
|
|
|
- Inc (P);
|
|
|
- if P <= Length (FullContents) then begin
|
|
|
- if FullContents [P] in ['A'..'Z', 'a'..'z', '0'..'9'] then begin
|
|
|
- Tag := '';
|
|
|
- Parameters := '';
|
|
|
- Quotes := '';
|
|
|
- while (P <= Length (FullContents)) and (not (FullContents [P] in [#13, #10, ' ', '{'])) do begin
|
|
|
- Tag := Tag + FullContents [P];
|
|
|
- Inc (P);
|
|
|
- end;
|
|
|
- if (P <= Length (FullContents)) and (FullContents [P] = '{') then begin
|
|
|
- Inc (P);
|
|
|
- if (Tag = 'w')
|
|
|
- or (Tag = 'r')
|
|
|
- or (Tag = 'gccoptlist')
|
|
|
- or (Tag = 'key')
|
|
|
- or (Tag = 'value')
|
|
|
- or (Tag = 'copyrightnotice')
|
|
|
- or (Tag = 'covertexts')
|
|
|
- or (Tag = 'acronym')
|
|
|
- then
|
|
|
- Tag := ''
|
|
|
- else if (Tag = 'sc') then
|
|
|
- else if (Tag = 'anchor') then begin
|
|
|
- Tag := '';
|
|
|
- while (P <= Length (FullContents)) and (not (FullContents [P] in ['@', '{', '}'])) do
|
|
|
- Inc (P);
|
|
|
- end else if Tag = 'copyright' then begin
|
|
|
- Tag := '';
|
|
|
- NewContents := NewContents + '(c)';
|
|
|
- end else if Tag = 'TeX' then begin
|
|
|
- Tag := '';
|
|
|
- NewContents := NewContents + 'TeX';
|
|
|
- end else if Tag = 'equiv' then begin
|
|
|
- Tag := '';
|
|
|
- NewContents := NewContents + '<=>';
|
|
|
- end else if Tag = 'expansion' then begin
|
|
|
- Tag := '';
|
|
|
- NewContents := NewContents + 'expands to';
|
|
|
- end else if Tag = 'error' then begin
|
|
|
- Tag := '';
|
|
|
- NewContents := NewContents + 'Error:';
|
|
|
- end else if Tag = 'minus' then begin
|
|
|
- Tag := '';
|
|
|
- NewContents := NewContents + '<FONT FACE="Courier New">-</FONT>';
|
|
|
- end else if (Tag = 'dots') then begin
|
|
|
- Tag := '';
|
|
|
- NewContents := NewContents + '...';
|
|
|
- end else if (Tag = 'code') or (Tag = 'samp') or (Tag = 'command') or (Tag = 'file') or (Tag = 'math') or (Tag = 'env') or (Tag = 'kbd') or (Tag = 't') then begin
|
|
|
- if (Length (FullContents) >= P + 2) and (FullContents [P] = '-') and ((FullContents [P + 1] in ['A'..'Z', 'a'..'z', '0'..'9']) or ((FullContents [P + 1] = '-') and (FullContents [P + 2] in ['A'..'Z', 'a'..'z', '0'..'9']))) then begin
|
|
|
- Tag := 'B';
|
|
|
- Quotes := '''';
|
|
|
- end else
|
|
|
- Tag := 'CODE';
|
|
|
- end else if (Tag = 'strong') or (Tag = 'b') then
|
|
|
- Tag := 'B'
|
|
|
- else if (Tag = 'emph') or (Tag = 'var') or (Tag = 'i') then
|
|
|
- Tag := 'I'
|
|
|
- else if (Tag = 'dfn') then
|
|
|
- Tag := 'U'
|
|
|
- else if (Tag = 'option') then begin
|
|
|
- Tag := 'B';
|
|
|
- Quotes := '''';
|
|
|
- end else if (Tag = 'cite') then begin
|
|
|
- Tag := '';
|
|
|
- Quotes := '"';
|
|
|
- end else if (Tag = 'ref') or (Tag = 'xref') or (Tag = 'pxref') then begin
|
|
|
- Tag := 'A';
|
|
|
- I := Pos ('}', Copy (FullContents, P, 255));
|
|
|
- if I > 0 then begin
|
|
|
- while CountChars ('{', Copy (FullContents, P, I - 1)) > CountChars ('}', Copy (FullContents, P, I - 1)) do
|
|
|
- Inc (I);
|
|
|
- Parameters := 'HREF="' + GetLinkTo (Copy (FullContents, P, I - 1)) + '"';
|
|
|
- if ((Pos (',,', Copy (FullContents, P, 255)) > 0) or (Pos (','#13',', Copy (FullContents, P, 255)) > 0) or (Pos (','#13#10',', Copy (FullContents, P, 255)) > 0)) and (Pos ('{', Copy (FullContents, P, Pos (',', Copy (FullContents, P, 255)))) <= 0) then begin
|
|
|
- Delete (FullContents, P, Pos (',', Copy (FullContents, P, 255)));
|
|
|
- Delete (FullContents, P, Pos (',', Copy (FullContents, P, 255)));
|
|
|
- while FullContents [P] in [' ', #9, #13, #10] do
|
|
|
- Delete (FullContents, P, 1);
|
|
|
- end;
|
|
|
- StartSeeAlso;
|
|
|
- end;
|
|
|
- end else if (Tag = 'uref') then begin
|
|
|
- Tag := 'A';
|
|
|
- I := Pos ('}', Copy (FullContents, P, 255));
|
|
|
- if I > 0 then begin
|
|
|
- Parameters := 'HREF="' + Copy (FullContents, P, I - 1) + '"';
|
|
|
- StartSeeAlso;
|
|
|
- end;
|
|
|
- end else if (Tag = 'email') then begin
|
|
|
- Tag := 'A';
|
|
|
- I := Pos ('}', Copy (FullContents, P, 255));
|
|
|
- if I > 0 then
|
|
|
- Parameters := 'HREF="mailto:' + StringReplace (Copy (FullContents, P, I - 1), '@@', '@', []) + '"';
|
|
|
- end else if (Tag = 'footnote') then begin
|
|
|
- Tag := '';
|
|
|
- Quotes := '(';
|
|
|
- NewContents := NewContents + ' ';
|
|
|
- end else
|
|
|
- raise ESubStrNotFound.CreateFmt ('Unsupported style "%s"', [Tag]);
|
|
|
- if (Length (Tag) > 0) and (Tag <> 'sc') then begin
|
|
|
- NewContents := NewContents + '<' + Tag;
|
|
|
- if Length (Parameters) > 0 then
|
|
|
- NewContents := NewContents + ' ' + Parameters;
|
|
|
- NewContents := NewContents + '>' + Quotes;
|
|
|
- end;
|
|
|
- if Tag = 'sc' then
|
|
|
- Inc (SCase)
|
|
|
- else if Tag = 'CODE' then
|
|
|
- Inc (CodeFormat);
|
|
|
- ConvertFromP (ListType);
|
|
|
- if Tag = 'sc' then
|
|
|
- Dec (SCase)
|
|
|
- else if Tag = 'CODE' then
|
|
|
- Dec (CodeFormat);
|
|
|
- if Quotes = '(' then
|
|
|
- Quotes := ')';
|
|
|
- if (Length (Tag) > 0) and (Tag <> 'sc') then
|
|
|
- NewContents := NewContents + Quotes + '</' + Tag + '>';
|
|
|
- if Tag = 'A' then
|
|
|
- EndSeeAlso;
|
|
|
- end else begin
|
|
|
- while (P <= Length (FullContents)) and (FullContents [P] = ' ') do
|
|
|
- Inc (P);
|
|
|
- if Tag <> 'center' then begin
|
|
|
- while (P <= Length (FullContents)) and (not (FullContents [P] in [#13, #10])) do begin
|
|
|
- Parameters := Parameters + FullContents [P];
|
|
|
- Inc (P);
|
|
|
- end;
|
|
|
- while (P <= Length (FullContents)) and (FullContents [P] in [#13, #10]) do
|
|
|
- Inc (P);
|
|
|
- TrimWhiteSpace (Parameters);
|
|
|
- if (Tag = 'end') then begin
|
|
|
- Dec (P);
|
|
|
- if FullContents [P] = #10 then
|
|
|
- Dec (P);
|
|
|
- Break
|
|
|
- end else if (Tag = 'c')
|
|
|
- or (Tag = 'comment')
|
|
|
- or (Tag = 'set')
|
|
|
- or (Tag = 'setfilename')
|
|
|
- or (Tag = 'settitle')
|
|
|
- or (Tag = 'title')
|
|
|
- or (Tag = 'subtitle')
|
|
|
- or (Tag = 'cindex')
|
|
|
- or (Tag = 'kindex')
|
|
|
- or (Tag = 'opindex')
|
|
|
- or (Tag = 'findex')
|
|
|
- or (Tag = 'gol')
|
|
|
- or (Tag = 'noindent')
|
|
|
- or (Tag = 'need')
|
|
|
- or (Tag = 'page')
|
|
|
- or (Tag = 'setchapternewpage')
|
|
|
- or (Tag = 'finalout')
|
|
|
- or (Tag = 'printindex')
|
|
|
- or (Tag = 'syncodeindex')
|
|
|
- or (Tag = 'sp')
|
|
|
- or (Tag = 'author')
|
|
|
- or (Tag = 'vskip')
|
|
|
- or (Tag = 'top')
|
|
|
- or (Tag = 'refill')
|
|
|
- or (Tag = 'lowersections')
|
|
|
- or (Tag = 'raisesections')
|
|
|
- or (Tag = 'unnumbered')
|
|
|
- or (Tag = 'unnumberedsec')
|
|
|
- or (Tag = 'contents')
|
|
|
- or (Tag = 'defcodeindex')
|
|
|
- or (Tag = 'dircategory')
|
|
|
- or (Tag = 'tab')
|
|
|
- or (Tag = 'bye')
|
|
|
- or (Tag = 'insertcopying')
|
|
|
- then
|
|
|
- else if (Tag = 'node') then begin
|
|
|
- if not ((Parameters = 'Ln') and (CurNode = 'Line')) then begin
|
|
|
- FinishSection;
|
|
|
- CurNode := Parameters;
|
|
|
- CurSection := '';
|
|
|
- CurSectionTitle := Parameters;
|
|
|
- end;
|
|
|
- end else if (Tag = 'section') or (Tag = 'subsection') or (Tag = 'subsubsection') or (Tag = 'subheading') or (Tag = 'chapter') then begin
|
|
|
- if not ((CurNode = 'Line') and (Pos ('.ln', Parameters) > 0)) then begin
|
|
|
- FinishSection;
|
|
|
- CurSection := Parameters;
|
|
|
- CurSectionTitle := Parameters;
|
|
|
- end;
|
|
|
- end else if (Tag = 'ignore')
|
|
|
- or (Tag = 'tex')
|
|
|
- or (Tag = 'menu')
|
|
|
- or (Tag = 'direntry')
|
|
|
- or (Tag = 'copying')
|
|
|
- or ((Tag = 'ifset') and ((Parameters <> 'M68K') and (Parameters <> 'M680X0') and (Parameters <> 'COFF') and (Parameters <> 'W16') and (Parameters <> 'have-stabs') and (Parameters <> 'cppmanual')))
|
|
|
- then begin
|
|
|
- I := Length (NewContents) + 1;
|
|
|
- ConvertFromP (ListType);
|
|
|
- Delete (NewContents, I, Length (NewContents));
|
|
|
- end else if (Tag = 'group')
|
|
|
- or (Tag = 'ifset')
|
|
|
- or (Tag = 'ifclear')
|
|
|
- or (Tag = 'ifinfo')
|
|
|
- or (Tag = 'iftex')
|
|
|
- or (Tag = 'ifnottex')
|
|
|
- or (Tag = 'ifhtml')
|
|
|
- or (Tag = 'ifnothtml')
|
|
|
- or (Tag = 'macro')
|
|
|
- or (Tag = 'titlepage')
|
|
|
- or (Tag = 'quotation')
|
|
|
- or (Tag = 'display')
|
|
|
- or (Tag = 'detailmenu')
|
|
|
- or (Tag = 'html')
|
|
|
- then
|
|
|
- ConvertFromP (ListType)
|
|
|
- else if (Tag = 'example')
|
|
|
- or (Tag = 'smallexample')
|
|
|
- or (Tag = 'multitable')
|
|
|
- or (Tag = 'format')
|
|
|
- then begin
|
|
|
- NewContents := NewContents + '<PRE>';
|
|
|
- Inc (PreFormatted);
|
|
|
- ConvertFromP (ListType);
|
|
|
- Dec (PreFormatted);
|
|
|
- NewContents := NewContents + '</PRE>';
|
|
|
- end else if (Tag = 'table') or (Tag = 'ftable') or (Tag = 'vtable') then begin
|
|
|
- if CurFile = 'gnuexts' then begin
|
|
|
- S := NewContents;
|
|
|
- I := SecStart;
|
|
|
- SecStart := Length (NewContents) + 1;
|
|
|
- ConvertFromP (ltFiles);
|
|
|
- FinishSection;
|
|
|
- CurSubFile := '';
|
|
|
- SecStart := I;
|
|
|
- NewContents := S;
|
|
|
- end else begin
|
|
|
- if ListType = ltColumns then
|
|
|
- NewContents := NewContents + '<BR><BR>';
|
|
|
- NewContents := NewContents + '<DL>'#13#10;
|
|
|
- ConvertFromP (ltColumns);
|
|
|
- NewContents := NewContents + '</DL>';
|
|
|
- if ListType = ltColumns then
|
|
|
- NewContents := NewContents + '<BR>';
|
|
|
- end;
|
|
|
- end else if (Tag = 'itemize') then begin
|
|
|
- NewContents := NewContents + '<UL>'#13#10'<LI>'#13#10;
|
|
|
- ConvertFromP (ltNormal);
|
|
|
- NewContents := NewContents + '</LI>'#13#10'</UL>';
|
|
|
- end else if (Tag = 'enumerate') then begin
|
|
|
- NewContents := NewContents + '<OL';
|
|
|
- if Length (Parameters) > 0 then begin
|
|
|
- if Parameters [1] in ['0'..'9'] then
|
|
|
- NewContents := NewContents + ' START="' + Parameters + '"'
|
|
|
- else
|
|
|
- NewContents := NewContents + ' TYPE="' + Parameters + '"';
|
|
|
- end;
|
|
|
- NewContents := NewContents + '>'#13#10'<LI>'#13#10;
|
|
|
- ConvertFromP (ltNormal);
|
|
|
- NewContents := NewContents + '</LI>'#13#10'</OL>';
|
|
|
- end else if (Tag = 'item') or (Tag = 'itemx') then begin
|
|
|
- case ListType of
|
|
|
- ltNormal: begin
|
|
|
- NewContents := NewContents + '</LI>'#13#10'<LI>'#13#10;
|
|
|
- Insert (Parameters + #13#10, FullContents, P);
|
|
|
- end;
|
|
|
- ltColumns: begin
|
|
|
- Parameters := HTMLize (Parameters);
|
|
|
- I := Pos ('@', Parameters);
|
|
|
- while I > 0 do begin
|
|
|
- Delete (Parameters, I, 1);
|
|
|
- if (Length (Parameters) >= I) and (Parameters [I] in ['A'..'Z', 'a'..'z']) then begin
|
|
|
- if StartsWith ('var{', Parameters, True, I, True) then begin
|
|
|
- J := Pos ('}', Copy (Parameters, I, Length (Parameters)));
|
|
|
- if J > 0 then begin
|
|
|
- Delete (Parameters, I + J - 1, 1);
|
|
|
- Insert ('</I>', Parameters, I + J - 1);
|
|
|
- Insert ('<I>', Parameters, I);
|
|
|
- end;
|
|
|
- end else begin
|
|
|
- while (Length (Parameters) >= I) and (Parameters [I] <> '{') do
|
|
|
- Delete (Parameters, I, 1);
|
|
|
- if Length (Parameters) >= I then
|
|
|
- Delete (Parameters, I, 1);
|
|
|
- J := Pos ('}', Copy (Parameters, I, Length (Parameters)));
|
|
|
- if J > 0 then
|
|
|
- Delete (Parameters, I + J - 1, 1);
|
|
|
- end;
|
|
|
- end;
|
|
|
- I := Pos ('@', Parameters);
|
|
|
- end;
|
|
|
- NewContents := NewContents + '<DT><B>' + Parameters + '</B>'#13#10'<DD>';
|
|
|
- end;
|
|
|
- ltFiles: begin
|
|
|
- if P > SecStart + 5 then begin
|
|
|
- if Length (CurSubFile) > 0 then
|
|
|
- FinishSection;
|
|
|
- CurSubFile := Parameters;
|
|
|
- if Pos ('__builtin_', CurSubFile) > 0 then
|
|
|
- Delete (CurSubFile, 1, Pos ('__builtin_', CurSubFile) - 1);
|
|
|
- if Pos (' ', CurSubFile) > 0 then
|
|
|
- Delete (CurSubFile, Pos (' ', CurSubFile), Length (CurSubFile));
|
|
|
- end;
|
|
|
- end else
|
|
|
- Insert (Parameters, FullContents, P);
|
|
|
- end;
|
|
|
- end else if (Tag = 'exdent') then
|
|
|
- Insert (Parameters, FullContents, P)
|
|
|
- else if (Tag = 'deftypefn') then begin
|
|
|
- S := NewContents;
|
|
|
- I := SecStart;
|
|
|
- SecStart := Length (NewContents) + 1;
|
|
|
- CurSubFile := Parameters;
|
|
|
- if Pos ('__builtin_', CurSubFile) > 0 then
|
|
|
- Delete (CurSubFile, 1, Pos ('__builtin_', CurSubFile) - 1);
|
|
|
- if Pos (' ', CurSubFile) > 0 then
|
|
|
- Delete (CurSubFile, Pos (' ', CurSubFile), Length (CurSubFile));
|
|
|
- ConvertFromP;
|
|
|
- FinishSection;
|
|
|
- CurSubFile := '';
|
|
|
- SecStart := I;
|
|
|
- NewContents := S;
|
|
|
- end else if (Tag = 'include') then begin
|
|
|
- if FileExists (Parameters) or ((Parameters <> 'asconfig.texi') and (Parameters <> 'md.texi') and (Copy (Parameters, 1, 2) <> 'c-')) then begin
|
|
|
- S := LoadFile (Parameters);
|
|
|
- PreProcessSource (S);
|
|
|
- Insert (S, FullContents, P);
|
|
|
- end;
|
|
|
- end else
|
|
|
- raise ESubStrNotFound.CreateFmt ('Unsupported command "%s"', [Tag]);
|
|
|
- end;
|
|
|
- end;
|
|
|
- end else begin
|
|
|
- if FullContents [P] <> ':' then
|
|
|
- NewContents := NewContents + HTMLizeChar (FullContents [P]);
|
|
|
- Inc (P);
|
|
|
- end;
|
|
|
- end;
|
|
|
- end else begin
|
|
|
- if FullContents [P] <> #10 then begin
|
|
|
- if FullContents [P] in [' ', #13, #9] then begin
|
|
|
- if ((Copy (NewContents, Length (NewContents) - 1, 2) = 'eg') or (Copy (NewContents, Length (NewContents) - 1, 2) = 'ie')) and (Length (NewContents) > 2) and (NewContents [Length (NewContents) - 2] in [' ', #13, #9, '(', '[', '{']) then begin
|
|
|
- Insert ('.', NewContents, Length (NewContents));
|
|
|
- NewContents := NewContents + '.';
|
|
|
- end;
|
|
|
- end;
|
|
|
- if SCase > 0 then
|
|
|
- NewContents := NewContents + HTMLizeChar (UpCase (FullContents [P]))
|
|
|
- else if FullContents [P] in ['´', '`'] then
|
|
|
- NewContents := NewContents + ''''
|
|
|
- else if (FullContents [P] in ['-']) and (Copy (NewContents, Length (NewContents) - 1, 2) = '--') then begin
|
|
|
- NewContents := NewContents + ' ';
|
|
|
- NewContents [Length (NewContents) - 2] := ' ';
|
|
|
- end else if (FullContents [P] = ' ') and (CodeFormat > 0) then
|
|
|
- NewContents := NewContents + ' '
|
|
|
- else
|
|
|
- NewContents := NewContents + HTMLizeChar (FullContents [P]);
|
|
|
- end;
|
|
|
- Inc (P);
|
|
|
- end;
|
|
|
- end;
|
|
|
-end;
|
|
|
-
|
|
|
-begin
|
|
|
- if Pos ('invoke', ParamStr (1)) > 0 then
|
|
|
- CurFile := 'comopts'
|
|
|
- else if Pos ('as', ParamStr (1)) > 0 then
|
|
|
- CurFile := 'gnuasm'
|
|
|
- else if Pos ('cpp', ParamStr (1)) > 0 then
|
|
|
- CurFile := 'cpp'
|
|
|
- else if Pos ('extend', ParamStr (1)) > 0 then
|
|
|
- CurFile := 'gnuexts'
|
|
|
- else
|
|
|
- CurFile := WithoutExt (ParamStr (1));
|
|
|
- FullContents := LoadFile (ParamStr (1));
|
|
|
- PreProcessSource (FullContents);
|
|
|
- NewContents := '<HTML><BODY>'#13#10;
|
|
|
- try
|
|
|
- CurNode := CurFile;
|
|
|
- CurSection := '';
|
|
|
- CurSectionTitle := '';
|
|
|
- CurSubFile := '';
|
|
|
- P := 1;
|
|
|
- SecStart := Length (NewContents) + 1;
|
|
|
- PreFormatted := 0;
|
|
|
- SCase := 0;
|
|
|
- CodeFormat := 0;
|
|
|
- ConvertFromP;
|
|
|
- if P <= Length (FullContents) then
|
|
|
- raise ESubStrNotFound.Create ('Unexpected closing bracket');
|
|
|
- FinishSection;
|
|
|
- finally
|
|
|
- NewContents := NewContents + #13#10'</BODY></HTML>';
|
|
|
- PostProcessDest (NewContents);
|
|
|
- WriteFile (ChangeFileExt (ParamStr (1), '.html'), NewContents);
|
|
|
- end;
|
|
|
-end.
|
|
|
-
|