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 GuarnieriReceived on Thu Apr 10 2008 - 00:38:52 CEST
This archive was generated by hypermail 2.2.0 : Thu Feb 02 2012 - 02:31:58 CET