APPENDIX D : ERROR CODES

0 - ***declaration part overloaded

Overflow of compiler data structure of declaration part. Possible reasons: too complicated program structure (too many classes, protection lists, parameter lists,...), too complicated function expressions e.g. f(g(h(...))). It is possible that removing some errors e.g. "unvisible identifier" causes shortening of the program.

10 - ***too many errors

Overflow of error diagnostic table. 1024 first detected errors are printed, but global number of error is equal to number of all detected errors.

41 - ***declaration part overloaded

Comments as for 0.

101 - ':=' expected

102 - ';' expected

103 - 'then' expected

104 - 'fi'/'else' expected

105 - 'od' expected

106 - '(' expected

107 - ')' expected

108 - 'do' expected

109 - identifier expected

110 - too many exits found

Length of sequence exit exit ...exit exceeds level of loop nesting +1.

111 - illegal character

112 - wrong structure of 'if'-statement

113 - 'end' missing

114 - '.' expected

115 - illegal constant in expression

Character constant or text appears in logical or arithmetical expression.

116 - '=' expected

117 - constant expected

118 - ':' expected

119 - unit kind specification expected

Keywords: class, procedure, function, coroutine or process missing in module headline.

120 - 'hidden' or 'close' occurred twice

121 - 'hidden' or 'close' out of a class

122 - 'block' expected

123 - object expression is not a generator

Object expression appearing as instruction is not a generator e.g. new (a).b

124 - 'dim' expected

125 - 'to'/'downto' expected

126 - illegal arithmetic operator

127 - declaration part expected

128 - incorrect identifier at 'end'

Module name after end does not correspond to name in module headline.

129 - wrong structure of 'case'-statement

130 - wrong structure of 'do'-statement

131 - illegal use of 'main'

Name main may be used only as an argument of attach operator; in other cases it is illegal.

132 - 'when' expected

133 - too many branches in 'case'-statement

Number of branches in case instruction is greater than 160.

134 - 'begin' missed

135 - bad option

136 - is it really a loglan program???

There is no Loglan keyword found in source program like: begin, block, unit, class,...

137 - 'block' missed - parsing began

There is no keyword block or program at the beginning of the Loglan program. This message indicates the source line, that is the first compiled line.

138 - 'repeat' out of a loop

The length of sequence: (exit)*repeat exceeds nested depth of the loop.

139 - there is no path to this statement

140 - 'andif'/'orif' mixed

141 - array of 'semaphore' is illegal

142 - wrong handler end

Handler declaration is not ended by instruction end or end handlers.

143 - lastwill inside a structured statement

144 - repeated lastwill

Label LASTWILL appears more than once in the same module.

145 - no parameter specification

146 - wrong register specification

147 - "," expected

191 - ***null program

There is no source program on the input file or there is no module declaration. Causes termination of program compilation.

196 - ***too many identifiers

Entire length of all identifiers and keywords is greater than 3000 characters. This overflow terminates program compilation.

197 - ***too many formal parameters

The length of formal parameter list and declared local variables (in actual module) is greater than 130. This error terminates program compilation.

198 - ***parsing stack overloaded

Too complicated (nested) program structure. This error terminates program compilation.

199 - ***too many prototypes

Too many declarations in program caused overflow of the compiler data structure. This error terminates program compilation.

201 - wrong real constant

202 - wrong comment

203 - wrong character constant

204 - wrong integer constant

205 - integer overflow

Integer constant out of range.

206 - real overflow

Real constant out of range.

211 - identifier too long

Length of identifier is greater than 20 characters.

212 - string too long

Length of string constant is greater than 260 characters.

301 - prefix is not a class id

Prefix name ID is not a class name. It may appear when identifier ID is used earlier (declared more than once).

303 - coroutine/process illegal here as prefix id

Procedure, function or block can't be prefixed by coroutine or process.

304 - hidden identifier cannot be taken id

Identifier ID placed on taken list is on hidden list in the prefixing module.

305 - undeclared identifier id

306 - undeclared type identifier id

307 - type identifier expected id

Identifier ID used in variable or function declaration as a type name, is not declared earlier as a type (but name has been used earlier).

308 - undeclared prefix identifier id

309 - declared more than once id

310 - taken list in unprefixed unit

316 - formal type specification after use id

Formal type ID appears in the parameter list after using this identifier as parameter type e.g. (... x: ID; type ID, ...).

317 - hidden type identifier id

Type name ID is on hidden list in a prefix of one of the modules from SL chain of actual module and it is a nearest declaration of this identifier.

318 - type identifier not taken id

Type name ID is not on taken list in a prefix of one of the modules from SL chain of actual module.

319 - hidden identifier in the list id

Identifier ID from hidden or close list is on hidden list in one of the prefixing modules.

320 - identifier in the list not taken id

Identifer ID from hidden or close list is not placed on taken list in none of the prefixing modules.

321 - identifier cannot be taken id

Identifer ID from taken list is placed on taken list in none of the prefixes.

322 - hidden prefix identifier id

Analogical to 317 error.

323 - prefix identifier not taken id

Analogical to 318 error.

329 - only procedure and function may be virtual

virtual specification appears with class specification.

330 - virtual in unprefixed block/procedure/function

331 - incompatible kinds of virtuals id

Kind of virtual module ID is different from kind of replaced module (e.g. one of them is a function, the other one is a procedure).

332 - incompatible types of virtuals id

Type of virtual function ID is different from type of replaced function.

333 - different lengths of form.param.lists in virtuals id

Virtual module ID and replaced module have different number of formal parameters.

334 - conflict kinds of the 1st level parameters id

In the headline of virtual module ID kind of formal parameter differs from corresponding formal parameter in the headline of replaced module (e.g. type and variable, input and output parameters,.).

335 - incompatible types of the 1st level parameters id

There are formal parameters of different types (function, procedure) in the headline of virtual module ID and in the headline of replaced module on the same position.

336 - different lengths of the 2nd level params lists id

There are formal procedures/functions with different numbers of parameters in the headline of virtual module ID and in the headline of replaced module on the same position.

337 - incompatible kinds of the 2nd level parameters id

There are parameters of different kinds on the same position in the corresponding procedure or function parameters in the headline of virtual module ID and in the headline of replaced module.

338 - incompatible types of the 2nd level parameters id

There are parameters of different types on the same position in the corresponding procedure or function in the headline of virtual module ID and in the headline of replaced module.

341 - ***declaration part overloaded

Analogical to error 0.

342 - ***too many classes declared

343 - ***too many prototypes

Too many modules declared on the same level.

350 - undeclared signal identifier id

351 - hidden signal identifier id

Analogical to error 317.

352 - signal identifier not taken id

Analogical to error 318.

353 - signal identifier expected id

Identifier ID placed in handler declaration as a signal name has not been declared as a signal.

354 - different types of parameters id

In the headlines of signals, that have common handler, parameters of the different types appear on the same position. ID is one of these parameters.

355 - incompatible kinds of parameters id

In the headlines of signals that have common handler, parameters of different kinds appear on the same position. ID is one of these parameters.

356 - different identifiers of parameters id

In the headlines of signals that have common handler parameters of different names appear on the same position. ID is one of these parameters.

357 - incompatible kinds of the 2nd level parameters id

Analogous to error 355 for 2-nd level paramKters.

358 - different types of the 2nd level parameters id

Analogous to error 354 for the 2-nd level parameters.

359 - different lengths of the 2nd level params lists id

There are formal procedures or formal functions with different number of parameters on the same position in the headlines of signals this have common handler. ID is one of these formal parameters/functions.

360 - different lengths of form. param. lists in signals id

There are different number of formal parameters in the signals that have common handler. ID is one of these signals.

361 - non-local formal type cannot be used id

Formal parameter ID of signal is of non local formal type.

362 - repeated handler for signal id

There are more than one handler for signal ID in the same module.

370 - only 'input' is legal here

Formal parameter output or inout is illegal in process.

398 - class prefixed by itself id

Construction unit ID: ID class is not allowed.

399 - cycle in prefix sequence id

ID is a class identifier used in cyclic prefixing i.e. ID prefixes a, a prefixes b, ... , z prefixes ID. This construction is not allowed.

401 - wrong label in 'case' id

Label in case instruction is not a constant.

402 - 'case' statement nested too deeply

Nesting level in case instruction is greater than 6.

403 - too long span of 'case' labels

Range of branches in case instruction is greater than 160.

404 - repeated label in 'case'-statement id

Label ID appears more than once in case instruction.

405 - illegal type of 'case' expression id

Control expression in case statement is not of

integer or char type.

406 - different types of labels and 'case' expression

407 - non-logical expression after 'if'/'while' id

408 - real constant out of integer range

Error during conversion of real constant to integer constant.

410 - simple variable expected id

Control variable in for loop is not a simple variable.

411 - non-integer control variable id

Control variable ID in for loop is not of integer type.

412 - non-integer expression id

Expression placed as array index or bound limit in array generation or as step in for loop or as format in write statement should be reducable to integer type.

413 - file expression expected id

414 - string expression expected id

415 - reference expression expected id

Expression placed before dot (remote access), before qua or as a argument of kill or copy statement is not of class type.

416 - array expression expected id

417 - boolean expression expected id

418 - semaphore variable expected

419 - illegal type in 'open'

The type name placed in open is different than TEXT, REAL, INTEGER, CHAR and DIRECT.

420 - variable expected id

Expression placed on the left side of assignment statement or as an argument of read instruction or in array instruction is not a variable.

421 - class identifier after 'new' expected id

Identifier ID placed after new is not a class identifier.

422 - procedure identifier after 'call' expected id

423 - 'new' missing id

Keyword new doesn't appear before class identifier for object generation.

424 - 'call' missing id

Keyword call doesn't appear before procedure identifier for procedure call.

425 - 'inner' out of a class

426 - 'inner' occurred more than once

427 - 'wind'/'terminate' out of a handler

428 - 'inner' inside lastwill

429 - definition cannot be reduced to constant id

Identifier ID placed in constant definition is not a constant.

430 - undefined constant in the definition id

431 - wrong number of indices id

Number of indices in referencing to array element is different from declared number of indices.

432 - index out of range id

433 - upper bound less than lower bound id

434 - too many subscripts id

Dimension of static array ID is greater than 7.

435 - variable is not array id

440 - type identifier expected after 'arrayof' id

Identifier ID placed after arrayof in actual parameter list, corresponding to type parameter is not a type name.

441 - incorrect format in 'write'

There is format for expression of char type or there is double format for expression of type integer or string.

442 - illegal expression in 'write'

Argument of write statement is not of type char, string, integer or real.

443 - illegal type of variable in 'read' id

Argument of read statement is not of type char, integer or real.

444 - no data for i/o transfer

There is only file identifier in I/O instruction.

445 - illegal expression in 'put'

446 - illegal expression in 'get'

448 - 'raise' missing id

There is signal identifier without keyword raise in the context of signal raising.

449 - signal identifier expected id

Identifer ID after keyword raise is not a signal identifier.

450 - illegal procedure occurrence id

Procedure name ID appears in illegal context.

451 - illegal class occurrence id

Class name ID appears in illegal context.

452 - illegal type occurrence id

Type name ID appears in illegal context.

453 - illegal signal occurrence id

Signal name ID appears in illegal context.

454 - illegal operator occurence

455 - wrong number of operands

460 - divided by zero

470 - illegal input parameter id

Actual parameter associated with input parameter is not expression that may have any value: it is e.g. procedure name

471 - illegal output parameter id

Actual parameter corredponded to output parameter is not a variable.

472 - illegal type parameter id

Actual parameter ID associated with type parameter is not a type name.

473 - illegal procedure parameter id

Actual parameter ID associated with procedure parameter is not a procedure name.

474 - illegal function parameter id

Actual parameter ID associated with function parameter is not a function name.

475 - illegal left side of 'is'/'in' id

Left side argument ID of is/in is not a reference expression.

476 - illegal right side od 'is'/'in' id

Right side argument ID of is / in is not a class name.

477 - illegal parameter of 'attach' id

Parameter ID of attach statement is not a reference variable of class object.

478 - illegal type of expression

479 - negative step value

550 - ***stack overloaded

This error may be removed by dividing expressions into subexpressions, making simpler nested callings of arrays, functions, classes and for loops. This error terminates compilation of current module, but other modules will be compiled.

551 - ***too many auxiliary variables needed

Too complicated expressions. This error may be removed by declaration of additional variables and using them as auxiliary variables in expressions.

552 - ***too many auxiliary reference variable needed

Analogical to error 551.

553 - ***statement sequence too long or too complicated

This error may be removed by adding 'goto' statement into sequence of instructions e.g. if false then exit fi, inner, ... or by dividing complicated expression into subexpressions.

554 - ***real constants dictionary overflow

Too many real constant, maybe because of evaluation of expressions built from real constants.

600 - undeclared identifier id

601 - illegal type before '.' id

Expression placed before dot (remote access) is not of class type.

602 - close identifier after '.' id

Identifier ID placed after dot is on close list in the class or its prefix that construct expression before dot.

603 - undeclared identifier after '.' id

Identifier ID placed after dot is not attribute of expression placed before dot. It may be caused by missing declaration or using bad prefix for class constructing expression before dot.

604 - illegal operand type id

One of the arguments in arithmetical expression or in relation is not of arithmetical type.

605 - illegal type in 'div/'mod' term id

Expression identified by ID used as argument of div or mode operation is not of integer type.

606 - incompatible types in comparison id

ID is an identifier of left argument of relation.

607 - unrelated class types in comparison id

ID is an identifier of left argument of relation. Both arguments are of class type and none of these classes prefixes the other one.

608 - string cannot be compared id

ID identifies a string.

609 - incompatible types in assignment/transmission id

ID is an identifier of left side of assignment statement or an identifier of actual parameter in object generation. Types of both sides of instruction or type of formal parameter and type of actual parameter are incompatible.

610 - unrelated class types in assignment/transmission id

Analogical to errors 609 and 607.

611 - constant after '.' id

An attempt to remote access to constant.

612 - this class does not occur in sl-chain id

Class ID appeared in expression this ID, but ID dosn't prefix any module in SL chain of actual module. It may be a cycle.

613,614 - class identifier expected id

For error 613: identifier ID used in expression this ID is not of class type. For error 614: identifier ID used in expression this ID is not name of any type.

615 - illegal type before 'qua' id

Object expression before qua should be of one of the types: class, coroutine, process or simple (not array) formal type.

616,617 - illegal type after 'qua' id

For error 616: identifier ID used after qua is not of any type.
For error 617: identifier ID used after qua is not of class type.

618 - unrelated types in 'qua'-expression id

Identifier ID is a name of class type used after qua. This class type and class type used before qua doesn't prefix each other.

619 - hidden identifier id

Identifier ID used in construction qua ID or this ID is on hidden list in the prefix of one of the module from SL chain of actual module.

620 - not taken identifier id

Identifier ID used in construction qua ID or this ID is not on taken list in any prefix of any module of actual module.

621 - invisible identifier after '.' id

Identifier ID placed after dot is on hidden list or is not on taken list in prefix.

622 - formal parameter list is shorter id

Identifier ID identifies generated object: class, procedure or function. Formal parameters list of this object is shorter than actual parameters list.

623 - formal parameter list is longer id

Analogical to error 622.

624 - actual parameter is not a reference type id

Actual parameter identified by ID in generated object can't be of primitive type: integer, real, boolean or string.

625 - actual parameter is not a type id

Actual parameter identified by ID is not a type, so it can't replace formal type parameter.

626 - procedure-function conflict between parameters id

Actual parameter, identified by ID, that replaced formal parameter in generated object is function whereas formal parameter is a procedure or vice versa.

627 - unmatched heads-wrong kinds of parameters id

ID identifies actual module that replaced formal module. There are parameters of different kinds on the same position in the headlines of these modules. For input - output conflict the agreement of parameter types is checked also.

628 - unmatched heads-incompatible types in lists id

ID identifies actual module that replaced formal module. There are input /output parameters of different types on the same position in the headlines of actual and formal module.

629 - unmatched heads-unrelated class types in lists id

ID identifies actual module that replaced formal module. There are input/output parameters specifying classes of disjointed prefix sequences

in the headlines of actual and formal module.

630 - unmatched heads-different numbers of parameters id

There are different lengths of headlines in actual module identified by ID and formal module.

631 - incompatible types of function parameters id

There are different types of actual function specified by identifier ID and formal function in generated object.

632 - function/procedure expected id

Actual parameter identified by identifier ID is not function/procedure, whereas corresponding formal parameter is function/procedure.

633 - actual function type defined weaker than formal id

Type of actual function identified by ID is weaker defined than formal function type e.g. formal function type is statically defined, whereas actual function type is formal (external) or formal function is class, whereas actual function type is coroutine or process.

634 - unmatched heads-too weak type in actual list id

There are input/output parameters on the same position in the headlines of actual module identified by identifier ID and formal module, but ID is weaker defined than corresponding formal module parameter (see error 633).

635 - standard function/procedure cannot be actual par. id

ID identifies standard procedure/function used as actual parameter.

636 - illegal use of semaphore id

637 - 'semaphore' cannot be used id


BACK