diff --git a/src/toolsrc/parse.pla b/src/toolsrc/parse.pla index 2c78a88..7311d1c 100644 --- a/src/toolsrc/parse.pla +++ b/src/toolsrc/parse.pla @@ -258,8 +258,8 @@ def parse_value(codeseq, rvalue)#2 type = type | WPTR_TYPE break is AT_TKN - deref-- if not deref; exit_err(ERR_INVAL|ERR_SYNTAX); fin + deref-- break otherwise operation = FALSE @@ -1119,8 +1119,8 @@ def parse_lambda return func_tag end def parse_defs - byte cfnparms, cfnvals - word type, func_tag, idptr + byte idlen, cfnparms, cfnvals + word type, idstr, func_tag, idptr type = FUNC_TYPE if token == EXPORT_TKN @@ -1133,6 +1133,8 @@ def parse_defs cfnparms = 0 infuncvals = 1 infunc = TRUE + idstr = tknptr + idlen = tknlen idlocal_init if scan == OPEN_PAREN_TKN repeat @@ -1149,14 +1151,14 @@ def parse_defs if not parse_const(@infuncvals); exit_err(ERR_INVAL|ERR_CONST); fin scan fin - idptr = idglobal_lookup(tknptr, tknlen) + idptr = idglobal_lookup(idstr, idlen) if idptr if not idptr=>idtype & PREDEF_TYPE; exit_err(ERR_DUP|ERR_ID); fin if idptr->funcparms <> cfnparms or idptr->funcvals <> infuncvals; exit_err(ERR_DUP|ERR_CODE|ERR_ID); fin func_tag = idptr=>idval else func_tag = ctag_new - idfunc_add(tknptr, tknlen, type, func_tag, cfnparms, infuncvals) + idfunc_add(idstr, idlen, type, func_tag, cfnparms, infuncvals) fin emit_ctag(func_tag) retfunc_tag = ctag_new