Update README.md for 1.3 version

This commit is contained in:
Roman Venediktov 2024-07-09 14:53:56 +02:00
parent b444aa53e8
commit acc697206e
10 changed files with 49 additions and 46 deletions

View file

@ -29,9 +29,9 @@ of runtime behaviors, including those which a typical type system is called to p
the language can be used in future as a raw substrate to apply various ways of software verification (including
type systems) on.
The current implementation contains a native code compiler for \textsc{x86-32}, written
The current implementation contains a native code compiler for \textsc{x86-64}, written
in \textsc{OCaml}, a runtime library with garbage-collection support, written in \textsc{C}, and a small
standard library, written in \lama itself. The native code compiler uses \textsc{gcc} as a toolchain.
standard library, written in \lama itself.
In addition, a source-level reference interpreter is implemented as well as a compiler to a small
stack machine. The stack machine code can in turn be either interpreted on a stack machine interpreter, or

View file

@ -2,7 +2,7 @@
\label{sec:wellformedness}
{
\newcommand{\Ref}{\primi{Ref}{}}
\renewcommand{\Ref}{\primi{Ref}{}}
\newcommand{\Val}{\primi{Val}{}}
\newcommand{\Void}{\primi{Void}{}}
\newcommand{\Weak}{\primi{Weak}{}}

View file

@ -6,7 +6,7 @@
\label{sec:lexical_structure}
The character set for the language is \textsc{ASCII}, case-sensitive. In the following lexical description we will use
the GNU Regexp syntax~\cite{GNULib} in lexical definitions.
the POSIX-Extended Regular Expressions in lexical definitions.
\subsection{Whitespaces and Comments}
@ -83,7 +83,7 @@ The following identifiers are reserved for keywords:
after array at before box case do elif else
esac eta false fi for fun if import infix
infixl infixr lazy od of public sexp skip str
syntax then true val var while
syntax then true val var while let in
\end{lstlisting}
\subsection{Infix Operators}

View file

@ -40,7 +40,7 @@ property ``$e$ is a reference''. The result of assignment operator coincides wit
assigns 3 to both "\lstinline|x|" and "\lstinline|y|".
\begin{figure}[h]
\newcommand{\Ref}[1]{\mathcal{R}\,({#1})}
\renewcommand{\Ref}[1]{\mathcal{R}\,({#1})}
\renewcommand{\arraystretch}{4}
\[
\begin{array}{cc}
@ -108,7 +108,8 @@ designates an anonymous functional value in the form of a closure.
& & \nonterm{whileDoExpression}&\alt\\
& & \nonterm{doWhileExpression}&\alt\\
& & \nonterm{forExpression}&\alt\\
& & \nonterm{caseExpression}&
& & \nonterm{caseExpression}&\alt\\
& & \nonterm{letExpression}&
\end{array}
\]
\caption{Expression concrete syntax}
@ -134,7 +135,15 @@ Expression \lstinline|skip| can be used to designate a no-value when no action i
\label{composite_expressions}
\end{figure}
There are three forms of expressions to specify composite values: arrays, lists and S-expressions (see Fig.~\ref{composite_expressions}).
There are three forms of expressions to specify composite values: arrays, lists and S-expressions (see Fig.~\ref{composite_expressions}).
\FloatBarrier
\subsection{Let Expressions}
TODO
\FloatBarrier
\subsection{Conditional Expressions}

View file

@ -4,11 +4,10 @@
\chapter{Implementation-dependent Limitations}
\label{sec:limitations}
The following limitations are in effect for \textsc{x86-32} platform implementation:
The following limitations are in effect for \textsc{x86-64} platform implementation:
\begin{itemize}
\item the range of representable integers is [-1073741824..1073741823] (31-bit signed in two-complement representation);
\item the maximal length of array/string/number of S-expression parameters is 536870911 (29-bit unsigned integer);
\item the minimal address space size is 2GB (garbage collector requirement);
\item the maximal number of S-expression constructor name symbols taken into account is 5.
\item the range of representable integers is \newline [-4611686018427387905..4611686018427387904] (63-bit signed in two-complement representation);
\item the maximal length of array/string/number of S-expression parameters is 2305843009213693952 (61-bit unsigned integer);
\item the maximal number of S-expression constructor name symbols taken into account is 9.
\end{itemize}

View file

@ -4,7 +4,8 @@
\chapter{Debugging Support}
\label{sec:debugging}
Current implementation supports a minimalistic debugging with \textsc{GDB}~\cite{gdb}. In order to include the debug information into object files/executable these files
Current implementation supports a minimalistic debugging with \textsc{GDB}~\cite{gdb} for the Linux target only.
In order to include the debug information into object files/executable these files
have to be compiled with the command-line option "\texttt{-g}" (see Section~\ref{sec:driver}).
The following debugging features are supported:
@ -36,4 +37,5 @@ The following customized commands are available:
\item "\texttt{pc }$i$", where "$i$" is an integer number. The commands prints a value of $i$-component of current closure.
\end{itemize}
For the MacOS target the debugging is supported with \textsc{LLDB}.
But debugging features are not available.

View file

@ -95,7 +95,7 @@ is automatically created and closed within the call.}
\descr{\lstinline|fun fprintf (file, fmt, ...)|}{Same as "\lstinline|printf|", but outputs to a given file. The file argument should be that acquired
by \lstinline|fopen| function.}
\descr{\lstinline|fun regexp (str)|}{Compiles a string representation of a regular expression (as per GNULib's regexp~\cite{GNULib}) into
\descr{\lstinline|fun regexp (str)|}{Compiles a string representation of a regular expression (as per POSIX-Extended Regular Expressions syntax) into
an internal representation. The return value is a external pointer to the internal representation.}
\descr{\lstinline|fun regexpMatch (pattern, subj, pos)|}{Matches a string "\lstinline{subj}", starting from the position "\lstinline|pos|",

View file

@ -93,7 +93,7 @@
\newcommand{\descr}[2]{\smallskip{#1}\begin{itemize}[noitemsep,topsep=0pt]\item[]{#2}\end{itemize}}
\lstdefinelanguage{abslama}{
keywords={skip,if,then,else,elif,fi,while,do,od,for,fun,public,import,
keywords={skip,if,then,else,elif,fi,while,do,od,for,fun,public,import,let,in,
box,val,var,case,of,esac,when,box,str,sexp,array,infix,infixl,infixr,at,before,after,true,false,eta,lazy,syntax,ref,ignore,elemRef},
sensitive=true,
basicstyle=\small,
@ -109,8 +109,8 @@ morecomment=[l][\ttfamily]{--}
}
\lstdefinelanguage{lama}{
keywords={skip,if,then,else,elif,fi,while,do,od,for,fun,public,import,
box,val, var,case,of,esac,when,box,str,sexp,array,infix,infixl,infixr,at,before,after,true,false,eta,lazy,syntax},
keywords={skip,if,then,else,elif,fi,while,do,od,for,fun,public,import,let,in,
box,val,var,case,of,esac,when,box,str,sexp,array,infix,infixl,infixr,at,before,after,true,false,eta,lazy,syntax},
sensitive=true,
basicstyle=\small,
%commentstyle=\scriptsize\rmfamily,
@ -168,7 +168,7 @@ language=lama
{\huge\bfseries \lama Language Specification}\\[0.4cm] % Title of your document
{\textsc{Version 1.10}}
{\textsc{Version 1.30}}
\HRule\\[1.5cm]