Re: ECF parsing issues
Eric Bezault <ericb-D6Qt/9opevxWk0Htik3J/[email protected]> Tue, 18 Aug 2009 19:12:11 +0200
| Newsgroups | gmane.comp.lang.eiffel.gobo.general |
|---|---|
| Message-ID | <[email protected]> |
Hi Sitsofe, > When I serialize and then deserialize (I was > trying to build a cache to speed up parsing of different classes that > are part of the same project) an ET_SYSTEM subsequent parsing throws up > the following warning: > > [GIAAA] internal error. > ---- > > I've put a testcase up on > http://sucs.org/~sits/test/gobo/20090817/ecf_testcase.zip . There is a > gobo directory in there too that includes changes I've made to gobo > libraries (one is a known inverted assertion, another is the disabling > of a failing precondition that I'm unclear about and the final piece are > changes to do silent redirection when certain clusters (base.ecf, > time.ecf) are loaded in an attempt to parse more ecf files without > changing them so much). > > To compile I've been doing > ec -freeze -config ise.ecf > as test.ecf cannot be made to work without the earlier gobo changes > quietly doing redirection (but it must be used when using gobo parsing). > Additionally test.xace no longer works as I don't yet know how to update > it to include ise serialisation libraries. > > Any help (including workarounds on how to make .ecf parsing just use the > first target) is appreciated. I noticed a typo in you class TEST: 109 a_class := a_system.class_by_name ( "TEST" ) 110 a_class.process ( a_system.implementation_checker ) 111 a_deserialized_system ?= deserialize ( serialize ( a_system ) ) 112 a_class := a_system.class_by_name ( "TEST" ) 113 a_class.process ( a_deserialized_system.implementation_checker ) In line 112, it should be: a_class := a_deserialized_system.class_by_name ( "TEST" ) The Gobo classes have indeed not been designed to work in combination with serialization. They use direct equality tests with once objects. But when these objects get serialized/deserialized of course the equality does not hold anymore. For this particular problem that you got, you will have to replace routine `is_unknown' in class ET_CLASS by: is_unknown: BOOLEAN is -- Is current class an "*UNKNOWN*" class? -- This class does not conform to any other class, -- not even itself. do Result := group /= Void and then group.is_unknown ensure definition: Result = (group /= Void and then group.is_unknown) end -- Eric Bezault mailto:ericb-D6Qt/9opevxWk0Htik3J/[email protected] http://www.gobosoft.com ------------------------------------ To Post a message, send it to: [email protected] To Unsubscribe, send a blank message to: [email protected]! Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/gobo-eiffel/ <*> Your email settings: Individual Email | Traditional <*> To change settings online go to: http://groups.yahoo.com/group/gobo-eiffel/join (Yahoo! ID required) <*> To change settings via email: mailto:[email protected] mailto:[email protected] <*> To unsubscribe from this group, send an email to: [email protected] <*> Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/