mirror of
https://github.com/ProgramSnail/Lama.git
synced 2025-12-05 22:38:44 +00:00
Update README.md for 1.3 version
This commit is contained in:
parent
b444aa53e8
commit
acc697206e
10 changed files with 49 additions and 46 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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}{}}
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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|",
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue