summaryrefslogtreecommitdiff
path: root/fpcdocs/syntax/typeclas.syn
blob: 56cdf08ee99c235d6a330af16016bf96e2ad4732 (plain)
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
\begin{diagram}{Class types}{classtype}
\begin{mysyntdiag}
\synt{class\ type} 
\begin{stack}
\synt{class\ forward\ definition} \\
\synt{class\ definition}
\end{stack}
\end{mysyntdiag}
\begin{mysyntdiag}
\synt{class\ forward\ definition} \lit*{class} 
\end{mysyntdiag}
\begin{mysyntdiag}
\synt{class\ definition}
\begin{stack}\\ \lit*{packed} \end{stack}
\lit*{class} 
\begin{stack}\\ heritage \end{stack}
\begin{stack}\\
\begin{rep}[b]
  \synt{component\ list} \\ 
%  \synt{class\ visibility\ specifier} 
\end{rep}
\lit*{end} 
\end{stack}
\end{mysyntdiag}
\begin{mysyntdiag}
\synt{heritage} \lit*( \synt{class\ type\ identifier} \begin{stack}\\ \synt{implemented\ interfaces} \end{stack} \lit* )
\end{mysyntdiag}
\begin{mysyntdiag}
\synt{implemented\ interfaces} 
\begin{rep}[b]
\lit{,} \synt{interface\ identifier}\\
\end{rep}
\end{mysyntdiag}
\begin{mysyntdiag}
\synt{component\ list} 
\begin{stack}\\ \synt {visibility\ specifier} \end{stack}
\begin{stack}\\ \begin{rep}[b] \synt{field\ definition} \\ \end{rep} \end{stack}
\begin{stack}\\ 
  \begin{rep}[b] 
    \begin{stack} 
      \synt{const\ declaration\ part} \\
      \synt{type\ declaration\ part} \\
      \synt{variable\ declaration\ part} \\
      \synt{class\ variable\ declaration\ part} \\
      \synt{method\ definition} \\
      \synt{property\ definition}
    \end{stack} \\ 
  \end{rep} 
\end{stack}
\end{mysyntdiag}
\begin{mysyntdiag}
\synt{class\ variable\ declaration\ part} \lit*{class} \synt{variable\ declaration\ part}
\end{mysyntdiag}
\begin{mysyntdiag}
\synt{field\ definition} \synt{identifier\ list} \lit*: \synt{type} \lit*;
\begin{stack}\\
\lit*{static ;}
\end{stack}
\end{mysyntdiag}
\begin{mysyntdiag}
\synt{method\ definition} 
\begin{stack} 
\begin{stack}\\
\lit*{class}
\end{stack}
\begin{stack}
\synt{function\ header} \\
\synt{procedure\ header}
\end{stack} \\
\synt{constructor\ header} \\
\synt{desctuctor\ header}
\end{stack}
\lit*;
\begin{stack}\\
  \begin{stack} 
    \begin{stack} \lit*{virtual} \\ \lit*{dynamic} \end{stack}
    \begin{stack}\\ \lit*; \lit*{abstract} \end{stack}  \\
     \lit*{override} \\
     \lit*{message} 
      \begin{stack} \synt{integer\ constant} \\
         \synt{string\ constant} \end{stack}
  \end{stack} 
\lit*;
\end{stack}
\begin{stack}\\ \synt{call\ modifiers} \lit*; \end{stack}
\end{mysyntdiag}
\begin{mysyntdiag}
\synt{class\ visibility\ specifier}
\begin{stack} \\
  \begin{stack}\\ \lit*{strict} \end{stack}  \lit*{private}\\
  \begin{stack}\\ \lit*{strict} \end{stack}  \lit*{protected}\\
\lit*{public}\\
\lit*{published}
\end{stack}
\end{mysyntdiag}
\end{diagram}