mirror of
https://github.com/johnkerl/miller.git
synced 2026-07-18 00:45:47 +00:00
Replace GOCC parser-generator with PGPG (#2015)
* Porting * Update some tests that depend on AST-print output * iterating on GOCC -> PGPG * iterating * iterating * iterating * iterating * iterating * Modify expout files that need only AST-print-syntax updates * iterating * iterating * iterating * iterating * iterating * iterating * iterating * iterating * iterating * iterating * iterating * sync test cases from mlr-6.17.0, except AST-prints ... * sync test cases from mlr-6.17.0, except AST-prints ... * Fix lashed emit for $* and @* * Fix --1 and ++1 chained unary ops * Emit with function callsite * test cases * dot operator * M_PI and M_E * Iterating on lashed emit cases * error-wording differences * rm some should-fail files * Fix issue with leading semicolon * trailing comma in func params; most AST-print deltas * error-wording delta * fix unset all * AST-print deltas * go mod tidy: forced `go 1.25` to `go 1.25.0` * Depend on PGPG v1.0.0 * Fix Windows CI failure * Remove cmd/experiments/dsl_parser * GOCC -> PGPG * neaten * Fix regex issue found in doc gen
This commit is contained in:
parent
40f3a72de2
commit
af1adf80ad
732 changed files with 924001 additions and 1122928 deletions
|
|
@ -3820,5 +3820,5 @@ This is simply a copy of what you should see on running `man mlr` at a command p
|
|||
MIME Type for Comma-Separated Values (CSV) Files, the Miller docsite
|
||||
https://miller.readthedocs.io
|
||||
|
||||
2026-03-06 4mMILLER24m(1)
|
||||
2026-03-16 4mMILLER24m(1)
|
||||
</pre>
|
||||
|
|
|
|||
|
|
@ -3799,4 +3799,4 @@
|
|||
MIME Type for Comma-Separated Values (CSV) Files, the Miller docsite
|
||||
https://miller.readthedocs.io
|
||||
|
||||
2026-03-06 4mMILLER24m(1)
|
||||
2026-03-16 4mMILLER24m(1)
|
||||
|
|
|
|||
|
|
@ -64,12 +64,7 @@ error.
|
|||
</pre>
|
||||
<pre class="pre-non-highlight-in-pair">
|
||||
mlr: cannot parse DSL expression.
|
||||
mlr: Parse error on token "$y" at line 6 column 3.
|
||||
Please check for missing semicolon.
|
||||
Expected one of:
|
||||
␚ ; > >> | ? || ^^ && =~ !=~ == != <=> >= < <= ^ & << >>> + - .+ .- *
|
||||
/ // % .* ./ .// . ?? ??? ** [
|
||||
|
||||
mlr: parse error: unexpected field_name ("$y")
|
||||
</pre>
|
||||
|
||||
## elif
|
||||
|
|
|
|||
|
|
@ -776,12 +776,7 @@ As of September 2021, immediately invoked function expressions (IIFEs) are not p
|
|||
</pre>
|
||||
<pre class="pre-non-highlight-in-pair">
|
||||
mlr: cannot parse DSL expression.
|
||||
mlr: Parse error on token "(" at line 4 column 35.
|
||||
Please check for missing semicolon.
|
||||
Expected one of:
|
||||
; } > >> | ? || ^^ && =~ !=~ == != <=> >= < <= ^ & << >>> + - .+ .- * /
|
||||
// % .* ./ .// . ?? ??? **
|
||||
|
||||
mlr: parse error: unexpected lparen ("(")
|
||||
</pre>
|
||||
|
||||
but this does:
|
||||
|
|
|
|||
|
|
@ -457,7 +457,7 @@ to files.
|
|||
Keep in mind that out-of-stream variables are a nested, multi-level [map](reference-main-maps.md) (directly viewable as JSON using `dump`), while Miller record values are as well during processing -- but records may be flattened down for output to tabular formats. See the page [Flatten/unflatten: JSON vs. tabular formats](flatten-unflatten.md) for more information.
|
||||
|
||||
* You can use `emit1` to emit any map-valued expression, including `$*`, map-valued out-of-stream variables, the entire out-of-stream-variable collection `@*`, map-valued local variables, map literals, or map-valued function return values.
|
||||
* For `emit`, `emitp`, and `emitf`, you can emit map-valued local variables, map-valued field attributes (with `$`), map-va out-of-stream variables (with `@`), `$*`, `@*`, or map literals (with outermost `{...}`) -- but not arbitrary expressions which evaluate to map (such as function return values).
|
||||
* For `emit`, `emitp`, and `emitf`, you can emit map-valued local variables, map-valued field attributes (with `$`), map-valued out-of-stream variables (with `@`), `$*`, `@*`, map literals (with outermost `{...}`), or map-valued function return values (e.g. `emit f($a, $b)`).
|
||||
|
||||
The reason for this is partly historical and partly technical. As we'll see below, you can do lots of syntactical things with `emit`, `emitp`, and `emitf`, including printing them side-by-side, indexing them, redirecting the output to files, etc. What this means syntactically is that Miller's parser needs to handle all sorts of commas, parentheses, and so on:
|
||||
|
||||
|
|
|
|||
|
|
@ -209,7 +209,7 @@ to files.
|
|||
Keep in mind that out-of-stream variables are a nested, multi-level [map](reference-main-maps.md) (directly viewable as JSON using `dump`), while Miller record values are as well during processing -- but records may be flattened down for output to tabular formats. See the page [Flatten/unflatten: JSON vs. tabular formats](flatten-unflatten.md) for more information.
|
||||
|
||||
* You can use `emit1` to emit any map-valued expression, including `$*`, map-valued out-of-stream variables, the entire out-of-stream-variable collection `@*`, map-valued local variables, map literals, or map-valued function return values.
|
||||
* For `emit`, `emitp`, and `emitf`, you can emit map-valued local variables, map-valued field attributes (with `$`), map-va out-of-stream variables (with `@`), `$*`, `@*`, or map literals (with outermost `{...}`) -- but not arbitrary expressions which evaluate to map (such as function return values).
|
||||
* For `emit`, `emitp`, and `emitf`, you can emit map-valued local variables, map-valued field attributes (with `$`), map-valued out-of-stream variables (with `@`), `$*`, `@*`, map literals (with outermost `{...}`), or map-valued function return values (e.g. `emit f($a, $b)`).
|
||||
|
||||
The reason for this is partly historical and partly technical. As we'll see below, you can do lots of syntactical things with `emit`, `emitp`, and `emitf`, including printing them side-by-side, indexing them, redirecting the output to files, etc. What this means syntactically is that Miller's parser needs to handle all sorts of commas, parentheses, and so on:
|
||||
|
||||
|
|
|
|||
|
|
@ -383,7 +383,8 @@ ASCII character classes:
|
|||
[[:word:]] word characters (== [0-9A-Za-z_])
|
||||
[[:xdigit:]] hex digit (== [0-9A-Fa-f])
|
||||
|
||||
Unicode character classes are those in unicode.Categories and unicode.Scripts.
|
||||
Unicode character classes are those in unicode.Categories,
|
||||
unicode.CategoryAliases, and unicode.Scripts.
|
||||
|
||||
func IsWordChar(r rune) bool
|
||||
type EmptyOp uint8
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue