doc/: Sort out the manual structure. Write stuff.
[sod] / doc / sod.toc
CommitLineData
1f7d590d
MW
1\contentsline {chapter}{Contents}{i}{chapter*.1}
2\contentsline {part}{I\hspace {1em}Tutorial}{1}{part.1}
3\contentsline {chapter}{\numberline {1}Tutorial}{3}{chapter.1}
4\contentsline {section}{\numberline {1.1}Introduction}{3}{section.1.1}
5\contentsline {subsection}{\numberline {1.1.1}Building programs with Sod}{4}{subsection.1.1.1}
6\contentsline {section}{\numberline {1.2}A traditional trivial introduction}{4}{section.1.2}
7\contentsline {part}{II\hspace {1em}Reference}{7}{part.2}
8\contentsline {chapter}{\numberline {2}Concepts}{9}{chapter.2}
9\contentsline {section}{\numberline {2.1}Classes and slots}{9}{section.2.1}
10\contentsline {section}{\numberline {2.2}Messages and methods}{9}{section.2.2}
11\contentsline {section}{\numberline {2.3}Metaclasses}{9}{section.2.3}
12\contentsline {section}{\numberline {2.4}Modules}{9}{section.2.4}
13\contentsline {chapter}{\numberline {3}Module syntax}{11}{chapter.3}
14\contentsline {subsection}{\numberline {3.0.1}Lexical syntax}{11}{subsection.3.0.1}
15\contentsline {subsubsection}{Identifiers}{11}{section*.2}
16\contentsline {subsubsection}{String and character literals}{12}{section*.3}
17\contentsline {subsubsection}{Integer literals}{12}{section*.4}
18\contentsline {subsubsection}{Punctuation}{13}{section*.5}
19\contentsline {subsubsection}{Comments}{13}{section*.6}
20\contentsline {subsection}{\numberline {3.0.2}Special nonterminals}{13}{subsection.3.0.2}
21\contentsline {subsubsection}{S-expressions}{13}{section*.7}
22\contentsline {subsubsection}{C fragments}{13}{section*.8}
23\contentsline {subsection}{\numberline {3.0.3}Module syntax}{14}{subsection.3.0.3}
24\contentsline {subsection}{\numberline {3.0.4}Simple definitions}{14}{subsection.3.0.4}
25\contentsline {subsubsection}{Importing modules}{14}{section*.9}
26\contentsline {subsubsection}{Loading extensions}{14}{section*.10}
27\contentsline {subsubsection}{Lisp escapes}{15}{section*.11}
28\contentsline {subsubsection}{Declaring type names}{15}{section*.12}
29\contentsline {subsection}{\numberline {3.0.5}Literal code}{15}{subsection.3.0.5}
30\contentsline {subsection}{\numberline {3.0.6}Property sets}{16}{subsection.3.0.6}
31\contentsline {subsubsection}{The expression evaluator}{16}{section*.13}
32\contentsline {subsection}{\numberline {3.0.7}C types}{16}{subsection.3.0.7}
33\contentsline {subsubsection}{Declaration specifiers}{17}{section*.14}
34\contentsline {subsubsection}{Declarators}{17}{section*.15}
35\contentsline {subsection}{\numberline {3.0.8}Defining classes}{18}{subsection.3.0.8}
36\contentsline {subsubsection}{Forward declarations}{18}{section*.16}
37\contentsline {subsubsection}{Full class definitions}{18}{section*.17}
38\contentsline {subsubsection}{Slot items}{19}{section*.18}
39\contentsline {subsubsection}{Initializer items}{20}{section*.19}
40\contentsline {subsubsection}{Message items}{20}{section*.20}
41\contentsline {subsubsection}{Method items}{20}{section*.21}
42\contentsline {part}{III\hspace {1em}Lisp interface}{21}{part.3}
43\contentsline {chapter}{\numberline {4}Protocol overview}{23}{chapter.4}
44\contentsline {section}{\numberline {4.1}A tour through the translator}{23}{section.4.1}
45\contentsline {section}{\numberline {4.2}Specification conventions}{23}{section.4.2}
46\contentsline {subsection}{\numberline {4.2.1}Format of the entries}{24}{subsection.4.2.1}
47\contentsline {chapter}{\numberline {5}Parsing}{27}{chapter.5}
48\contentsline {section}{\numberline {5.1}The parser protocol}{27}{section.5.1}
49\contentsline {section}{\numberline {5.2}File locations}{27}{section.5.2}
50\contentsline {section}{\numberline {5.3}Scanners}{27}{section.5.3}
51\contentsline {subsection}{\numberline {5.3.1}Basic scanner protocol}{27}{subsection.5.3.1}
52\contentsline {subsection}{\numberline {5.3.2}Place-capture scanner protocol}{28}{subsection.5.3.2}
53\contentsline {subsection}{\numberline {5.3.3}Scanner file-location protocol}{29}{subsection.5.3.3}
54\contentsline {subsection}{\numberline {5.3.4}Character scanners}{29}{subsection.5.3.4}
55\contentsline {subsubsection}{Stream access to character scanners}{30}{section*.22}
56\contentsline {subsection}{\numberline {5.3.5}String scanners}{31}{subsection.5.3.5}
57\contentsline {subsection}{\numberline {5.3.6}Character buffer scanners}{31}{subsection.5.3.6}
58\contentsline {subsection}{\numberline {5.3.7}Token scanners}{32}{subsection.5.3.7}
59\contentsline {subsection}{\numberline {5.3.8}List scanners}{33}{subsection.5.3.8}
60\contentsline {section}{\numberline {5.4}Parsing macros}{33}{section.5.4}
61\contentsline {section}{\numberline {5.5}Lexical analyser}{33}{section.5.5}
62\contentsline {chapter}{\numberline {6}C language utilities}{35}{chapter.6}
63\contentsline {section}{\numberline {6.1}C type representation}{35}{section.6.1}
64\contentsline {subsection}{\numberline {6.1.1}Overview}{35}{subsection.6.1.1}
65\contentsline {subsubsection}{Constructing C type objects}{35}{section*.23}
66\contentsline {subsubsection}{Printing}{35}{section*.24}
67\contentsline {subsection}{\numberline {6.1.2}The C type root class}{35}{subsection.6.1.2}
68\contentsline {subsection}{\numberline {6.1.3}C type S-expression notation}{36}{subsection.6.1.3}
69\contentsline {subsection}{\numberline {6.1.4}Comparing C types}{37}{subsection.6.1.4}
70\contentsline {subsection}{\numberline {6.1.5}Outputting C types}{38}{subsection.6.1.5}
71\contentsline {subsection}{\numberline {6.1.6}Type qualifiers and qualifiable types}{39}{subsection.6.1.6}
72\contentsline {subsection}{\numberline {6.1.7}Leaf types}{40}{subsection.6.1.7}
73\contentsline {subsection}{\numberline {6.1.8}Compound C types}{43}{subsection.6.1.8}
74\contentsline {subsection}{\numberline {6.1.9}Pointer types}{43}{subsection.6.1.9}
75\contentsline {subsection}{\numberline {6.1.10}Array types}{43}{subsection.6.1.10}
76\contentsline {subsection}{\numberline {6.1.11}Function types}{44}{subsection.6.1.11}
77\contentsline {subsection}{\numberline {6.1.12}Parsing C types}{45}{subsection.6.1.12}
78\contentsline {section}{\numberline {6.2}Generating C code}{45}{section.6.2}
79\contentsline {chapter}{\numberline {7}The output system}{47}{chapter.7}
80\contentsline {part}{IV\hspace {1em}Appendices}{49}{part.4}
81\contentsline {chapter}{\numberline {A}Cutting-room floor}{51}{appendix.A}
82\contentsline {section}{\numberline {A.1}Generated names}{51}{section.A.1}
83\contentsline {subsection}{\numberline {A.1.1}Instance layout}{51}{subsection.A.1.1}
84\contentsline {section}{\numberline {A.2}Class objects}{51}{section.A.2}
85\contentsline {section}{\numberline {A.3}Classes}{53}{section.A.3}
86\contentsline {subsection}{\numberline {A.3.1}Classes and superclasses}{53}{subsection.A.3.1}
87\contentsline {subsection}{\numberline {A.3.2}The class precedence list}{53}{subsection.A.3.2}
88\contentsline {subsection}{\numberline {A.3.3}Instances and metaclasses}{53}{subsection.A.3.3}
89\contentsline {subsection}{\numberline {A.3.4}Items and inheritance}{54}{subsection.A.3.4}
90\contentsline {subsubsection}{Slots}{54}{section*.25}
91\contentsline {subsubsection}{Initializers}{54}{section*.26}
92\contentsline {subsubsection}{Messages}{54}{section*.27}
93\contentsline {subsubsection}{Methods}{55}{section*.28}
94\contentsline {subsection}{\numberline {A.3.5}Chains and instance layout}{55}{subsection.A.3.5}
95\contentsline {section}{\numberline {A.4}Superclass linearization}{56}{section.A.4}
96\contentsline {section}{\numberline {A.5}Invariance, covariance, contravariance}{57}{section.A.5}