From b5c543f7639a8a545ae7c627e594ce4fcdbd6435 Mon Sep 17 00:00:00 2001 From: Jed Barber Date: Thu, 2 Nov 2017 08:40:53 +1100 Subject: Further functional spec work --- doc/functional_spec.html | 103 ++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 84 insertions(+), 19 deletions(-) diff --git a/doc/functional_spec.html b/doc/functional_spec.html index 855aeee..3d84da4 100644 --- a/doc/functional_spec.html +++ b/doc/functional_spec.html @@ -12,7 +12,8 @@

Overview

Mini Ada is a minimalistic, standalone, portable, libre and open source REPL, -interpreter, JIT, and compiler for the Ada programming language.

+interpreter, JIT, and compiler for the Ada programming language. In that order +of importance.

This spec is not complete. Nor does it discuss algorithms and data structures used. For those, see the technical spec.

@@ -29,8 +30,9 @@ written so far. Then he uses the Mini Ada Compiler to compile his assignments.James is an Ada developer who wants to write some software for an architecture that doesn't have an Ada compiler targeting it yet. He downloads and uses the Mini Ada -Interpreter as a stopgap measure, making use of it being written in Forth, which -is an extremely simple language that has been ported everywhere.

+Interpreter as a stopgap measure, making use of it being written in a language that +has already been ported to every architecture under the sun. He does not have to wait +for a compiler backend to be written.

David is a sysadmin. He wants a scripting language that minimises errors. He uses the Mini Ada JIT to take advantage of just-in-time compilation speedups and the @@ -55,7 +57,7 @@ it as easy to deploy as any shell interpreter.

What linking is required for FFI and interfacing with already-compiled units?

@@ -65,7 +67,7 @@ it as easy to deploy as any shell interpreter.

Common Elements

-

Command line options recognised by all four utilities:

+

Command line options recognised by all four programs:

@@ -91,14 +93,6 @@ it as easy to deploy as any shell interpreter.

- - - - - - - - @@ -115,6 +109,24 @@ it as easy to deploy as any shell interpreter.

+ + + + + + + + + + + + + + + + @@ -150,6 +162,14 @@ marepl + + + + + + + + @@ -162,7 +182,7 @@ marepl

The version message is:

-Mini Ada REPL [version number]
+Mini Ada REPL [version in use]
 

The help message is:

@@ -175,10 +195,12 @@ arguments are passed to the interpreted file as command line arguments. Options: --version displays the REPL version number -h --help displays this help message --x ignores the first line of file input -Idir specifies source files search path -Ldir specifies library files search path +-Aarg --annex=arg specify which language annexes will be allowed +-warg --warning=arg how to treat warnings - -- terminates option list +-x ignores the first line of file input -i --interactive forces interactive mode after interpreting a file @@ -188,7 +210,7 @@ is supplied to interpret, input is obtained from standard input.

If no file to interpret is supplied, the following message is displayed:

-Mini Ada REPL [version number]
+Mini Ada REPL [version in use]
 Ada [standard in use] mode, [annexes available]
 
@@ -214,11 +236,13 @@ input is then interpreted and evaluated.

ok -

Otherwise, an appropriate error message is displayed.

+

Otherwise, an appropriate error message is displayed. See section on error and warning messages for +information on specific error messages. For the purposes of the error, only the lines of the last complete +input are numbered, starting from one.

If an input file has been supplied to interpret, processing of the file proceeds as above, except without -any messages or prompts aside from those produced by the interpretation and evaluation of the contents of the -file.

+any messages or prompts aside from error messages and those produced by the interpretation and evaluation of +the contents of the file.

Interpretation is ended and control returned to the operating system when the REPL encounters the EOF character.

@@ -243,6 +267,14 @@ mai + + + + + + + +
Short N/A Displays the relevant help message then terminates. Any additional options will be ignored.
-xnoneN/AN/AIgnores the first line of file input. Doesn't take effect if input is from standard input.
-I any valid path Specify library files search path.
-A--annexrequiredstringAny combination of the characters "abcdefghj".Sets the language annexes that will be available during program execution. The default value is "abcdefghj" + which allows all supported annexes to be used. Informative annexes are not affected by this option.
-w--warningrequiredcharacter/stringOne of the characters "ens" or one of the strings "error", "normal", "suppress".Sets the way warnings are to be treated by the program. Either as an error, as normal, or completely + suppressed.
- --Values Description
-xnoneN/AN/AIgnores the first line of file input. Doesn't take effect if input is from standard input.
-i --interactive Values Description
-xnoneN/AN/AIgnores the first line of file input. Doesn't take effect if input is from standard input.

The first non-option command line item specifies a file to interpret and terminates the option list. @@ -255,6 +287,20 @@ Mini Ada Interpreter [version number]

The help message is:

+Usage: mai [options] [arguments]
+
+The first argument specifies a file to interpret and terminates the option list. All additional
+arguments are passed to the interpreted file as command line arguments.
+
+Options:
+         --version        displays the REPL version number
+-h       --help           displays this help message
+-Idir                     specifies source files search path
+-Ldir                     specifies library files search path
+-Aarg    --annex=arg      specify which language annexes will be allowed
+-warg    --warning=arg    how warnings are to be treated
+-        --               terminates option list
+-x                        ignores the first line of file input
 

This program expects as file input a valid compilation_unit (RM 10.1.1). The input is interpreted and @@ -284,5 +330,24 @@ Interpreter, with the word "JIT" substituted for "Interpreter".

mac + + + +

Error and Warning Messages

+ +

Should any of these programs encounter an error, an error message will be displayed to the standard +error stream. This error message will consist of the following format:

+
+Error at line [number], character [number]
+
+ +

Should any of these programs encounter a warning, a warning message will be displayed to the standard +error stream. This warning message will consiste of the following format:

+
+Warning at line [number], character [number]
+
+ +

What sorts of error/warning messages are required by the Ada specification?

+ -- cgit