Frequently Asked Questions and Answers
4 |#include "envmod.h" (test.c) cannot find include file: "envmod.h"
Eli no longer automatically extracts all modules that are mentioned
> Am I correct in noting that the link between the key table and the > string table containing non-literal strings was possible via the > following (in Eli3)
> ATTR Key: DefTableKey; > SYMBOL xName INHERITS IdDefNest END; > SYMBOL xIdent INHERITS IdPtg END; > > RULE Name: xName ::= xIdent > COMPUTE > xName.Ptg = xIdent.Ptg; > xName.Sym = xIdent.Sym; > END;
There are two different tasks:
There is Module Library support for both tasks. In your example you use
Since Eli Version 4.x, inheritance to terminals is no longer possible.
That is the only difference for your application.
So you simply have to move your PTG computation one level up to the symbol
SYMBOL xName INHERITS IdPtg END; RULE Name: xName ::= xIdent COMPUTE xName.Sym = xIdent.Sym; END;
which even looks a bit simpler than the 3.8 solution.
> I'm surprised that C_STRING_LIT now uses mkstr instead of c_mkstr. > What's the reason?
"abc\0def" became "abc"
This is a consequence of the string storage module implementation, and
could only be avoided by placing a high cost on all string operations.
To avoid the problem,