weiner@novavax.UUCP (Bob Weiner) (01/06/90)
About a week ago, ISE posted a complete lex/yacc grammar for the Eiffel language version 2.2. "Eiffel: The Libraries", written by ISE, goes on and on about the advantages of doing lexical analysis and parsing in an OO language. Why not demonstrate whether there is any truth to this by posting the same grammar in Eiffel using the classes that may be purchased with the Eiffel environment. If these tools actually work well, this will give people an incentive to develop Eiffel tools in Eiffel. I can tell everyone that there is one reason that ISE might not want to post such a set of classes. The current Eiffel lex/parser libraries require that each production must have its own class and every disjunction production (a | b | c) may use only a single production type for each part of the disjunction, hence there will be many, many classes for any significant grammar. This would not be much of a problem if the current Eiffel compiler would not assume that each class is stored in its own file, but it does. (This is a restriction that I'm sure ISE will remove eventually since they will see how silly this is when they rewrite the Eiffel compiler in Eiffel and produce hundreds of tiny classes. Yes, I know the automatic recompilation facilities depend on this fact so they should be altered. They're slow enough already that adding a little overhead by scanning for class names in files won't have much of a visible impact.) Anyway, I think it would be very useful to post the Eiffel lex/parser classes in the same spirit as the lex/yacc postings, despite the number of classes that will need to be 'shar'ed together. I could then work on an Eiffel static call tree generator that lex/yacc has made too difficult to produce. (Of course, it would be better if ISE shipped such a tool in the first place, considering that it is not a very complex thing yet could provide significant help in documenting the overall structure of an Eiffel system. -- Bob Weiner, Motorola, Inc., USENET: ...!gatech!uflorida!novavax!weiner (407) 364-2087