/usr/share/doc/texinfo/html/Reference-Implementation.html is in texinfo-doc-nonfree 6.5.0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- This manual is for GNU Texinfo (version 6.5, 25 August 2017),
a documentation system that can produce both online information and a
printed manual from a single source using semantic markup.
Copyright (C) 1988, 1990, 1991, 1992, 1993, 1995, 1996, 1997,
1998, 1999, 2001, 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
2010, 2011, 2012, 2013, 2014, 2015, 2016 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with the Front-Cover Texts being "A GNU Manual",
and with the Back-Cover Texts as in (a) below. A copy of the license
is included in the section entitled "GNU Free Documentation
License".
(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
modify this GNU manual. Buying copies from the FSF supports it in
developing GNU and promoting software freedom." -->
<!-- Created by GNU Texinfo 6.4.90, http://www.gnu.org/software/texinfo/ -->
<head>
<title>Reference Implementation (GNU Texinfo 6.5)</title>
<meta name="description" content="Reference Implementation (GNU Texinfo 6.5)">
<meta name="keywords" content="Reference Implementation (GNU Texinfo 6.5)">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="Command-and-Variable-Index.html#Command-and-Variable-Index" rel="index" title="Command and Variable Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Generic-Translator-texi2any.html#Generic-Translator-texi2any" rel="up" title="Generic Translator texi2any">
<link href="Invoking-texi2any.html#Invoking-texi2any" rel="next" title="Invoking texi2any">
<link href="Generic-Translator-texi2any.html#Generic-Translator-texi2any" rel="prev" title="Generic Translator texi2any">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
ul.no-bullet {list-style: none}
-->
</style>
</head>
<body lang="en">
<a name="Reference-Implementation"></a>
<div class="header">
<p>
Next: <a href="Invoking-texi2any.html#Invoking-texi2any" accesskey="n" rel="next">Invoking <code>texi2any</code></a>, Up: <a href="Generic-Translator-texi2any.html#Generic-Translator-texi2any" accesskey="u" rel="up">Generic Translator <code>texi2any</code></a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Command-and-Variable-Index.html#Command-and-Variable-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="texi2any_003a-A-Texinfo-Reference-Implementation"></a>
<h3 class="section">20.1 <code>texi2any</code>: A Texinfo Reference Implementation</h3>
<a name="index-texi2any_002c-as-reference-implementation"></a>
<a name="index-Reference-implementation"></a>
<a name="index-Implementation_002c-texi2any-as-reference"></a>
<p>Above, we called <code>texi2any</code> “the” translator for Texinfo
instead of just “a” translator, even though (of course) it’s
technically and legally possible for other implementations to be
written. The reason is that alternative implementations are very
likely to have subtle, or not-so-subtle, differences in behavior, and
thus Texinfo documents would become dependent on the processor.
Therefore, it is important to have a reference implementation that
defines parts of the language not fully specified by the manual (often
intentionally so). It is equally important to have consistent
command-line options and other behavior for all processors.
</p>
<a name="index-Tree-representation-of-documents"></a>
<a name="index-Syntax-tree-representation-of-documents"></a>
<a name="index-Abstract-syntax-tree-representation-of-documents"></a>
<p>For this reason, the once-independent <code>texi2html</code> Perl Texinfo
processor was made compatible with the C implementation of
<code>makeinfo</code>, to avoid continuing with two different
implementations (see <a href="History.html#History">History</a>). The current implementation,
<code>texi2any</code>, serves as the reference implementation. It
inherited the design of customization and other features from
<code>texi2html</code> (for more on <code>texi2html</code> compatibility,
see <a href="texi2html.html#texi2html"><code>texi2html</code></a>). However, <code>texi2any</code> is a full
reimplementation: it constructs a tree-based representation of the
input document for all back-ends to work from.
</p>
<a name="index-Texinfo-language-tests"></a>
<a name="index-Tests_002c-of-Texinfo-language"></a>
<p>Extensive tests of the language were developed at the same time as
<code>texi2any</code>; we plead with anyone thinking of writing a program
to parse Texinfo input to at least make use of these tests.
</p>
<a name="index-Examples-of-using-texi2any"></a>
<a name="index-Texinfo_003a_003aParser-module"></a>
<p>The <code>texi2html</code> wrapper script (see <a href="texi2html.html#texi2html"><code>texi2html</code></a>)
provides a very simple example of calling <code>texi2any</code> from a
shell script; it’s in <samp>util/texi2html</samp> in the Texinfo sources.
More consequentially, <code>texi-elements-by-size</code> is an example
Perl script using the <code>Texinfo::Parser</code> module interface; it’s
also in the <samp>util</samp> source directory. (Its functionality may also
be useful to authors; see <a href="Tips.html#texi_002delements_002dby_002dsize">texi-elements-by-size</a>.)
</p>
<a name="index-Future-of-Texinfo-implementations"></a>
<p>With the release of <code>texi2any</code> as the reference
implementation, development of both the C implementation of
<code>makeinfo</code> and <code>texi2html</code> has been halted. Going
forward, we ask authors of Texinfo documents to use only
<code>texi2any</code>.
</p>
<hr>
<div class="header">
<p>
Next: <a href="Invoking-texi2any.html#Invoking-texi2any" accesskey="n" rel="next">Invoking <code>texi2any</code></a>, Up: <a href="Generic-Translator-texi2any.html#Generic-Translator-texi2any" accesskey="u" rel="up">Generic Translator <code>texi2any</code></a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Command-and-Variable-Index.html#Command-and-Variable-Index" title="Index" rel="index">Index</a>]</p>
</div>
</body>
</html>
|