| Commit | Date | |
|---|---|---|
|
[r13026]
by
mikeaubury
Honour DBMONEY for MONEY formatting. The runtime never read DBMONEY, so the currency symbol and decimal DBMONEY=DM, -> DM1234,56 resource.c carries an internal default of "#." for DBMONEY, so only a A symbol longer than one byte (DM, or £ in UTF-8) takes the extra from Suite: 1099 run, 32 failed, unchanged from r13025. Test 240 still fails |
2026-08-31 18:47:23 | Tree |
| 2026-08-31 17:39:09 | Tree | |
|
[r13024]
by
mikeaubury
Fix NCHAR/NVCHAR handling of multi byte (UTF-8) data. Bytes, characters and display columns were all being treated as one - subscripts and padding now work in characters; truncation no longer Adds A4GL_COLLATE (off by default) to order comparisons with strcoll. ASCII behaviour is unchanged. Suite: 1098 run, 32 failed, against 33 |
2026-08-31 17:38:44 | Tree |
|
[r13023]
by
mikeaubury
4glc: two parsing hot spots - 4glc is now about a third faster Profiled 4glc compiling a 7737 line module (callgrind, since perf is not 1. A4GL_get_current_comments() declared char buff[200000]=""; An initialiser on an array that size makes the compiler zero all 200KB on 2. FGLPARSE_allow_token_state() was the linear scan version. The token groups 7737 lines: 0.58s -> 0.39s Both verified. The comment change was A/B'd on the path that actually uses What is left is the semantic value stack. The %union carries char str[12288], |
2026-08-31 16:03:50 | Tree |
|
[r13022]
by
mikeaubury
4glc: build the keyword state table from bison --xml, keep y.output as fallback The per-state "which tokens can the parser accept here" table was scraped out bison's --xml report carries exactly the same information, including the --xml is not in every bison and passing -x to one without it is fatal, so The script is now two small extractors - one for XML, one for y.output - Also made the group dedup deterministic. The key was built by "for (a in arr)", Verified: both routes produce the same mk_states.c, full build clean, and the |
2026-08-31 15:30:46 | Tree |
|
[r13021]
by
mikeaubury
4glc: record why the keyword/identifier table is scraped from y.output Reading bison's y.output to build the per-state token table looks like it Those tables only carry a state's EXPLICIT actions. A token that is acceptable 1025 module_globals_section: actual_globals_section . [$end, KW_CSTART, ... Only GLOBALS has a yypact entry, but MAIN, FUNCTION, DEFINE and the rest are Answering the question from the tables alone would mean following default So the y.output dependency is not a shortcut, it is the only route to the No functional change. |
2026-08-31 14:53:37 | Tree |
|
[r13020]
by
mikeaubury
4glc: emit the last parser state's token group, and bounds check the lookup mk_states_c builds the per-state "which keyword tokens can the parser accept With the current grammar that is 4732 states (0-4731) described by 4731 The per-state flush is now a function called from both the state header and Also added a bounds check. An out of range state now returns 1 (treat the word The same two changes are made in mk_states_opt.c, which generates the bsearch No behaviour change, as expected for a state that was never consulted: the full |
2026-08-31 14:46:26 | Tree |
|
[r13019]
by
mikeaubury
P-code: fix the typedef rule reading its type through the wrong union member The TYPEDEF rule passed $<define_variables>2 for a dtype, but dtype yields A typedef name is only ever used as a pointer target or a sizeof operand, and Two things fell out of testing it: * dtype had no pointer form for a typedef name, so "_dynelem_aa *aa=0;" - which * add_default_struct_list() was static; it is now exported so the rule can build Also removed three leftover debug printfs that went to stdout on every typedef The p-code corpus run is now 28 passing with a single compile failure left - a Grammar and lexer only; the C code generator is untouched. Full build clean, |
2026-08-31 14:18:43 | Tree |
|
[r13018]
by
mikeaubury
P-code: clear the remaining C-generation syntax errors Nine tests in the aubit4gltest corpus failed to get through c2pcode with a Most of this is on the code generation side rather than the grammar, since we * _dtype_hint was declared just before its use in the PROMPT block, after * "a4gl_sqlca.sqlcode = a4gl_status = _fetcherr" is a chained assignment, and * The generated event list declared aclfgl_event_list _sio_evt[n+1] where n * The ERR_CHK_* names are macros, and p-code skips every '#' line, so it saw Two additions to the grammar itself, both of which leave the conflict count * "struct BINDING *reread" - dtype folds pointers into the type for CHAR, INT, * sizeof of a TYPE rather than an expression, as in * A trailing comma in a brace initialiser list, which C allows and every Still failing to compile: one module using a typedef (the grammar's TYPEDEF Verified: full aubit4gltest run unchanged against the r13015 baseline - the |
2026-08-31 14:09:15 | Tree |
|
[r13017]
by
mikeaubury
P-code: register struct s_field_name and s_field_name_list Same gap as sDependantTable - these are emitted into generated code for field Found by running the aubit4gltest corpus through the p-code pipeline using each |
2026-08-31 12:51:48 | Tree |