[eclipse-clp-users] Syntax error in source transformation

From: Valerio <valemn_at_...6...>
Date: Thu, 10 Apr 2008 09:38:44 +0200
Hi,
I am using ECLiPSe to describe a large EFSM (Extended Finite State
Machine) which consists of 62 states and 141 transitions.
In the script there are two versions of the same machine, one is the
fault free version, the other is the faulty version.
I am using ECLiPSe to define the EFSM behaviour in terms of
constraints, in order to find a given input sequence which leads to
observe a difference between the outputs of the two versions.
However when I compile the ECLiPSe script I get the following error:

*** syntax error: illegal head: do__0(_2257878, _2257878, DATABUS_I,
INTERRUPT, READ_MEM, WRITE_MEM, DATABUS_O, ADBUS, INTA, PC, IPC, AC,
BYTE1, BYTE2, BYTE3, IBYTE1, IBYTE3, I, V, C, N, Z, I_STATUS, FLAG,
TEMP, ITEMP, IAC, IDBUS, ICARRY, S0, S1, S2, S3, S4, S5, S6, S7, S8,
S9, S10, S11, S12, S13, S14, S15, S16, S17, S18, S19, S20, S21, S22,
S23, S24, S25, S26, S27, S28, S29, S30, S31, S32, S33, S34, S35, S36,
S37, S38, S39, S40, S41, S42, S43, S44, S45, S46, S47, S48, S49, S50,
S51, S52, S53, S54, S55, S56, S57, S58, S59, S60, S61, AC_F, ADBUS_F,
BYTE1_F, BYTE2_F, BYTE3_F, C_F, DATABUS_O_F, FLAG_F, I_F, I_STATUS_F,
IAC_F, IBYTE1_F, IBYTE3_F, ICARRY_F, IDBUS_F, INTA_F, IPC_F, ITEMP_F,
N_F, PC_F, READ_MEM_F, S0_F, S1_F, S10_F, S11_F, S12_F, S13_F, S14_F,
S15_F, S16_F, S17_F, S18_F, S19_F, S2_F, S20_F, S21_F, S22_F, S23_F,
S24_F, S25_F, S26_F, S27_F, S28_F, S29_F, S3_F, S30_F, S31_F, S32_F,
S33_F, S34_F, S35_F, S36_F, S37_F, S38_F, S39_F, S4_F, S40_F, S41_F,
S42_F, S43_F, S44_F, S45_F, S46_F, S47_F, S48_F, S49_F, S5_F, S50_F,
S51_F, S52_F, S53_F, S54_F, S55_F, S56_F, S57_F, S58_F, S59_F, S6_F,
S60_F, S61_F, S7_F, S8_F, S9_F, TEMP_F, V_F, WRITE_MEM_F, Z_F, E1, E2,
E3, E4, E5, E6, E7, E8, E9, E10, E11, E12, E13, E14, E15, E16, E17,
E18, E19, E20, E21, E22, E23, E24, E25, E26, E27, E28, E29, E30, E31,
E32, E33, E34, E35, E36, E37, E38, E39, E40, E41, E42, E43, E44, E45,
E46, E47, E48, E49, E50, E51, E52, E53, E54, E55, E56, E57, E58, E59,
E60, E61, E62, E63, E64, E65, E66, E67, E68, E69, E70, E71, E72, E73,
E74, E75, E76, E77, E78, E79, E80, E81, E82, E83, E84, E85, E86, E87,
E88, E89, E90, E91, E92, E93, E94, E95, E96, E97, E98, E99, E100,
E101, E102, E103, E104, E105, E106, E107, E108, E109, E110, E111,
E112, E113, E114, E115, E116, E117, E118, E119, E120, E121, E122,
E123, E124, E125, E126, E127, E128, E129, E130, E131, E132, E133,
E134, E135, E136, E137, E138, E139, E140, E141, E1_F, E2_F, E3_F,
E4_F, E5_F, E6_F, E7_F, E8_F, E9_F, E10_F, E11_F, E12_F, E13_F, E14_F,
E15_F, E16_F, E17_F, E18_F, E19_F, E20_F, E21_F, E22_F, E23_F, E24_F,
E25_F, E26_F, E27_F, E28_F, E29_F, E30_F, E31_F, E32_F, E33_F, E34_F,
E35_F, E36_F, E37_F, E38_F, E39_F, E40_F, E41_F, E42_F, E43_F, E44_F,
E45_F, E46_F, E47_F, E48_F, E49_F, E50_F, E51_F, E52_F, E53_F, E54_F,
E55_F, E56_F, E57_F, E58_F, E59_F, E60_F, E61_F, E62_F, E63_F, E64_F,
E65_F, E66_F, E67_F, E68_F, E69_F, E70_F, E71_F, E72_F, E73_F, E74_F,
E75_F, E76_F, E77_F, E78_F, E79_F, E80_F, E81_F, E82_F, E83_F, E84_F,
E85_F, E86_F, E87_F, E88_F, E89_F, E90_F, E91_F, E92_F, E93_F, E94_F,
E95_F, E96_F, E97_F, E98_F, E99_F, E100_F, E101_F, E102_F, E103_F,
E104_F, E105_F, E106_F, E107_F, E108_F, E109_F, E110_F, E111_F,
E112_F, E113_F, E114_F, E115_F, E116_F, E117_F, E118_F, E119_F,
E120_F, E121_F, E122_F, E123_F, E124_F, E125_F, E126_F, E127_F,
E128_F, E129_F, E130_F, E131_F, E132_F, E133_F, E134_F, E135_F,
E136_F, E137_F, E138_F, E139_F, E140_F, E141_F) :- true, !
       before line 3432 in the file prawn-pc-4235-s34-s0.ecl

out of range in set_flag(do__0 / 460, auxiliary, on) in module eclipse
syntax error : in source transformation in efsm(T, DATABUS_I,
INTERRUPT) :- ...

A few words about the code. The core of the script consists of a for
loop the head of which contains variables related to states (S<number>
and S<number>_F) and transitions (E<number> and E<number>_F). Some
other register variables are included too.
The efsm predicate is the one which describes the behaviour of the two
versions of the EFSM, and is the one that is called when the script is
to be executed.
I already used this approach to describe much smaller EFSMs and they
worked fine.
I am wondering whether ECLiPSe is not able to handle such a complex
(in terms of sheer size) EFSM and why the predicate set_flag is
automatically invoked by the compiler.

Thanks in advance for your help.

Valerio Guarnieri
Received on Thu Apr 10 2008 - 00:38:52 CEST

This archive was generated by hypermail 2.2.0 : Mon Jul 09 2018 - 02:05:29 CEST