diff options
author | Guido van Rossum <guido@python.org> | 1992-08-14 09:11:01 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1992-08-14 09:11:01 (GMT) |
commit | 46f3e00407d614e0a1003379197c75e1b835e629 (patch) | |
tree | 21ac1f88f3c19e58bd8ff26e5998e44af1e4381f /Doc/ref1.tex | |
parent | 39789030bd9c9d21e2e9b6c8ca2e1214ba8f4b52 (diff) | |
download | cpython-46f3e00407d614e0a1003379197c75e1b835e629.zip cpython-46f3e00407d614e0a1003379197c75e1b835e629.tar.gz cpython-46f3e00407d614e0a1003379197c75e1b835e629.tar.bz2 |
Initial revision
Diffstat (limited to 'Doc/ref1.tex')
-rw-r--r-- | Doc/ref1.tex | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/Doc/ref1.tex b/Doc/ref1.tex new file mode 100644 index 0000000..b373e36 --- /dev/null +++ b/Doc/ref1.tex @@ -0,0 +1,81 @@ +\chapter{Introduction} + +This reference manual describes the Python programming language. +It is not intended as a tutorial. + +While I am trying to be as precise as possible, I chose to use English +rather than formal specifications for everything except syntax and +lexical analysis. This should make the document better understandable +to the average reader, but will leave room for ambiguities. +Consequently, if you were coming from Mars and tried to re-implement +Python from this document alone, you might have to guess things and in +fact you would probably end up implementing quite a different language. +On the other hand, if you are using +Python and wonder what the precise rules about a particular area of +the language are, you should definitely be able to find them here. + +It is dangerous to add too many implementation details to a language +reference document --- the implementation may change, and other +implementations of the same language may work differently. On the +other hand, there is currently only one Python implementation, and +its particular quirks are sometimes worth being mentioned, especially +where the implementation imposes additional limitations. Therefore, +you'll find short ``implementation notes'' sprinkled throughout the +text. + +Every Python implementation comes with a number of built-in and +standard modules. These are not documented here, but in the separate +{\em Python Library Reference} document. A few built-in modules are +mentioned when they interact in a significant way with the language +definition. + +\section{Notation} + +The descriptions of lexical analysis and syntax use a modified BNF +grammar notation. This uses the following style of definition: +\index{BNF} +\index{grammar} +\index{syntax} +\index{notation} + +\begin{verbatim} +name: lc_letter (lc_letter | "_")* +lc_letter: "a"..."z" +\end{verbatim} + +The first line says that a \verb\name\ is an \verb\lc_letter\ followed by +a sequence of zero or more \verb\lc_letter\s and underscores. An +\verb\lc_letter\ in turn is any of the single characters `a' through `z'. +(This rule is actually adhered to for the names defined in lexical and +grammar rules in this document.) + +Each rule begins with a name (which is the name defined by the rule) +and a colon. A vertical bar (\verb\|\) is used to separate +alternatives; it is the least binding operator in this notation. A +star (\verb\*\) means zero or more repetitions of the preceding item; +likewise, a plus (\verb\+\) means one or more repetitions, and a +phrase enclosed in square brackets (\verb\[ ]\) means zero or one +occurrences (in other words, the enclosed phrase is optional). The +\verb\*\ and \verb\+\ operators bind as tightly as possible; +parentheses are used for grouping. Literal strings are enclosed in +double quotes. White space is only meaningful to separate tokens. +Rules are normally contained on a single line; rules with many +alternatives may be formatted alternatively with each line after the +first beginning with a vertical bar. + +In lexical definitions (as the example above), two more conventions +are used: Two literal characters separated by three dots mean a choice +of any single character in the given (inclusive) range of ASCII +characters. A phrase between angular brackets (\verb\<...>\) gives an +informal description of the symbol defined; e.g. this could be used +to describe the notion of `control character' if needed. +\index{lexical definitions} +\index{ASCII} + +Even though the notation used is almost the same, there is a big +difference between the meaning of lexical and syntactic definitions: +a lexical definition operates on the individual characters of the +input source, while a syntax definition operates on the stream of +tokens generated by the lexical analysis. All uses of BNF in the next +chapter (``Lexical Analysis'') are lexical definitions; uses in +subsequent chapters are syntactic definitions. |