[Home]  [Edit this page]  [Recent Changes]  [Special Pages]  [Help
PrologErrorList1

(Prolog) Error list #1

All errors from 0 to 1000. See error list #2 for errors from 1000 and higher.

From http://tersi.web.elte.hu/PROLOG/PROLOG.ERR.

3   Illegal keyword.
Recognized keywords are:
  DATABASE, PREDICATES, DOMAINS, CLAUSES, GOAL, GLOBAL,
  INCLUDE, CONSTANTS
and the options are:
  check_determ, nobreak, nowarnings, diagnostics
  trace, shorttrace, code, trail, errorlevel, project
4   Use the format CODE=dddd, TRAIL=dddd, HEAP=dddd or ERRORLEVEL=d.
Ex
  code=4000  trail=1000  heap=6000  errorlevel=1
5   The trail size cannot exceed 4000 paragraphs (corresponding to 64K).
6   The code size cannot exceed 16000 paragraphs (corresponding to 256K).
7   The errorlevel must be either 0, 1 or 2.
10  Illegal character.
Legal characters are upper and lower case letters, digits and the
characters :-+!"'/*()[]|><=.,;
11  Character constants must be terminated with an apostrophe (')
Eg 'a' and '\254'
12  The comment is not terminated by */
An end of source has been encountered within a comment. 
This may be caused by nested comments.
14  The name is too long. (max. 250 characters)
15  The string is too long. (max. 250 characters)
16  The string must be terminated with a double quote (") in the same line.
If you need newline characters in a string, use \n as in "First\n Next".
If you need a string with more than 250 characters, use 'concat' to
assemble it from shorter strings.
17  Real constant is out of range.
The valid range is: +-17976931348E+-308
18  A hexadecimal digit is expected after a dollar sign.
Eg X=$B800
20  Constant identifier expected.
An 'ifdef' or an 'ifndef' should be followed by the controlling constant
identifier.
21  'enddef' expected; unterminated 'ifdef' or 'ifndef' block.
22  End of text in an unterminated ifdef-block.
23  Too many nested conditional blocks (max. 25).
100 Undeclared domain or misspelling.
102 Standard domains cannot be declared.
The standard domains are always considered to be declared, and cannot be
redeclared even if they aren't used in the program.
103 This domain was declared previously.
104 Syntax error:  =  or  ,  expected.
105 Name expected (either a domain or a functor).
106 Alternatives in a list declaration are illegal.
The only format for a list declaration is
  dom1, dom2, dom3 = otherdom*
However, there's nothing preventing 'otherdom' from being a compound
domain including different types, surrounded by functors of your
choice, as in eg.
  otherdom = i(integer); s(string); r(real)
107 This functor has already been used in the domain declaration.
A functor can only appear once in every domain declaration.
108 Functor name expected.
After the ';' a new functor name is expected.
109 Domain name expected.
110 Syntax error in domain declaration.  )  or  ,  expected.
111 WARNING: Domain used as a functor. (F10=Ok, Esc=Abort).
This name is also the name of a domain. If this isn't a mistake, you
can avoid the warning by succeeding the functor with two brackets as
in 'integer()'.
112 WARNING: Domain declaration with a single functor. (F10=Ok, Esc=Abort).
This declaration is understood as a domain with just a single functor,
which is rarely used.
113 This constant is already defined.
201 This name is reserved for a standard predicate.
It is not possible to redefine standard predicates.
202 This predicate is already declared.
Alternative declarations for the same predicate should be grouped.
204 Domain name  or  ')'  expected.
205 Undeclared domain or misspelling.
206 Too many arguments used in this predicate.
The maximum is 50.
208 Syntax error in predicate declaration,  ')'  or  ',' expected.
209 Illegal number of arguments.
There is no declaration for the predicate with this number of arguments.
210 Only one database predicate declaration is allowed.
Database predicates can only have one type declaration.  If you
want to assert different types, you should use different predicates or
declare a suitable compound domain.
211 This predicate is declared as a database predicate.
Predicates declared in the DATABASE section must consist entirelyÿof
facts, without using variables.
220 Syntax error in declaration of global predicate, '-' expected.
All global predicates must be followed by one or more flow pattern
specifications, as in
GLOBAL PREDICATES
  determ status_RS232(integer,integer) - (i,o),(o,i) language c
221 Syntax error, '(' expected.
The flow pattern declaration should follow the syntax indicated in the
example below:
GLOBAL PREDICATES
  determ status_RS232(integer,integer) - (i,o),(o,i) language c
222 Syntax error in flow pattern, 'i' or 'o' expected.
The flow pattern for each argument should be indicated by an 'i' for
input flow or an 'o' for output flow, as illustrated below:
GLOBAL PREDICATES
  determ status_RS232(integer,integer) - (i,o),(o,i) language c
223 Wrong number of arguments in flow pattern.
All the alternative flow patterns must have the same number of
arguments as the type declaration for the predicate.
224 Syntax error in declaration of global predicate, 'as "NewName"' expected.
The syntax for explicitly naming an external routine is suggested below:
   determ routine(integer) - (i) language c as "MyRoutine"
Don't forget the double quotes around the name.
226 Syntax error, 'PREDICATES', 'DOMAINS' or 'DATABASE' expected.
The keyword 'GLOBAL' must be followed by the name of the section you
want to declare as global.
227 Name of project or configuration file expected.
The directives 'project' and 'config' must be followed by a file name, eg.
  project "parser"
  config "myconfig.sys"
A configuration file is created by the 'Save configuration' under
the 'Setup'-option.
228 At most one internal goal may be specified.
A 'GOAL' section has already been encountered. If there isn't one in
this file, it may have come from an included file.
229 The include file does not exist in the specified directory.
If the file really does exist you probably fell foul to a very common
omission, namely to use double backslashes to override the escape-function
of backslashes in strings:
include "\\tools\\tpreds.pro"
230 Include files may not be used recursively.
This include file is already included.
231 Too many include files. The maximum is 24.
232 The include file is too big. Max. size is 64K.
233 Global declarations cannot succeed local declarations.
All global declarations must be done before any local declarations.
A predicate, clause or domain section which is not preceded by the
keyword 'GLOBAL' is considered a local declaration, and cannot be
succeeded by any global declarations.
This strategy has been changed since version 1.x of the system.
234 No modules in the project contains a GOAL.
235 The FILE domain cannot be a local domain in a project.
Simply declare the domain in a global section.
236 The unnamed database must be global in a project.
Simply declare the database as 'GLOBAL'.
237 Name of include-file expected.
401 No clauses for this predicate.
The predicate has been declared, but there are no corresponding clauses.
If this file is part of a project, note that it is posible to test
project modules interactively, but you must not refer to any of the
global predicates whose clauses are defined in other modules.
402 Syntax error, ',' or '.' expected in clause body.
403 Predicate name or section keyword expected.
404 Undeclared predicate or misspelling.
405 '('  expected.
406 ')' or ',' expected.
407 Illegal number of arguments: refer to declaration.
408 Number expected after '+' or '-'.
409 Syntax error.
410 Variable expected.
411 ',' expected.
413 Syntax error, ',' '|' or ']' expected.
414 Constant or variable expected.
415 Clauses for the same predicate should be grouped.
Clauses for this predicate have already appeared elsewhere.
416 Comparison operator expected i.e. one of  =   <   <=   >=   ><   <>.
417 Text after '.' is illegal here.
418 Unexpected end of text.
419 Syntax error in clause body, predicate call expected.
420 WARNING: The variable is only used once. ( F10=Ok, Esc=abort ).
You can turn this warning off by using the 'nowarning' option.
422 '.' ':-' or expected.
423 ',' or ')' expected.
425 Lists should be terminated by ']'.
426 Initializing the global database is not allowed in a sub module.
It is only allowed to define facts for a database that is declared in
the same module. This means that all global database facts must be 
initialized in the main module.
The distinction between a main module and a sub module is only that the
main module contains a goal.  If this error occurred in the main module,
it is therefore caused by an attempt to initialize the database before
the goal has been defined, in which case the compiler is still unaware
that it is the main module.  To rectify, simply move the goal to a
position before the initialization of the database.
427 To generate an object module the program must contain a goal.
If you want to compile a single module to an OBJ file, the module
must either contain a goal or be part of a project.
428 The free variable in 'findall' can only be used inside 'findall'.
429 The free variable in 'findall' does not occur in the predicate.
An example of use of 'findall' is:
  findall(NAME,person(NAME,_,_),L),
430 Language name expected.
After the 'language' directive, the name of the language must be
specified, as indicated below:
GLOBAL PREDICATES
  determ status_RS232(integer,integer) - (i,o),(o,i) language c
431 Unknown language. Must be one of: pascal, fortran, c, asm.
432 Database name expected.
To give a database a name the 'DATABASE' keyword should be followed
by a hyphen and the name, as indicated below:
DATABASE - lineinp
  insmode
  lineinpstate(string,col)
  lineinpflag
433 The domain is already defined.
A database declaration automatically generates a corresponding domain
declaration ('dbasedom' for the global database), where the name of the
domain is the name of the database.
It is not allowed to declare a database with the same name as a
previously declared domain.
434 The database is already declared.
The main (global) database is already declared. In order to declare a
new (local) database, you must give it a name, eg:
DATABASE - lineinp
  insmode
  lineinpstate(string,col)
  lineinpflag
435 This must be the first occurence of the Errorcode variable.
The Errorcode variable is neither allowed to be bound before the 'trap'
predicate nor can it be an output argument of the controlled predicate.
The first occurence of the variable must be as the return variable
for the error-code, inside the 'trap' predicate.
450 Syntax error, keyword expected.
500 Type error.
501 Free variable in expression.
This is the first occurrence of the variable.
504 This is the first occurrence of this variable.
'bound' cannot return a bound variable. Use instead the equal sign
to bind the variable to a constant.
505 Type error: Illegal variable type for this position.
The type associated with the variable does not match with any of
the type declarations for the predicate.
506 Type error: The functor does not belong to the domain.
507 Type error: The compound object has the wrong number of arguments.
508 Expressions may not contain objects of this type.
509 Comparisons may only be made between the basic types.
510 Objects from these domains cannot be compared.
511 There is no corresponding list domain.
To use 'findall', a suitable list domain must be declared in
the domain section.
512 Type error: Wrong object type.
513 Type error: This argument can't be a real.
In DIV and MOD, both the arguments must be integer values.
590 WARNING: nondeterministic clause. ( F10=Ok, Esc=abort ).
There is one or more clauses with the same entry conditions (matching
argument lists or no arguments at all) as this clause, and possible
backtracking will lead to new solutions as the clause doesn't
contain a cut.
Use 'nondeterm' before the predicate declaration if it's supposed to be
nondeterministic.
591 WARNING: nondeterministic predicate. ( F10=Ok, Esc=abort ).
The predicate indicated is nondeterministic, ie it may succeed again
if backtracking occurs.  This will be reflected in the calling
predicate, which also becomes nondeterministic.
Note that database predicates are, by their nature, nondeterministic;
this will therefore also apply to all uses of 'retract'.
Use nondeterm before the predicate declaration if it is OK.
592 ERROR nondeterministic clause in deterministic global predicate.
There is one or more clauses with the same entry conditions (matching
argument lists or no arguments at all) as this clause, and possible
backtracking will lead to new solutions as the clause doesn't
contain a cut.
Use 'nondeterm' before the predicate declaration if it's supposed to be
nondeterministic.
593 ERROR nondeterministic predicate call in deterministic global predicate.
The predicate indicated is nondeterministic, ie it may succeed again
if backtracking occurs.  This will be reflected in the calling
predicate, which also becomes nondeterministic.
Note that database predicates are, by their nature, nondeterministic;
this will therefore also apply to all uses of 'retract'.
Use nondeterm before the predicate declaration if it's supposed to be
nondeterministic.
600 Too many domain names, maximum is 250.
Split the program into separate modules with local domain declarations.
601 Too many alternatives in the domain declaration, maximum is 250.
602 Too many predicate names, maximum in one module is 320.
This includes both predicate and database declarations, and the
different flow pattern variants for each predicate.
Split the module into two or more sub-modules.
603 Too many variables in this clause, maximum is 100.
Split the clause into two or more separate clauses.
604 Too many predicate calls in this clause, maximum is 100.
Split the clause into two or more separate clauses.
605 Too many clauses, maximum is 400 for each predicate.
Split the predicate into two or more predicates.
606 Too many arguments, maximum is 50.
Combine some of the arguments with functors from a suitable domain.
607 Too many domain names on the left hand side of a domain declaration.
Maximum is 20.
608 Too many database predicates.
Maximum is 250 in each database declaration.
If you  need more than this, declare some of the predicates in one or
more local databases.
610 Code array too small.
Use code=size to get more space.
612 Overflow: too many structures in clause.
Split the clause into two or more clauses.
614 Overflow in generation of OBJ module.
Split the module into two or more separately compiled modules.
620 Error reading symbol table.
Something is wrong with the file <projectname>.SYM
Recompile the module(s) or project.
701 Loop in the flow analysis. Don't use a compound flow pattern here.
The problem is that the compiler has gone into a loop where it
continues to generate new flow variants with more and more complex
flow patterns.
If it is not an error in the program, replace the argument with a
variable and do the unification before or after the predicate call,
whatever is the appropriate.
703 This flow pattern doesn't exist. (Look in the message window)
You  have tried to call a standard or a global predicate with a flow
pattern which isn't recognised, either because it doesn't exist, in the
case of a standard predicate, or, in the case of a global predicate,
because it isn't declared.
The error may be caused from a higher level, where a variable which
was meant as an input argument is used as an output argument, perhaps
with an underscore.  In this case you must try to follow the calls
backward.
704 Free variable are not allowed in 'not' or 'retractall'.
It is not possible to get a variable bound in a 'not' or a 'retractall'
call, so you must use underscores for all unknown arguments.
705 Free variables are not allowed here.
'assert', 'writef' and 'format' etc. requires that all variables are
bound before the call. (Only 'write' will display a free variable as an
underscore).
706 The list variable in 'findall' must be free.
If it is necessary to compare the result of a call to 'findall' with
an existing list, call 'findall' with a free variable and do the
comparison after the call, as in
        findall(X,p(X),Lnew), L=Lnew,
707 Free variable in expression.
Arithmetic expressions cannot be evaluated if they contain free
variables.
708 WARNING: The variable is not bound in this clause. (F10=ok, Esc=abort)
When an output variable is not bound in a clause, it will be bound
to a free reference variable. This requires that the whole domain
to which the variable belongs is handled as a reference domain.
Avoid this if there is no need for it, as the use of reference
variables generates more code.
709 WARNING: Two free variables in expression. (F10=ok, Esc=abort)
This will cause the two variables to be bound to the same free
reference variable.
Avoid this if there is no need for it, as the use of reference
variables generates more code.
710 WARNING: Variable used twice with output flow pattern. (F10=ok,Esc=abort)
The variable is used twice as an output variable in a predicate call.
This will cause the variable to be bound to a free reference variable
before the call is done, and both arguments where the variable is used
will become input arguments (with a reference variable).
Avoid this if there is no need for it, as the use of reference
variables generates more code.
711 WARNING: This will create a free variable.  ( F10=Ok, Esc=abort ).
Using the first occurrence of a variable as an argument to 'free' will
cause the variable to be bound to a free reference variable.
This can be used to generate less flow variants, but will force the
domain to which the variable belongs to become a reference domain.
Avoid this if there is no need for it, as the use of reference
variables generates more code.
712 The variable is not bound in this clause.
When an output variable is not bound in a clause, it will be bound
to a free reference variable. 
In a project all reference domains must be declared; the compiler
cannot automatically generate these when needed, as a project will
typically consist of several modules compiled from time to time.
To rectify, either rewrite the code so as to avoid the use of reference
variables or declare a reference domain for the variable.
The latter should be avoided if there is no need for it, as the use of
reference variables generates more code.
713 Two free variables in expression.
This will cause the two variables to be bound to the same free
reference variable.
In a project all reference domains must be declared; the compiler
cannot automatically generate these when needed, as a project will
typically consist of several modules compiled from time to time.
To rectify, either rewrite the code so as to avoid the use of reference
variables or declare a reference domain for the variables.
The latter should be avoided if there is no need for it, as the use of
reference variables generates more code.
714 Variable used twice with output flow pattern.
The variable is used twice as an output variable in a predicate call.
This will cause the variable to be bound to a free reference variable
before the call is done, and both arguments where the variable is used
will become input arguments (with a reference variable).
However, in a project all reference domains must be declared; the
compiler cannot automatically generate these when needed, as a project
will typically consist of several modules compiled from time to time.
To rectify, either rewrite the code so as to avoid the use of reference
variables or declare a reference domain for the variables.
The latter should be avoided if there is no need for it, as the use of
reference variables generates more code.
715 This will create a free variable.
Using the first occurrence of a variable as an argument to 'free' will
cause the variable to be bound to a free reference variable.
This can be used to generate less flow variants, but will force the
domain to which the variable belongs to become a reference domain.
However, in a project all reference domains must be declared; the
compiler cannot automatically generate these when needed, as a project
will typically consist of several modules compiled from time to time.
To rectify, either rewrite the code so as to avoid the use of reference
variables or declare a reference domain for the variables.
The latter should be avoided if there is no need for it, as the use of
reference variables generates more code.
716 This argument can only be an input argument.
Look in the manual for the flowpatterns of the predicate!.
717 This argument can only be an output argument.
Look in the manual for the flowpatterns of the predicate!.
718 The domain refers to global non-reference domains.
When a domain becomes a reference domain, all underlying domains
must also be reference domains. When a local domain in a project
is declared as a reference domain, it must therefore not refer to
any global non-reference domains.
719 Reference to a standard domain, which may not become a reference domain.
When a domain becomes a reference domain, all underlying domains also
becomes reference domains.  However, the standard domains FILE,
DB_SELECTOR, BT_SELECTOR, REG, BGI_ILIST and PLACE can for technical
reasons not become reference domains.


last edited (December 4, 2006) by bilderbikkel, Number of views: 2334, Current Rev: 4 (Diff)

[Edit this page]  [Page history]  [What links here]  [Discuss this topic]  [Printer Friendly]  

Members

Username:

Password:


Register
Forgot Password?




Programmers Heaven - for .NET, Java, C/C++ and WEB Developers!
© 1996-2008 Community Networks Ltd. All rights reserved. Reproduction in whole or in part, in any form or medium without express written permission is prohibited. Violators of this policy may be subject to legal action. Please read Terms Of Use and Privacy Statement for more information. Development by Tore Nestenius at .NET Consultant - Synchron Data.