diff --git a/docs/syntax/address.syn b/docs/syntax/address.syn new file mode 100644 index 0000000000..79e737af0c --- /dev/null +++ b/docs/syntax/address.syn @@ -0,0 +1,10 @@ +\begin{psyntax}{Address factor}{addressfactor} +\synt{address factor} +\lit* @ +\( +\synt{variable\ reference} \\ +\synt{procedure\ identifier} \\ +\synt{function\ identifier}\\ +\synt{qualified\ method\ identifier} +\) +\end{psyntax} diff --git a/docs/syntax/assign.syn b/docs/syntax/assign.syn new file mode 100644 index 0000000000..9ebd993d5a --- /dev/null +++ b/docs/syntax/assign.syn @@ -0,0 +1,14 @@ +\begin{psyntax}{Assignments}{assignments} +\synt{assignment\ statement} +\( +\synt{variable\ reference} \\ +\synt{function\ identifier} +\) +\( +\lit*{:=} \\ +\lit*{+=} \\ +\lit*{*=} \\ +\lit*{/=} +\) +\synt{expression} +\end{psyntax} \ No newline at end of file diff --git a/docs/syntax/case.syn b/docs/syntax/case.syn new file mode 100644 index 0000000000..93a440128a --- /dev/null +++ b/docs/syntax/case.syn @@ -0,0 +1,21 @@ +\begin{diagram}{Case statement}{casestatement} +\begin{mysyntdiag} +\synt{case\ statement} +\lit*{case} \synt{expression} \lit*{of} +\<[b] case \\ \lit* ; \> +\[ \synt{else\ part} \] \[ \lit* ; \] +\lit*{end} +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{case} +\<[b] + \synt{constant} \[ \lit*{..} \synt{constant} \] \\ +\lit* , +\> +\lit* : +\synt{statement} +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{else\ part} \lit* {else} \synt{statement} +\end{mysyntdiag} +\end{diagram} diff --git a/docs/syntax/compound.syn b/docs/syntax/compound.syn new file mode 100644 index 0000000000..e1adbdba07 --- /dev/null +++ b/docs/syntax/compound.syn @@ -0,0 +1,6 @@ +\begin{psyntax}{Compound statements}{compoundstatements} +\synt{compound\ statement} +\lit*{begin} +\<[b] \synt{statement} \\ \lit* ; \> +\lit*{end} +\end{psyntax} diff --git a/docs/syntax/conditio.syn b/docs/syntax/conditio.syn new file mode 100644 index 0000000000..6e4bfeca67 --- /dev/null +++ b/docs/syntax/conditio.syn @@ -0,0 +1,7 @@ +\begin{psyntax}{Conditional statements}{conditionalstatements} +\synt{conditional\ statement} +\( +\synt{if\ statement}\\ +\synt{case\ statement} +\) +\end{psyntax} \ No newline at end of file diff --git a/docs/syntax/const.syn b/docs/syntax/const.syn new file mode 100644 index 0000000000..4b89564f68 --- /dev/null +++ b/docs/syntax/const.syn @@ -0,0 +1,6 @@ +\begin{psyntax}{Constant declaration}{constdec} + \synt{constant\ declaration} +\begin{rep}[b] + \synt{identifier} \lit*= \synt{expression} \lit*; \\ +\end{rep} +\end{psyntax} \ No newline at end of file diff --git a/docs/syntax/construct.syn b/docs/syntax/construct.syn new file mode 100644 index 0000000000..355afc43c8 --- /dev/null +++ b/docs/syntax/construct.syn @@ -0,0 +1,14 @@ +\begin{diagram}{Constructors and destructors}{constuctdestruct} +\begin{mysyntdiag} +\synt{constructor\ header} +\lit*{constructor} +\( \synt{identifier} \\ \synt{qualified\ method\ identifier} \) + \synt{formal\ parameter\ list} +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{desctructor\ header} +\lit*{destructor} +\( \synt{identifier} \\ \synt{qualified\ method\ identifier} \) + \synt{formal\ parameter\ list} +\end{mysyntdiag} +\end{diagram} \ No newline at end of file diff --git a/docs/syntax/diagram.tex b/docs/syntax/diagram.tex new file mode 100644 index 0000000000..96c8593c4b --- /dev/null +++ b/docs/syntax/diagram.tex @@ -0,0 +1,29 @@ +% +% Here we determine the style of the syntax diagrams. +% +% Define a 'boxing' environment +\newenvironment{diagram}[2]% +{\begin{quote}\rule{0.5pt}{1ex}% +\rule[1ex]{\linewidth}{0.5pt}% +\rule{0.5pt}{1ex}\\[-0.5ex]% +\textbf{#1}\\[-0.5ex]}% +{\rule{0.5pt}{1ex}% +\rule{\linewidth}{0.5pt}% +\rule{0.5pt}{1ex}\end{quote}} +% Define mysyntdiag for my style of diagrams +\newenvironment{mysyntdiag}% +{\begin{syntdiag}\setlength{\sdmidskip}{.5em}\sffamily}% +{\end{syntdiag}}% +% Finally, define a combination of the above two. +\newenvironment{psyntax}[2]{\begin{diagram}{#1}{#2}\begin{mysyntdiag}}% +{\end{mysyntdiag}\end{diagram}} +% Redefine the styles used in the diagram. +\latex{\renewcommand{\litleft}{\bfseries\ } +\renewcommand{\ulitleft}{\bfseries\ } +\renewcommand{\syntleft}{\ } +\renewcommand{\litright}{\ \rule[.5ex]{.5em}{2\sdrulewidth}} +\renewcommand{\ulitright}{\ \rule[.5ex]{.5em}{2\sdrulewidth}} +\renewcommand{\syntright}{\ \rule[.5ex]{.5em}{2\sdrulewidth}} +} +% Finally, a referencing command. +\newcommand{\seesy}[1]{see diagram} \ No newline at end of file diff --git a/docs/syntax/expfact.syn b/docs/syntax/expfact.syn new file mode 100644 index 0000000000..48868375b0 --- /dev/null +++ b/docs/syntax/expfact.syn @@ -0,0 +1,23 @@ +\begin{diagram}{Factors}{factors} +\begin{mysyntdiag} +\synt{factor} +\( \lit* ( \synt{expression} \lit*) \\ +\synt{variable\ reference} \\ +\synt{function\ call} \\ +\synt{unsigned\ constant}\\ +\lit*{not} \synt{factor} \\ +\lit{sign} \synt{factor}\\ +\synt{set\ constructor}\\ +\synt{value\ typecast}\\ +\synt{address\ factor}\\ +\) +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{unsigned\ constant} +\( \synt{unsigned\ number} \\ + \synt{character\ string} \\ + \synt{constant\ identifier} \\ + \lit*{Nil} +\) +\end{mysyntdiag} +\end{diagram} \ No newline at end of file diff --git a/docs/syntax/expsimpl.syn b/docs/syntax/expsimpl.syn new file mode 100644 index 0000000000..52e58aced0 --- /dev/null +++ b/docs/syntax/expsimpl.syn @@ -0,0 +1,30 @@ +\begin{diagram}{Expressions}{expressions} +\begin{mysyntdiag} +\synt{expression} +\synt{simple\ expression} +\[ +\( + \verb+ * + \\ + \verb+ <= + \\ + \verb+ > + \\ + \verb+ >= + \\ + \verb+ = + \\ + \verb+ <> + \\ + \verb+ in + \\ + \verb+ is + +\) +\synt{simple\ expression} +\] +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{simple\ expression} +\<[b] \synt{term} \\ +\( + \lit* + \\ + \lit* - \\ + \lit*{or} \\ + \lit*{xor} +\) +\> +\end{mysyntdiag} +\end{diagram} \ No newline at end of file diff --git a/docs/syntax/expterm.syn b/docs/syntax/expterm.syn new file mode 100644 index 0000000000..511bc1b10f --- /dev/null +++ b/docs/syntax/expterm.syn @@ -0,0 +1,15 @@ +\begin{psyntax}{Terms}{terms} +\synt{term} +\<[b] \synt{factor} \\ +\( +\verb+ * + \\ +\verb+ / + \\ +\lit*{div} \\ +\lit*{mod} \\ +\lit*{and} \\ +\lit*{shl} \\ +\lit*{shr} \\ +\lit*{as} +\) +\> +\end{psyntax} diff --git a/docs/syntax/fcall.syn b/docs/syntax/fcall.syn new file mode 100644 index 0000000000..cc6ae0d85e --- /dev/null +++ b/docs/syntax/fcall.syn @@ -0,0 +1,32 @@ +\begin{diagram}{Function calls}{functioncalls} +\begin{mysyntdiag} +\synt{function\ call} +\( +\synt{function\ identifier} \\ +\synt{method\ designator} \\ +\synt{qualified\ method\ designator}\\ +\synt{variable\ reference} +\) +\[ +\synt{actual\ parameter\ list} +\] +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{actual\ parameter\ list} +\lit* ( +\[ +\<[b] +\synt{actual\ parameter} \\ +\lit* , +\> +\] +\lit* ) +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{actual\ parameter} +\( +\synt{expression} \\ +\synt{variable\ reference} +\) +\end{mysyntdiag} +\end{diagram} \ No newline at end of file diff --git a/docs/syntax/identifier.syn b/docs/syntax/identifier.syn new file mode 100644 index 0000000000..b2c6b45fd2 --- /dev/null +++ b/docs/syntax/identifier.syn @@ -0,0 +1,10 @@ +\begin{psyntax}{Identifiers}{identifiers} +\synt{identifier} \[ \synt{letter} \\ \lit*{\_} \] +\begin{rep}[b] \\ +\( +\synt{letter} \\ +\synt{digit} \\ +\lit*{\_} +\) +\end{rep} +\end{psyntax} \ No newline at end of file diff --git a/docs/syntax/ifthen.syn b/docs/syntax/ifthen.syn new file mode 100644 index 0000000000..7dc4614cec --- /dev/null +++ b/docs/syntax/ifthen.syn @@ -0,0 +1,9 @@ +\begin{psyntax}{If then statements}{ifthenstatement} +\synt{if\ statement} +\lit*{if} +\synt{expression} +\lit*{then} \synt{statement} +\[ +\lit*{else} \synt{statement} +\] +\end{psyntax} \ No newline at end of file diff --git a/docs/syntax/label.syn b/docs/syntax/label.syn new file mode 100644 index 0000000000..e5559f6126 --- /dev/null +++ b/docs/syntax/label.syn @@ -0,0 +1,3 @@ +\begin{psyntax}{Label}{label} +\synt{label} \( \synt{digit\ sequence} \\ \synt{identifier} \) +\end{psyntax} \ No newline at end of file diff --git a/docs/syntax/numbers.syn b/docs/syntax/numbers.syn new file mode 100644 index 0000000000..69141876fc --- /dev/null +++ b/docs/syntax/numbers.syn @@ -0,0 +1,58 @@ +\begin{diagram}{Numbers}{numbers} +\begin{mysyntdiag} +\synt{hex\ digit\ sequence} +\begin{rep}[b] + \synt{hex\ digit} \\ +\end{rep} +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{bin\ digit\ sequence} +\begin{rep}[b] + \begin{stack} + \lit*{1} \\ \lit*{0} + \end{stack} + \\ +\end{rep} +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{digit\ sequence} +\begin{rep}[b] + \synt{digit} \\ +\end{rep} +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{unsigned\ integer} + \begin{stack} + \synt{digit\ sequence} \\ + \lit*{\$} \synt{hex\ digit\ sequence} \\ + \lit*{\%} \synt{bin\ digit\ sequence} + \end{stack} +\end{mysyntdiag} +\begin{mysyntdiag} +sign \begin{stack} \lit* + \\ \lit* - \end{stack} +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{unsigned\ real} \synt{digit\ sequence} +\begin{stack} + \begin{stack} \\ + \lit . \synt{digit\ sequence} + \end{stack} + \begin{stack} \\ + \synt{scale\ factor} + \end{stack} \\ + \synt{scale\ factor} +\end{stack} +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{scale\ factor} \begin{stack} \lit*{E} \\ \lit*{e} \end{stack} +\begin{stack}\\ \synt{sign} \end{stack} \synt{digit\ sequence} +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{unsigned\ number} \begin{stack} \synt{unsigned\ real} \\ +\synt{unsigned\ integer} \end{stack} +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{signed\ number} \begin{stack} \\ \synt{sign} \end{stack} +\synt{unsigned\ number} +\end{mysyntdiag} +\end{diagram} \ No newline at end of file diff --git a/docs/syntax/procedure.syn b/docs/syntax/procedure.syn new file mode 100644 index 0000000000..9faed8a09b --- /dev/null +++ b/docs/syntax/procedure.syn @@ -0,0 +1,12 @@ +\begin{psyntax}{Procedure statements}{proecedurestatements} +\synt{procedure\ statement} +\( +\synt{procedure\ identifier} \\ +\synt{method\ identifier} \\ +\synt{qualified\ method\ identifier} \\ +\synt{variable\ reference} +\) +\[ +\synt{actual\ parameter\ list} +\] +\end{psyntax} diff --git a/docs/syntax/property.syn b/docs/syntax/property.syn new file mode 100644 index 0000000000..167e88ead3 --- /dev/null +++ b/docs/syntax/property.syn @@ -0,0 +1,42 @@ +\begin{diagram}{Properties}{properties} +\begin{mysyntdiag} +\synt{property\ definition} +\lit*{property} \synt{identifier} \[ \synt{property\ interface} \] +\synt{property\ specifiers} +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{property\ interface} +\[ \synt{property\ parameter\ list}\] \lit*: \synt{type\ identifier} +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{property\ parameter\ list} \lit*[ +\<[b] \synt{parameter\ declaration} \\ \lit; \> +\lit*] +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{property\ specifiers} +\[ \synt{read\ specifier} \] +\[ \synt{write\ specifier} \] +\[ \synt{default\ specifier} \] +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{read\ specifier} \lit*{read} \synt{field\ or\ method} +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{write\ specifier} \lit*{write} \synt{field\ or\ method} +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{default\ specifier} +\( +\lit*{default} \[ \synt{constant} \] \\ +\lit*{nodefault} +\) +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{field\ or\ method} +\( +\synt{field\ identifier} \\ +\synt{method\ identifier} +\) +\end{mysyntdiag} +\end{diagram} \ No newline at end of file diff --git a/docs/syntax/repetiti.syn b/docs/syntax/repetiti.syn new file mode 100644 index 0000000000..f122daa4aa --- /dev/null +++ b/docs/syntax/repetiti.syn @@ -0,0 +1,8 @@ +\begin{psyntax}{Repetitive statements}{repetitivestatament} +\synt{repetitive\ statement} +\( +\synt{for\ statament}\\ +\synt{repeat\ statement}\\ +\synt{while\ statement} +\) +\end{psyntax} diff --git a/docs/syntax/setconst.syn b/docs/syntax/setconst.syn new file mode 100644 index 0000000000..0400c6bac7 --- /dev/null +++ b/docs/syntax/setconst.syn @@ -0,0 +1,15 @@ +\begin{diagram}{Set constructors}{setconstuctors} +\begin{mysyntdiag} +\synt{set\ constructor} \lit* [ +\[ + \<[b] \synt{set\ group} \\ \lit* , \> +\] +\lit* ] +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{set\ group} \synt{expression} +\[ +\lit* {..} \synt{expression} +\] +\end{mysyntdiag} +\end{diagram} diff --git a/docs/syntax/simstate.syn b/docs/syntax/simstate.syn new file mode 100644 index 0000000000..04f0bb9e15 --- /dev/null +++ b/docs/syntax/simstate.syn @@ -0,0 +1,8 @@ +\begin{psyntax}{Simple statements}{simplestatement} +\synt{siple\ statement} +\( +\synt{assignment\ statement} \\ +\synt{procedure\ statement} \\ +\synt{goto\ statement} +\) +\end{psyntax} diff --git a/docs/syntax/sstring.syn b/docs/syntax/sstring.syn new file mode 100644 index 0000000000..b4b5bceb49 --- /dev/null +++ b/docs/syntax/sstring.syn @@ -0,0 +1,7 @@ +\begin{psyntax}{ShortString}{sstring} +\synt{string\ type} +\lit*{string} + \[ + \lit*[ \synt{unsigned\ integer} \lit*] + \] +\end{psyntax} diff --git a/docs/syntax/statement.syn b/docs/syntax/statement.syn new file mode 100644 index 0000000000..f2e357da72 --- /dev/null +++ b/docs/syntax/statement.syn @@ -0,0 +1,10 @@ +\begin{psyntax}{Statements}{statements} +\synt{statement} +\[ +\synt{label} \lit*: +\] +\[ +\synt{simple\ statement}\\ +\synt{structured\ statement} +\] +\end{psyntax} diff --git a/docs/syntax/string.syn b/docs/syntax/string.syn new file mode 100644 index 0000000000..e2d3127b3d --- /dev/null +++ b/docs/syntax/string.syn @@ -0,0 +1,25 @@ +\begin{diagram}{Character strings}{characterstrings} +\begin{mysyntdiag} +\synt{character\ string} +\begin{rep}[b] \( \synt{quoted\ string} \\ \synt{control\ string} \) \end{rep} +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{quoted\ string} +\lit*{'} +\begin{rep}[b] \synt{string\ character} \\ \end{rep} +\lit*{'} +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{string\ character} +\( +\tok{ Any character except ' or CR} \\ +\lit*{''} +\) +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{control\ string} +\begin{rep}[b] +\lit*{\#} \synt{unsigned\ integer} \\ +\end{rep} +\end{mysyntdiag} +\end{diagram} diff --git a/docs/syntax/struct.syn b/docs/syntax/struct.syn new file mode 100644 index 0000000000..385b5726c1 --- /dev/null +++ b/docs/syntax/struct.syn @@ -0,0 +1,10 @@ +\begin{psyntax}{Structured statements}{stucturedstatements} +\synt{structured\ statement} +\( +\synt{compound\ statement}\\ +\synt{repetitive\ statement}\\ +\synt{conditional\ statement}\\ +\synt{exception\ statement}\\ +\synt{with\ statement} +\\ +\end{psyntax} \ No newline at end of file diff --git a/docs/syntax/symbol.syn b/docs/syntax/symbol.syn new file mode 100644 index 0000000000..e108f4d915 --- /dev/null +++ b/docs/syntax/symbol.syn @@ -0,0 +1,12 @@ +\begin{diagram}{Recognised symbols}{symbols} +\begin{mysyntdiag} +\synt{letter} \( \lit*{A ... Z} \\ \lit*{a ... z} \) +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{digit} \lit*{0 ... 9} +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{hex\ digit} +\( \lit*{0 ... 9} \\ \lit*{A ... F} \\ \lit*{a ...f} \) +\end{mysyntdiag} +\end{diagram} \ No newline at end of file diff --git a/docs/syntax/tcast.syn b/docs/syntax/tcast.syn new file mode 100644 index 0000000000..22addd53b2 --- /dev/null +++ b/docs/syntax/tcast.syn @@ -0,0 +1,7 @@ +\begin{psyntax}{Typecasts}{typecasts} +\synt{value\ typecast} +\synt{type\ identifier} +\lit* ( +\synt{expression} +\lit* ) +\end{psyntax} \ No newline at end of file diff --git a/docs/syntax/tconst.syn b/docs/syntax/tconst.syn new file mode 100644 index 0000000000..d185ab2fd6 --- /dev/null +++ b/docs/syntax/tconst.syn @@ -0,0 +1,18 @@ +\begin{diagram}{Typed constant declaration}{typedconstantdeclaration} +\begin{mysyntdiag} +\synt{typed\ constant\ declaration} +\begin{rep}[b] + \synt{identifier} \lit*: \synt{type} \lit*= \synt{typed\ constant} \lit*; \\ +\end{rep} +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{typed\ constant} +\( +\synt{constant} \\ +\synt{address\ constant} \\ +\synt{array\ constant} \\ +\synt{record\ constant} \\ +\synt{procedural\ constant} +\) +\end{mysyntdiag} +\end{diagram} \ No newline at end of file diff --git a/docs/syntax/type.syn b/docs/syntax/type.syn new file mode 100644 index 0000000000..f481aa76b0 --- /dev/null +++ b/docs/syntax/type.syn @@ -0,0 +1,11 @@ +\begin{psyntax}{Types}{type} +\synt{type} +\( +\synt{simple\ type} \\ +\synt{string\ type} \\ +\synt{structured\ type} \\ +\synt{pointer\ type} \\ +\synt{procedural\ type}\\ +\synt{type\ identifier} +\) +\end{psyntax} diff --git a/docs/syntax/typearr.syn b/docs/syntax/typearr.syn new file mode 100644 index 0000000000..90714c30c5 --- /dev/null +++ b/docs/syntax/typearr.syn @@ -0,0 +1,6 @@ +\begin{psyntax}{Array types}{arraytypes} +\synt{array\ type} +\[ \lit*{packed} \] \lit*{array}\lit*[ +\<[b] \synt{ordinal\ type} \\ \lit*, \> +\lit*] \lit*{of} \synt{type} +\end{psyntax} \ No newline at end of file diff --git a/docs/syntax/typeclas.syn b/docs/syntax/typeclas.syn new file mode 100644 index 0000000000..dce6dcca89 --- /dev/null +++ b/docs/syntax/typeclas.syn @@ -0,0 +1,62 @@ +\begin{diagram}{Class type}{classtype} +\begin{mysyntdiag} +\[ \lit*{packed} \] +\lit*{class} +\[ heritage \] +\[ +\begin{rep}[b] + \synt{component\ list} \\ + \synt{class\ visibility\ specifier} +\end{rep} \lit*{end} +\] +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{heritage} \lit*( \synt{class\ type\ identifier} \lit* ) +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{component\ list} +\[ \<[b] \synt{field\ definition} \\ \> \] +\[ + \<[b] + \( + \synt{method\ definition} \\ + \synt{property\ definition} + \) \\ + \> +\] +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{field\ definition} \synt{identifier\ list} \lit*: \synt{type} \lit*; +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{method\ definition} +\( +\[ +\lit*{class} +\] +\( +\synt{function\ header} \\ +\synt{procedure\ header} +\) \\ +\synt{constructor\ header} \\ +\synt{desctuctor\ header} +\) +\lit*; +\[ +\lit*{virtual} \lit*; +\] +\[ \synt{call\ modifiers} \lit*; \] +\[ +\lit*{abstract} \lit*; +\] +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{class\ visibility\ specifier} +\( +\lit*{private}\\ +\lit*{protected}\\ +\lit*{public}\\ +\lit*{published} +\) +\end{mysyntdiag} +\end{diagram} diff --git a/docs/syntax/typedecl.syn b/docs/syntax/typedecl.syn new file mode 100644 index 0000000000..a7446a6a93 --- /dev/null +++ b/docs/syntax/typedecl.syn @@ -0,0 +1,3 @@ +\begin{psyntax}{Type declaration}{typedecl} +\synt{type\ declaration} \synt{identifier} \lit*= \synt{type} \lit* ; +\end{psyntax} \ No newline at end of file diff --git a/docs/syntax/typeenum.syn b/docs/syntax/typeenum.syn new file mode 100644 index 0000000000..8c53bb5d08 --- /dev/null +++ b/docs/syntax/typeenum.syn @@ -0,0 +1,26 @@ +\begin{diagram}{Enumerated type}{enumeratedtype} +\begin{mysyntdiag} +\synt{enumerated\ type} \lit* ( +\begin{rep}[b] +\( +\synt{identifier\ list} \\ +\synt{assigned\ enum\ list} +\) \\ +\lit*, +\end{rep} \lit ) +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{identifier\ list} +\begin{rep}[b] +\synt{identifier} \\ +\lit*, +\end{rep} +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{assigned\ enum\ list} +\begin{rep}[b] +\synt{identifier} \lit*{:=} \synt{expression} \\ +\lit*, +\end{rep} +\end{mysyntdiag} +\end{diagram} \ No newline at end of file diff --git a/docs/syntax/typefil.syn b/docs/syntax/typefil.syn new file mode 100644 index 0000000000..0215ec707b --- /dev/null +++ b/docs/syntax/typefil.syn @@ -0,0 +1,3 @@ +\begin{psyntax}{File types}{filetypes} +\synt{file\ type} \lit*{file} \[ \lit*{of} \synt{type} \] +\end{psyntax} \ No newline at end of file diff --git a/docs/syntax/typeobj.syn b/docs/syntax/typeobj.syn new file mode 100644 index 0000000000..281943eb02 --- /dev/null +++ b/docs/syntax/typeobj.syn @@ -0,0 +1,51 @@ +\begin{diagram}{object type}{objecttype} +\begin{mysyntdiag} +\[ \lit*{packed} \] +\lit*{object} +\[ heritage \] +\[ +\begin{rep}[b] + \synt{component\ list} \\ + \synt{object\ visibility\ specifier} +\end{rep} \lit*{end} +\] +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{heritage} \lit*( \synt{object\ type\ identifier} \lit* ) +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{component\ list} +\[ \<[b] \synt{field\ definition} \\ \> \] +\[ \<[b] \synt{method\ definition} \\ \> \] +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{field\ definition} \synt{identifier\ list} \lit*: \synt{type} \lit*; +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{method\ definition} +\( +\synt{function\ header} \\ +\synt{procedure\ header} \\ +\synt{constructor\ header} \\ +\synt{desctuctor\ header} +\) +\lit*; \synt{method\ directives} +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{method\ directives} +\[ +\lit*{virtual} \lit*; +\] +\[ \synt{call\ modifiers} \lit*; \] +\[ +\lit*{abstract} \lit*; +\] +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{object\ visibility\ specifier} +\( +\lit*{private} \\ +\lit*{public} +\) +\end{mysyntdiag} +\end{diagram} diff --git a/docs/syntax/typeord.syn b/docs/syntax/typeord.syn new file mode 100644 index 0000000000..9696bd8c1b --- /dev/null +++ b/docs/syntax/typeord.syn @@ -0,0 +1,8 @@ +\begin{psyntax}{Ordinal types}{ordinaltypes} +\synt{ordinal\ type} +\( +\synt{subrange\ type} \\ +\synt{enumerated\ type} \\ +\synt{ordinal\ type\ identifier}\\ +\) +\end{psyntax} diff --git a/docs/syntax/typepoin.syn b/docs/syntax/typepoin.syn new file mode 100644 index 0000000000..bf743236fb --- /dev/null +++ b/docs/syntax/typepoin.syn @@ -0,0 +1,3 @@ +\begin{psyntax}{Pointer types}{pointertypes} +\synt{pointer\ type} \lit*\^{} \synt{type\ identifier} +\end{psyntax} \ No newline at end of file diff --git a/docs/syntax/typeproc.syn b/docs/syntax/typeproc.syn new file mode 100644 index 0000000000..569eac2f9c --- /dev/null +++ b/docs/syntax/typeproc.syn @@ -0,0 +1,27 @@ +\begin{diagram}{Procedural Types}{Procedural types} +\begin{mysyntdiag} +\synt{procedural\ type} +\( \synt{function\ header} \\ + \synt{procedure\ header} +\) +\[ \lit*{of} \lit*{object} \] +\[ \synt{call\ modifiers} \] +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{function\ header} \lit*{function} \synt{formal\ parameter\ list} +\lit*: \synt{result\ type} +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{procedure\ header} \lit*{procedure} \synt{formal\ parameter\ list} +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{call\ modifiers} +\( +\lit*{register} \\ +\lit*{cdecl} \\ +\lit*{pascal} \\ +\lit*{stdcall} \\ +\lit*{popstack} +\) +\end{mysyntdiag} +\end{diagram} \ No newline at end of file diff --git a/docs/syntax/typerec.syn b/docs/syntax/typerec.syn new file mode 100644 index 0000000000..e46307650f --- /dev/null +++ b/docs/syntax/typerec.syn @@ -0,0 +1,28 @@ +\begin{diagram}{Record types}{recordtypes} +\begin{mysyntdiag} +\synt{record\ type} \[ \lit*{packed} \] \lit*{record} +\[ \synt{field\ list} \] \lit*{end} +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{field\ list} +\( +\synt{fixed\ fields} \\ +\[ \synt{fixed\ fields} \lit*; \] \synt{variant\ part} +\) +\[ \lit*; \] +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{fixed\ fields} +\<[b] \synt{identifier\ list} \lit*: \synt{type} \\ \lit*; \> +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{variant\ part} +\[ \synt{identifier} \lit*: \] +\synt{ordinal\ type\ identifier} +\lit*{of} \<[b] \synt{variant} \\ \lit*; \> +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{variant} \<[b] \synt{constant} \lit*, \> +\lit*: \lit*( \[ \synt{field\ list} \] \lit*) +\end{mysyntdiag} +\end{diagram} diff --git a/docs/syntax/typeset.syn b/docs/syntax/typeset.syn new file mode 100644 index 0000000000..33219f8d8d --- /dev/null +++ b/docs/syntax/typeset.syn @@ -0,0 +1,3 @@ +\begin{psyntax}{Set Types}{typeset} +\synt{set\ type} \lit*{set} \lit*{of} \synt{ordinal\ type} +\end{psyntax} diff --git a/docs/syntax/typesim.syn b/docs/syntax/typesim.syn new file mode 100644 index 0000000000..3104c53f70 --- /dev/null +++ b/docs/syntax/typesim.syn @@ -0,0 +1,12 @@ +\begin{diagram}{Simple types}{simpletypes} +\begin{mysyntdiag} +\synt{simple\ type} +\( +\synt{ordinal\ type} \\ +\synt{real\ type} +\) +\end{mysyntdiag} +\begin{mysyntdiag} +\synt{real\ type} \synt{real\ type\ identifier} +\end{mysyntdiag} +\end{diagram} diff --git a/docs/syntax/typestru.syn b/docs/syntax/typestru.syn new file mode 100644 index 0000000000..bdf2c78ad7 --- /dev/null +++ b/docs/syntax/typestru.syn @@ -0,0 +1,11 @@ +\begin{psyntax}{Structured Types}{typestructured} +\synt{structured\ type} +\( +\synt{array\ type} \\ +\synt{record\ type} \\ +\synt{class\ type} \\ +\synt{class\ reference\ type}\\ +\synt{set\ type}\\ +\synt{file\ type} +\) +\end{psyntax} diff --git a/docs/syntax/typesubr.syn b/docs/syntax/typesubr.syn new file mode 100644 index 0000000000..a50a93ce4c --- /dev/null +++ b/docs/syntax/typesubr.syn @@ -0,0 +1,3 @@ +\begin{psyntax}{Subrange types}{subranges} +\synt{subrange\ type} \synt{constant} \lit*{..} \synt{constant} +\end{psyntax}