|
@@ -1 +1,104 @@
|
|
-%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
|
|
+%
|
|
|
|
+% $Id$
|
|
|
|
+% This file is part of the FPC documentation.
|
|
|
|
+% Copyright (C) 1998 by Florian Klaempfl
|
|
|
|
+%
|
|
|
|
+% The FPC documentation is free text; you can redistribute it and/or
|
|
|
|
+% modify it under the terms of the GNU Library General Public License as
|
|
|
|
+% published by the Free Software Foundation; either version 2 of the
|
|
|
|
+% License, or (at your option) any later version.
|
|
|
|
+%
|
|
|
|
+% The FPC Documentation 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
|
|
|
|
+% Library General Public License for more details.
|
|
|
|
+%
|
|
|
|
+% You should have received a copy of the GNU Library General Public
|
|
|
|
+% License along with the FPC documentation; see the file COPYING.LIB. If not,
|
|
|
|
+% write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
|
|
+% Boston, MA 02111-1307, USA.
|
|
|
|
+%
|
|
|
|
+\documentclass{report}
|
|
|
|
+\usepackage{a4}
|
|
|
|
+\usepackage{html}
|
|
|
|
+\makeindex
|
|
|
|
+\latex{\usepackage{multicol}}
|
|
|
|
+\latex{\usepackage{fpcman}}
|
|
|
|
+\html{\input{fpc-html.tex}}
|
|
|
|
+\newcommand{\remark}[1]{\par$\rightarrow$\textbf{#1}\par}
|
|
|
|
+\newcommand{\olabel}[1]{\label{option:#1}}
|
|
|
|
+% We should change this to something better. See \seef etc.
|
|
|
|
+\newcommand{\seeo}[1]{See \ref{option:#1}}
|
|
|
|
+\begin{document}
|
|
|
|
+\title{Inside Free Pascal}
|
|
|
|
+\docdescription{Internal documentation for \fpc, version \fpcversion}
|
|
|
|
+\docversion{1.2}
|
|
|
|
+\date{March 1998}
|
|
|
|
+\author{Florian Kl\"ampfl}
|
|
|
|
+\maketitle
|
|
|
|
+\tableofcontents
|
|
|
|
+
|
|
|
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
+% Introduction
|
|
|
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
+\chapter{Introduction}
|
|
|
|
+
|
|
|
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
+% About this document
|
|
|
|
+\section{About this document}
|
|
|
|
+
|
|
|
|
+This document tries to make the internal working of \fpc more clear.
|
|
|
|
+It is assumed that the reader has some knowledge about compiler
|
|
|
|
+building
|
|
|
|
+
|
|
|
|
+This document describes the compiler as it is/functions at the time of
|
|
|
|
+writing. Since the compiler is under continuous development, some of the
|
|
|
|
+things described here may be outdated. In case of doubt, consult the
|
|
|
|
+\file{README} files, distributed with the compiler.
|
|
|
|
+The \file{README} files are, in case of conflict with this manual,
|
|
|
|
+ authoritative.
|
|
|
|
+
|
|
|
|
+I hope, my poor english is quite understandable. Feel free to correct
|
|
|
|
+spelling mistakes.
|
|
|
|
+
|
|
|
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
+% Overview
|
|
|
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
+\chapter{Overview}
|
|
|
|
+
|
|
|
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
+% The scanner
|
|
|
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
+\chapter{The scanner}
|
|
|
|
+
|
|
|
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
+% The symbol tables
|
|
|
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
+\chapter{The symbol tables}
|
|
|
|
+
|
|
|
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
+% Symbols
|
|
|
|
+\section{Symbols}
|
|
|
|
+
|
|
|
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
+% Definitions
|
|
|
|
+\section{Definitions}
|
|
|
|
+
|
|
|
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
+% Working with symbol tables
|
|
|
|
+\section{Working with symbol tables}
|
|
|
|
+
|
|
|
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
+% The parse tree
|
|
|
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
+\chapter{The parse tree}
|
|
|
|
+
|
|
|
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
+% The parser
|
|
|
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
+\chapter{The parser}
|
|
|
|
+
|
|
|
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
+% The code generation
|
|
|
|
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
+\chapter{The code generation}
|