changed the reader to handle #(), #[], #{}, '() specially
This commit is contained in:
41
lib/hcl.c
41
lib/hcl.c
@ -381,9 +381,46 @@ void hcl_getsynerr (hcl_t* hcl, hcl_synerr_t* synerr)
|
||||
if (synerr) *synerr = hcl->c->synerr;
|
||||
}
|
||||
|
||||
void hcl_setsynerr (hcl_t* hcl, hcl_synerrnum_t num, const hcl_ioloc_t* loc, const hcl_oocs_t* tgt)
|
||||
void hcl_setsynerrbfmt (hcl_t* hcl, hcl_synerrnum_t num, const hcl_ioloc_t* loc, const hcl_oocs_t* tgt, const hcl_bch_t* msgfmt, ...)
|
||||
{
|
||||
hcl_seterrnum (hcl, HCL_ESYNERR);
|
||||
if (msgfmt)
|
||||
{
|
||||
va_list ap;
|
||||
va_start (ap, msgfmt);
|
||||
hcl_seterrbfmtv (hcl, HCL_ESYNERR, msgfmt, ap);
|
||||
va_end (ap);
|
||||
}
|
||||
else hcl_seterrnum (hcl, HCL_ESYNERR);
|
||||
hcl->c->synerr.num = num;
|
||||
|
||||
/* The SCO compiler complains of this ternary operation saying:
|
||||
* error: operands have incompatible types: op ":"
|
||||
* it seems to complain of type mismatch between *loc and
|
||||
* hcl->c->tok.loc due to 'const' prefixed to loc. */
|
||||
/*hcl->c->synerr.loc = loc? *loc: hcl->c->tok.loc;*/
|
||||
if (loc)
|
||||
hcl->c->synerr.loc = *loc;
|
||||
else
|
||||
hcl->c->synerr.loc = hcl->c->tok.loc;
|
||||
|
||||
if (tgt) hcl->c->synerr.tgt = *tgt;
|
||||
else
|
||||
{
|
||||
hcl->c->synerr.tgt.ptr = HCL_NULL;
|
||||
hcl->c->synerr.tgt.len = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void hcl_setsynerrufmt (hcl_t* hcl, hcl_synerrnum_t num, const hcl_ioloc_t* loc, const hcl_oocs_t* tgt, const hcl_uch_t* msgfmt, ...)
|
||||
{
|
||||
if (msgfmt)
|
||||
{
|
||||
va_list ap;
|
||||
va_start (ap, msgfmt);
|
||||
hcl_seterrufmtv (hcl, HCL_ESYNERR, msgfmt, ap);
|
||||
va_end (ap);
|
||||
}
|
||||
else hcl_seterrnum (hcl, HCL_ESYNERR);
|
||||
hcl->c->synerr.num = num;
|
||||
|
||||
/* The SCO compiler complains of this ternary operation saying:
|
||||
|
Reference in New Issue
Block a user