Hi Tom, On Sat, 25 Dec 2010, Tom Roberts wrote:
> I want to have the grammar define the keywords as literal strings, so on first > call my yylex() will build up its list of keywords by scanning yytname[] for > entries beginning with '"'. As you no doubt know, yytname is requested using %token-table. However, since 2001 (according to our vc log), Bison's TODO has described %token-table as a broken feature that might not be worth keeping. Unfortunately, %token-table originated before my time, and I have no practical experience with it, so it's hard for me to determine the best way forward. > In both bison-2.4.3/doc/bison.info and on page 84 of > http://www.gnu.org/software/bison/manual/bison.pdf , the example code to map a > string terminal to the return value from yylex() is incomplete -- it only > gives a loop over yytname[], without telling the user what value to return. I agree that the documentation is unclear here. > The loop variable is i, and the value that must be returned is yytoknum[i]. > But yytoknum[] is inside that #ifdef and is not available. The manual does not document yytoknum, and that's usually a sign it wasn't intended for users. Does anyone remember exactly how yytname was originally intended to be used?
