[build] use shDS as if its installed

Signed-off-by: Shahbaz Youssefi <ShabbyX@gmail.com>
[update] prevent double init with sh_lexer_init in C++

Signed-off-by: Shahbaz Youssefi <ShabbyX@gmail.com>
[bugfix] compound token name generation

This fixes two issues with compound name generation.  In a rule like:

T -> (A B @ar C) ...

A compound non-terminal is made to replace the expression in the
parentheses.  Previously, it would have become:

(ABC) -> A B @ar C

Which is problematic for different reasons.  For example, the following
two rules would get mixed up:

T -> (A B @ar C) ...
R -> (A B C @ar2) ...

where the added rules would become:

(ABC) -> A B @ar C | A B C @ar2;

which is incorrect.  This commit therefore adds the action routine (and
error production rule handler) names to the compound name.

Another issue is a mix up betweent these two:

T -> (A B @ar C) ...
R -> (AB @ar C) ...

where the added rules would become (even with above fix):

(AB@arC) -> A B @ar C | AB @ar C;

which is again incorrect.  This commit makes sure in such cases, a
delimiter (~) is inserted.  Therefore, the above rules would produce two
distinct nonterminal names (A~B~@ar~C) and (AB~@ar~C).

Signed-off-by: Shahbaz Youssefi <ShabbyX@gmail.com>
[update] change the way mid-body action routines are supported

Previously, the rule:

T -> A B @ar1 C @ar2 D @ar3

Was changed to:

T -> A B (@ar1) C (@ar2) D -- with @ar3
(@ar1) -> -- with @ar1
(@ar2) -> -- with @ar2

Which was not the best thing, because (@X), as a nonterminal would
expect a certain follow before it would simply expand to nothing (on LL
at least).  This made it difficult for action routines that
ignore/unignore a token type, since they try to affect the next token,
while the next token is the follow that determines how the parser should
succeed.

This commit changes the same rule lik this:

T -> ((A~B~@ar1)C~@ar2) D -- with @ar3
(A~B~@ar1) -> A B -- with ar1
((A~B~@ar1)C~@ar2) -> (A~B~@ar1) C -- with @ar2

Which may not have the same problem, but the effect actually needs to be
tested!

Signed-off-by: Shahbaz Youssefi <ShabbyX@gmail.com>
[update] De-string-ified sh_symbol

Signed-off-by: Shahbaz Youssefi <ShabbyX@gmail.com>
[update] remove constructors from sh_symbol

Signed-off-by: Shahbaz Youssefi <ShabbyX@gmail.com>