¿ªÔÆÌåÓý

Re: Possible bug in BREXX parse instruction


 

¿ªÔÆÌåÓý

Hello Mark and Bob,

I would like to help you (if I can) with diagnosing the problem in BREXX.
Maybe we could switch this communication to private.

A list of all sources and includes (in C, AFAIK), which are needed to build BREXX,
would be very helpful. And the MDISK where it can be found (I guess it
is part of the VM distribution, or maybe Turnkey MVS - same version?).

Kind regards

Bernd


Am 16.10.2022 um 22:51 schrieb Bob Bolch:

Thanks, Mark.

I never found brexx debug to be very useful. I do remember that you put the BREXXD TEXT on your A-disk, renamed to BREXX TEXT, then IPL CMS.? Then the 'trace' statement, in an EXEC , turns the tracing on and off (I can't remember the exact operand.) The trace output shows you codepoints in the BREXX interpretor where the code flows. I will try to figure out the details and report back.
Bob

On Sun, Oct 16, 2022, 4:35 PM Mark A. Stevens via <marXtevens=[email protected]> wrote:
On Sun, Oct 16, 2022 at 10:36 AM, Bob Bolch wrote:
Which left parentheses?are you referring?to in that sentence?
?
Also, the WITH keyword is only valid in a parse of the form:
PARSE VALUE expression WITH template
The 'with' in Dave Mitchell's example is a variable name.
?
The correct result of the DAVEMTST?EXEC is the following:
Welcome back from your surgery.

Once again, I'm leaving out thoughts and not writing them down. Sorry.
I am referencing Mike's 2nd edition, also the ANSI X3J18-199X document. I will also eat my words about the parentheses. I was wrong. I had to walk away from this due to other challenges, and forgot.

From the ANSI document.

/* Note: The next section describes templates. */
template_list?????? := template | [template] ',' [template_list]
template??????????? := (trigger | target | Msg38.1)+
target????????????? := VAR_SYMBOL | '.'
trigger???????????? := pattern | positional
pattern???????????? := STRING | vrefp
vrefp?????????????? := '(' (VAR_SYMBOL | Msg19.7) (')' | Msg46.1)
positional????????? := absolute_positional | relative_positional
absolute_positional := NUMBER | '=' position
position??????????? := NUMBER | vrefp | Msg38.2
relative_positional := ('+' | '-') position

Concerning the use of 'WITH', I found I was misreading the code. You are correct.

address ??????????? := 'ADDRESS' [(taken_constant [expression]
??????????????????? | Msg19.1 | valueexp) [ 'WITH' connection]]
... and ...

parse_value???????? := 'VALUE' [expression] ('WITH' | Msg38.3)

I have been going through the C code to determine what is and is not happening. Not having a lot of luck, yet, as I get lost in the definitions of record constructs, and I don't understand why TEMPLATE C skips left paren while gathering symbols. Starting at line 35 and on.

/* ----------- vrefp --------- */
/* variable reference position */
static void
vrefp(void) {
??? Context *context = (Context *) CMSGetPG();
??? nextsymbol(); /* skip left parenthesis */

I also have not been able to activate the debug mode of bREXX, though I thought I followed the directions.

?... Mark S.
Boy, do I feel stupid today.

Join [email protected] to automatically receive all group messages.