Skip to content

[codex] Add grammar-driven C# parity support - #182

Merged
tinovyatkin merged 1 commit into
mainfrom
codex/csharp-grammar-driven-parity
Jul 24, 2026
Merged

[codex] Add grammar-driven C# parity support#182
tinovyatkin merged 1 commit into
mainfrom
codex/csharp-grammar-driven-parity

Conversation

@tinovyatkin

@tinovyatkin tinovyatkin commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Fixes #109

Summary

  • expose grammar-agnostic typed lexer lifecycle callbacks and structural channel/mode constants for generated lexers with superclass support
  • move parser helper behavior into reusable semantic-pattern lowerings instead of recognizing C# helper names in generic codegen
  • add benchmark-owned C# lexer support for interpolation and preprocessor directives, and generate it under strict full-semantics checks
  • include C# in the Rust/Go AST parity CI matrix and refresh the checked-in self-hosted frontend

Root cause

The divergence was not an ATN prediction difference. The Go target's CSharpLexerBase.NextToken consumes directive lines, evaluates preprocessor conditions, and skips inactive source before normal lexing resumes. The Rust benchmark generated the grammar without an equivalent lifecycle extension, so inactive Mono source remained in the token stream and produced a larger CST.

The Rust support now implements that state machine through generated lifecycle hooks. Inactive sections are consumed directly from the character stream, including nested conditionals, so malformed inactive source is never tokenized as C#.

Grammar-agnostic boundary

Generic runtime/codegen contains no C# grammar, rule, helper, or file names. It only exposes lifecycle callbacks from grammar metadata, emits structurally numbered channel/mode constants, and supports generic token_index_adjacent and context-child-text predicate lowerings. C# helper mappings and state live in patterns/csharp.toml and tools/parse-bench/rust-support/csharp_lexer_base.rs.

Validation

  • cargo test --locked --all-targets --all-features
  • cargo clippy --locked --all-targets --all-features -- -D warnings
  • python3 -m unittest tools/parse-bench/test_run.py (17 passed)
  • full Kotlin/C#/Java/Trino Rust-vs-Go AST matrix (18 fixtures byte-identical)
  • focused C# AST matrix (all 4 repository fixtures byte-identical)
  • synthetic C# checks for boolean directives, nested inactive blocks, EOF without newline, malformed inactive source, and interpolation
  • ANTLR runtime testsuite: 357 passed, 0 failed, 0 skipped
  • tools/grammar-frontend/update-stage0.sh --check (Stage 1/Stage 2 byte-identical; corpus checks pass)
  • shasum -a 256 -c third_party/antlr-v4-grammar/self-hosted.sha256

Summary by CodeRabbit

  • New Features

    • Added C# grammar support, including interpolated strings, preprocessor directives, semantic predicates, and lexer hooks.
    • Improved generated lexer support for grammar channels, modes, superclass behavior, and typed lifecycle hooks.
    • C# now passes Rust-versus-Go AST parity benchmarks.
  • Documentation

    • Updated benchmark guidance and examples to include C# coverage.
  • Tests

    • Added coverage for C# code generation, typed lexer support, and lexer superclass behavior.

@coderabbitai

coderabbitai Bot commented Jul 24, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

Adds C# semantic helper patterns, typed lexer lifecycle generation, channel and mode constants, a C# preprocessing support module, strict Rust code generation, and C# inclusion in the Rust/Go AST parity benchmark.

Changes

C# semantic pattern lowering

Layer / File(s) Summary
Semantic pattern lowering and predicate validation
patterns/csharp.toml, src/bin/antlr4-rust-gen.rs
Adds C# lexer actions, lexer predicates, and parser predicates, including structural lowering for local-variable and shift-related constructs.
Generated lexer lifecycle and state contracts
src/bin/antlr4-rust-gen.rs, tests/fixtures/antlr4-rust-gen/lexer-superclass/L.g4, third_party/antlr-v4-grammar/self-hosted.sha256
Generates channel/mode constants and typed lexer lifecycle adapters for lexer superclasses, with collision handling and associated tests and digest updates.
C# preprocessing and parse-bench integration
tools/parse-bench/run.py, tools/parse-bench/rust-support/csharp_lexer_base.rs, tools/parse-bench/test_run.py, .github/workflows/parse-bench.yml, tools/parse-bench/README.md
Configures strict C# semantic generation, wires typed lexer support into generated runners, implements directive and interpolation handling, and enables C# AST parity checks.
Estimated code review effort: 4 (Complex) ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant ParseBench
  participant RustGenerator
  participant GeneratedLexer
  participant CSharpLexerBase
  participant ASTParity
  ParseBench->>RustGenerator: Generate C# Rust modules with semantic configuration
  RustGenerator->>GeneratedLexer: Emit typed hooks and channel/mode constants
  ParseBench->>GeneratedLexer: Construct lexer with typed hooks
  GeneratedLexer->>CSharpLexerBase: Process directives and lexer lifecycle events
  GeneratedLexer->>ASTParity: Produce C# parse tree for comparison
Loading

Possibly related PRs

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 33.33% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title is concise and accurately summarizes the main change: grammar-driven C# parity support.
Linked Issues check ✅ Passed The changes add C# lexer support, include C# in the parity workflow, and document the parity fix, matching #109.
Out of Scope Changes check ✅ Passed No clearly unrelated changes are introduced; the docs, tests, and self-hosted digest update all support the C# parity work.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/csharp-grammar-driven-parity

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@claude

claude Bot commented Jul 24, 2026

Copy link
Copy Markdown

Claude finished @tinovyatkin's task in 23m 15s —— View job


Code review

No blocking issues found. I reviewed the full diff for bugs and CLAUDE.md compliance (my own pass plus four independent sub-reviews: two CLAUDE.md-compliance, two bug-hunting). The change is well-scoped and the "grammar-agnostic boundary" claim in the PR body holds up — generic codegen/runtime carry no C# grammar, rule, or file names.

What I verified

Runtime API surface (the main compile-risk area). tools/parse-bench/rust-support/csharp_lexer_base.rs calls into LexerLifecycleCtx and LexerSemCtx. All methods it uses exist on the correct type — LexerLifecycleCtx owns input_position, accepted_text, set_token_start, enqueue_token_with_channel, la/consume/skip/token_type/channel (src/lexer.rs), and LexerSemCtx owns set_mode/pop_mode/la/skip. The SemanticHooks lifecycle methods (lexer_reset, lexer_before_token, lexer_after_accept, lexer_token_emitted) already exist in src/parser.rs, so the newly-generated adapter forwards compile cleanly.

C# preprocessor state machine. Traced the conditions/taken stacks across nested #if/#elif/#else/#endif — push/pop stay balanced, and #elif/#else correctly recompute outer = is_active() against the parent scope after popping. skip_false_block depth accounting is correct (breaks on the terminator without consuming it, so normal lexing resumes on the directive), and the enqueued SKIPPED_SECTION span ([token_start, input_position-1], guarded by start <= stop) is right. The boolean evaluate parser's precedence (! > ==/!= > && > ||) matches the C# spec pp_expression grammar, and the parse_and()/parse_eq() operand ordering deliberately keeps the position-advancing parse on the non-short-circuiting side. Interpolation curly/level accounting uses saturating_sub and paired push/pop.

Codegen changes (src/bin/antlr4-rust-gen.rs). parse_pattern_ctx_rule_text_not_equals correctly extracts rule_name/text from cmp(ne, ctx_rule_text(NAME), str("TEXT")); RESERVED_METHODS prevents a helper named after a lifecycle hook from producing a duplicate trait method; needs_typed_hook_adapter compensates for the removed empty-guard in render_lexer_typed_hook_adapter; render_lexer_state_constants iterates BTreeMaps (deterministic output). Removing the hardcoded parse_csharp_parser_predicate is fully covered by the patterns/csharp.toml path.

Python harness (run.py). shutil is imported; support modules are keyed by source.stem (csharp_lexer_base), copied to src/{source.name} (csharp_lexer_base.rs), and declared as mod csharp_lexer_base; at crate root — these agree because stem + ".rs" == name. The --sem-patterns/--option-hook/--sem-unknown error/--require-full-semantics wiring matches the test_run.py assertions, and dropping --allow-unsupported-lexer-actions is safe (C# actions lower to hooks; Kotlin uses portable commands).

CLAUDE.md compliance. The mod tests block already carries #[allow(clippy::disallowed_methods)] // insta …; new tests use only allowed insta macros with named external snapshots; .expect() (not .unwrap()) is used and allow-expect-in-tests = true; the regenerated files retain #[rustfmt::skip]; snapshots are deterministic (BTreeMap, not HashMap). The three .snap files are internally consistent with the emitting code, and the generated-frontend regeneration (v0.14.2 → v0.15.2, adding per-context text() accessors + lexer lifecycle hooks) is coherent with the codegen.

Notes (non-blocking)

  • A few names the C# base imports from the generated lexer (CHANNEL_COMMENTS_CHANNEL, CHANNEL_DIRECTIVE, MODE_INTERPOLATION_FORMAT, and tokens like SKIPPED_SECTION/CONDITIONAL_SYMBOL) depend on the pinned grammars-v4 csharp/v7 grammar defining those channels/modes/tokens. That isn't checked into this repo, so it's validated only by the parse-bench CI job (which the PR reports passing byte-identical) rather than by anything in-tree — worth keeping in mind if that grammar pin is ever bumped.

Nice work — the refactor from name-recognition to pattern lowering plus benchmark-owned state is a clean way to keep the generic path grammar-agnostic.


  • Gather context (diff, CLAUDE.md files, key sources)
  • Review antlr4-rust-gen.rs codegen changes
  • Review csharp_lexer_base.rs state machine
  • Review run.py / patterns/csharp.toml / generated code
  • Validate candidate findings (none surfaced)
  • Post consolidated review

@github-actions

Copy link
Copy Markdown

📊 Source Code Metrics (this PR vs main)

File Cyclomatic Cognitive Functions LLOC MI
src/bin/antlr4-rust-gen.rs 2246 (main: 2234) 🔴 1418 (main: 1411) 🔴 497 (main: 492) 🔴 3931 (main: 3905) 🔴 0 ⚪

Generated by mehen v1.6.0 — the code quality watcher.

@codecov

codecov Bot commented Jul 24, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 99.17355% with 1 line in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/bin/antlr4-rust-gen.rs 99.17% 1 Missing ⚠️

📢 Thoughts on this report? Let us know!

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@tools/parse-bench/rust-support/csharp_lexer_base.rs`:
- Around line 383-396: Update parse_eq to repeatedly consume equality operators
after the initial parse_unary result, applying each == or != comparison to the
accumulated value and the next unary operand. Preserve the existing behavior
when no operator is present, and ensure chained expressions consume all equality
tokens.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: eb21cb04-0f57-47fc-879f-6fd3f49c6263

📥 Commits

Reviewing files that changed from the base of the PR and between df87d66 and abab0e7.

⛔ Files ignored due to path filters (5)
  • src/bin/snapshots/antlr4_rust_gen__tests__parses_supported_predicate_helpers.snap is excluded by !**/*.snap
  • src/bin/snapshots/antlr4_rust_gen__tests__structural_channel_and_mode_constants.snap is excluded by !**/*.snap
  • src/bin/snapshots/antlr4_rust_gen__tests__structural_parser_predicate_patterns.snap is excluded by !**/*.snap
  • src/bin_support/grammar/generated/antlr_v4_lexer.rs is excluded by !**/generated/**
  • src/bin_support/grammar/generated/antlr_v4_parser.rs is excluded by !**/generated/**
📒 Files selected for processing (9)
  • .github/workflows/parse-bench.yml
  • patterns/csharp.toml
  • src/bin/antlr4-rust-gen.rs
  • tests/fixtures/antlr4-rust-gen/lexer-superclass/L.g4
  • third_party/antlr-v4-grammar/self-hosted.sha256
  • tools/parse-bench/README.md
  • tools/parse-bench/run.py
  • tools/parse-bench/rust-support/csharp_lexer_base.rs
  • tools/parse-bench/test_run.py

Comment on lines +383 to +396
fn parse_eq(&mut self) -> bool {
let value = self.parse_unary();
match self.peek() {
Some(OP_EQ) => {
let _ = self.consume();
value == self.parse_unary()
}
Some(OP_NE) => {
let _ = self.consume();
value != self.parse_unary()
}
_ => value,
}
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

parse_eq handles only a single equality operator, not chained ==/!=.

C#'s pp_equality_expression is pp_unary_expression ((== | !=) pp_unary_expression)*. Here only one operator is consumed, so #if A == B == C parses A == B and silently leaves == C unconsumed, yielding a wrong condition (and unconsumed tokens). Chaining is rare but legal; a loop matches the other levels.

🐛 Proposed fix
     fn parse_eq(&mut self) -> bool {
-        let value = self.parse_unary();
-        match self.peek() {
-            Some(OP_EQ) => {
-                let _ = self.consume();
-                value == self.parse_unary()
-            }
-            Some(OP_NE) => {
-                let _ = self.consume();
-                value != self.parse_unary()
-            }
-            _ => value,
-        }
+        let mut value = self.parse_unary();
+        loop {
+            match self.peek() {
+                Some(OP_EQ) => {
+                    let _ = self.consume();
+                    value = value == self.parse_unary();
+                }
+                Some(OP_NE) => {
+                    let _ = self.consume();
+                    value = value != self.parse_unary();
+                }
+                _ => break,
+            }
+        }
+        value
     }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
fn parse_eq(&mut self) -> bool {
let value = self.parse_unary();
match self.peek() {
Some(OP_EQ) => {
let _ = self.consume();
value == self.parse_unary()
}
Some(OP_NE) => {
let _ = self.consume();
value != self.parse_unary()
}
_ => value,
}
}
fn parse_eq(&mut self) -> bool {
let mut value = self.parse_unary();
loop {
match self.peek() {
Some(OP_EQ) => {
let _ = self.consume();
value = value == self.parse_unary();
}
Some(OP_NE) => {
let _ = self.consume();
value = value != self.parse_unary();
}
_ => break,
}
}
value
}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tools/parse-bench/rust-support/csharp_lexer_base.rs` around lines 383 - 396,
Update parse_eq to repeatedly consume equality operators after the initial
parse_unary result, applying each == or != comparison to the accumulated value
and the next unary operand. Preserve the existing behavior when no operator is
present, and ensure chained expressions consume all equality tokens.

@github-actions

Copy link
Copy Markdown

Copy/Paste Detection

Found 1815 duplication(s) across 4 changed Rust file(s) (threshold: 100 tokens).

Show duplications

Found a 5 line (823 tokens) duplication in the following files:

  • Starting at line 103 of src/bin_support/grammar/generated/antlr_v4_lexer.rs
  • Starting at line 166 of src/bin_support/grammar/generated/antlr_v4_parser.rs
    &["DOC_COMMENT", "BLOCK_COMMENT", "LINE_COMMENT", "INT", "STRING_LITERAL", "UNTERMINATED_STRING_LITERAL", "BEGIN_ARGUMENT", "ACTION", "NESTED_ACTION", "OPTIONS", "TOKENS", "CHANNELS", "IMPORT", "FRAGMENT", "LEXER", "PARSER", "GRAMMAR", "PROTECTED", "PUBLIC", "PRIVATE", "RETURNS", "LOCALS", "THROWS", "CATCH", "FINALLY", "MODE", "COLON", "COLONCOLON", "COMMA", "SEMI", "LPAREN", "RPAREN", "RBRACE", "RARROW", "LT", "GT", "ASSIGN", "QUESTION", "STAR", "PLUS_ASSIGN", "PLUS", "OR", "DOLLAR", "RANGE", "DOT", "AT", "POUND", "NOT", "ID", "WS", "NESTED_ARGUMENT", "ARGUMENT_ESCAPE", "ARGUMENT_STRING_LITERAL", "ARGUMENT_CHAR_LITERAL", "END_ARGUMENT", "UNTERMINATED_ARGUMENT", "ARGUMENT_CONTENT", "LEXER_CHAR_SET_BODY", "LEXER_CHAR_SET", "UNTERMINATED_CHAR_SET", "ESC_SEQUENCE", "HexDigit", "UnicodeESC", "DoubleQuoteLiteral", "TripleQuoteLiteral", "BacktickQuoteLiteral", "NameChar", "NameStartChar"],
    &[None, None, None, None, None, None, None, Some("\'=\'"), None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, Some("\'[\'"), None, None, None, Some("\'import\'"), Some("\'fragment\'"), Some("\'lexer\'"), Some("\'parser\'"), Some("\'grammar\'"), Some("\'protected\'"), Some("\'public\'"), Some("\'private\'"), Some("\'returns\'"), Some("\'locals\'"), Some("\'throws\'"), Some("\'catch\'"), Some("\'finally\'"), Some("\'mode\'"), Some("\':\'"), Some("\'::\'"), Some("\',\'"), Some("\';\'"), Some("\'(\'"), Some("\')\'"), Some("\'}\'"), Some("\'->\'"), Some("\'<\'"), Some("\'>\'"), Some("\'?\'"), Some("\'*\'"), Some("\'+=\'"), Some("\'+\'"), Some("\'|\'"), Some("\'$\'"), Some("\'..\'"), Some("\'.\'"), Some("\'@\'"), Some("\'#\'"), Some("\'~\'"), None, None, None, None, None],
    &[None, None, None, None, Some("ACTION"), Some("ARG_ACTION"), Some("ARG_OR_CHARSET"), Some("ASSIGN"), Some("LEXER_CHAR_SET"), Some("RULE_REF"), Some("SEMPRED"), Some("STRING_LITERAL"), Some("TOKEN_REF"), Some("UNICODE_ESC"), Some("UNICODE_EXTENDED_ESC"), Some("WS"), Some("ALT"), Some("BLOCK"), Some("CLOSURE"), Some("ELEMENT_OPTIONS"), Some("EPSILON"), Some("LEXER_ACTION_CALL"), Some("LEXER_ALT_ACTION"), Some("OPTIONAL"), Some("POSITIVE_CLOSURE"), Some("RULE"), Some("RULEMODIFIERS"), Some("RULES"), Some("SET"), Some("WILDCARD"), Some("DOC_COMMENT"), Some("BLOCK_COMMENT"), Some("LINE_COMMENT"), Some("INT"), Some("UNTERMINATED_STRING_LITERAL"), Some("BEGIN_ARGUMENT"), Some("OPTIONS"), Some("TOKENS"), Some("CHANNELS"), Some("IMPORT"), Some("FRAGMENT"), Some("LEXER"), Some("PARSER"), Some("GRAMMAR"), Some("PROTECTED"), Some("PUBLIC"), Some("PRIVATE"), Some("RETURNS"), Some("LOCALS"), Some("THROWS"), Some("CATCH"), Some("FINALLY"), Some("MODE"), Some("COLON"), Some("COLONCOLON"), Some("COMMA"), Some("SEMI"), Some("LPAREN"), Some("RPAREN"), Some("RBRACE"), Some("RARROW"), Some("LT"), Some("GT"), Some("QUESTION"), Some("STAR"), Some("PLUS_ASSIGN"), Some("PLUS"), Some("OR"), Some("DOLLAR"), Some("RANGE"), Some("DOT"), Some("AT"), Some("POUND"), Some("NOT"), Some("ID"), Some("END_ARGUMENT"), Some("UNTERMINATED_ARGUMENT"), Some("ARGUMENT_CONTENT"), Some("UNTERMINATED_CHAR_SET")],
    &[None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None],
    &["DEFAULT_TOKEN_CHANNEL", "HIDDEN", "", "", "OFF_CHANNEL", "COMMENT"],
```rust

---

Found a 80 line (613 tokens) duplication in the following files:
* Starting at line 14 of src/bin_support/grammar/generated/antlr_v4_lexer.rs
* Starting at line 16 of src/bin_support/grammar/generated/antlr_v4_parser.rs

```rust
use std::sync::OnceLock;

pub const EOF: i32 = antlr4_runtime::TOKEN_EOF;
pub const ACTION: i32 = 4;
pub const ARG_ACTION: i32 = 5;
pub const ARG_OR_CHARSET: i32 = 6;
pub const ASSIGN: i32 = 7;
pub const LEXER_CHAR_SET: i32 = 8;
pub const RULE_REF: i32 = 9;
pub const SEMPRED: i32 = 10;
pub const STRING_LITERAL: i32 = 11;
pub const TOKEN_REF: i32 = 12;
pub const UNICODE_ESC: i32 = 13;
pub const UNICODE_EXTENDED_ESC: i32 = 14;
pub const WS: i32 = 15;
pub const ALT: i32 = 16;
pub const BLOCK: i32 = 17;
pub const CLOSURE: i32 = 18;
pub const ELEMENT_OPTIONS: i32 = 19;
pub const EPSILON: i32 = 20;
pub const LEXER_ACTION_CALL: i32 = 21;
pub const LEXER_ALT_ACTION: i32 = 22;
pub const OPTIONAL: i32 = 23;
pub const POSITIVE_CLOSURE: i32 = 24;
pub const RULE: i32 = 25;
pub const RULEMODIFIERS: i32 = 26;
pub const RULES: i32 = 27;
pub const SET: i32 = 28;
pub const WILDCARD: i32 = 29;
pub const DOC_COMMENT: i32 = 30;
pub const BLOCK_COMMENT: i32 = 31;
pub const LINE_COMMENT: i32 = 32;
pub const INT: i32 = 33;
pub const UNTERMINATED_STRING_LITERAL: i32 = 34;
pub const BEGIN_ARGUMENT: i32 = 35;
pub const OPTIONS: i32 = 36;
pub const TOKENS: i32 = 37;
pub const CHANNELS: i32 = 38;
pub const IMPORT: i32 = 39;
pub const FRAGMENT: i32 = 40;
pub const LEXER: i32 = 41;
pub const PARSER: i32 = 42;
pub const GRAMMAR: i32 = 43;
pub const PROTECTED: i32 = 44;
pub const PUBLIC: i32 = 45;
pub const PRIVATE: i32 = 46;
pub const RETURNS: i32 = 47;
pub const LOCALS: i32 = 48;
pub const THROWS: i32 = 49;
pub const CATCH: i32 = 50;
pub const FINALLY: i32 = 51;
pub const MODE: i32 = 52;
pub const COLON: i32 = 53;
pub const COLONCOLON: i32 = 54;
pub const COMMA: i32 = 55;
pub const SEMI: i32 = 56;
pub const LPAREN: i32 = 57;
pub const RPAREN: i32 = 58;
pub const RBRACE: i32 = 59;
pub const RARROW: i32 = 60;
pub const LT: i32 = 61;
pub const GT: i32 = 62;
pub const QUESTION: i32 = 63;
pub const STAR: i32 = 64;
pub const PLUS_ASSIGN: i32 = 65;
pub const PLUS: i32 = 66;
pub const OR: i32 = 67;
pub const DOLLAR: i32 = 68;
pub const RANGE: i32 = 69;
pub const DOT: i32 = 70;
pub const AT: i32 = 71;
pub const POUND: i32 = 72;
pub const NOT: i32 = 73;
pub const ID: i32 = 74;
pub const END_ARGUMENT: i32 = 75;
pub const UNTERMINATED_ARGUMENT: i32 = 76;
pub const ARGUMENT_CONTENT: i32 = 77;
pub const UNTERMINATED_CHAR_SET: i32 = 78;

pub const CHANNEL_COMMENT: i32 = 3;

Found a 1 line (391 tokens) duplication in the following files:

  • Starting at line 220 of src/bin_support/grammar/generated/antlr_v4_lexer.rs
  • Starting at line 220 of src/bin_support/grammar/generated/antlr_v4_lexer.rs
static LEXER_DFA_DATA: &[u32] = &[1280852999,3,0,4096,4133,4138,0,0,65535,4294967295,1,1,65535,0,2,1,65535,1,2,1,65535,2,3,2,65535,3,2,1,65535,4,2,1,65535,5,2,1,65535,6,4,1,65535,7,2,1,65535,8,5,1,65535,4294967295,6,1,65535,9,7,1,65535,4294967295,2,1,65535,10,8,1,65535,11,9,1,65535,12,2,1,65535,13,2,1,65535,14,2,1,65535,15,2,1,65535,16,2,1,65535,17,2,1,65535,18,10,3,65535,19,2,1,65535,20,11,3,65535,21,12,3,65535,22,13,3,65535,23,14,3,65535,24,15,3,65535,25,16,3,65535,26,17,3,65535,27,18,3,65535,28,19,3,65535,29,20,3,65535,30,21,4,65535,4294967295,2,1,65535,31,2,1,65535,32,2,1,65535,33,2,1,65535,34,22,2,68,4294967295,2,1,65535,35,2,1,65535,36,2,1,65535,37,23,5,70,4294967295,24,6,65535,38,2,1,65535,39,25,3,65535,40,26,3,65535,41,27,3,65535,42,28,3,65535,43,29,3,65535,44,30,3,65535,45,31,3,65535,46,32,3,65535,47,33,3,65535,48,34,3,65535,49,35,3,65535,50,36,3,65535,51,37,3,65535,52,38,3,65535,53,39,3,65535,54,40,3,65535,55,41,7,65535,4294967295,42,8,65535,4294967295,43,4,65535,4294967295,44,4,65535,4294967295,45,9,65535,4294967295,2,1,65535,56,46,10,65535,57,47,2,65535,58,2,1,65535,59,48,5,70,4294967295,49,11,102,4294967295,50,3,65535,60,51,3,65535,61,52,3,65535,62,53,3,65535,63,54,3,65535,64,55,3,65535,65,56,3,65535,66,57,3,65535,67,58,3,65535,68,59,3,65535,69,60,3,65535,70,61,3,65535,71,62,3,65535,72,63,3,65535,73,64,3,65535,74,65,3,65535,75,66,3,65535,76,67,7,65535,4294967295,68,4,65535,4294967295,69,7,124,4294967295,70,8,126,4294967295,71,12,65535,4294967295,72,13,65535,4294967295,73,9,142,4294967295,74,14,65535,4294967295,2,1,65535,77,75,10,68,4294967295,76,2,65535,78,77,5,70,4294967295,2,1,65535,79,78,11,102,4294967295,79,11,102,4294967295,80,15,152,80,81,3,65535,81,82,3,65535,82,83,3,65535,83,84,3,65535,84,85,3,65535,85,86,3,65535,86,87,3,65535,87,88,3,65535,88,10,3,65535,89,89,3,65535,90,90,3,65535,91,91,3,65535,92,92,3,65535,93,93,3,65535,94,94,3,65535,95,95,3,65535,96,96,3,65535,97,97,16,65535,4294967295,98,17,65535,4294967295,99,7,65535,4294967295,100,18,65535,4294967295,101,8,65535,4294967295,102,19,65535,4294967295,103,20,65535,4294967295,104,12,65535,4294967295,105,12,65535,4294967295,106,12,65535,4294967295,107,21,65535,4294967295,108,22,65535,98,109,13,65535,4294967295,110,23,65535,4294967295,111,24,65535,4294967295,112,25,65535,4294967295,109,13,65535,4294967295,113,26,65535,4294967295,109,13,65535,99,114,27,65535,4294967295,115,9,65535,4294967295,116,28,65535,4294967295,117,14,65535,4294967295,118,14,142,4294967295,119,29,65535,4294967295,120,10,65535,100,121,2,65535,101,2,1,65535,102,2,1,65535,103,2,1,65535,104,80,15,152,4294967295,122,15,152,4294967295,10,3,65535,105,123,3,65535,106,124,3,65535,107,125,3,65535,108,126,3,65535,109,127,3,65535,110,10,3,65535,111,128,3,65535,112,129,3,65535,113,130,3,65535,114,131,3,65535,115,132,3,65535,116,133,3,65535,117,134,3,65535,118,135,3,65535,119,136,3,65535,120,137,16,65535,4294967295,138,30,65535,4294967295,139,31,65535,4294967295,140,16,249,4294967295,141,32,65535,4294967295,142,17,124,4294967295,143,7,65535,4294967295,144,18,126,4294967295,145,8,65535,4294967295,146,19,65535,4294967295,108,22,65535,4294967295,147,12,65535,4294967295,148,19,65535,4294967295,149,19,124,4294967295,150,20,65535,4294967295,151,20,126,4294967295,152,33,65535,4294967295,153,34,65535,4294967295,154,21,65535,4294967295,155,21,142,4294967295,156,35,65535,4294967295,157,22,65535,4294967295,158,23,65535,4294967295,159,23,65535,4294967295,160,36,65535,4294967295,161,23,65535,4294967295,162,23,124,4294967295,163,37,65535,4294967295,164,38,65535,4294967295,165,24,65535,4294967295,166,24,126,4294967295,167,39,65535,4294967295,168,33,65535,4294967295,169,40,65535,4294967295,170,41,65535,4294967295,112,25,65535,4294967295,171,25,65535,4294967295,112,25,65535,4294967295,172,42,65535,4294967295,173,43,65535,4294967295,174,26,65535,4294967295,175,26,142,4294967295,176,27,142,4294967295,177,44,65535,4294967295,178,9,65535,4294967295,179,28,333,4294967295,180,45,65535,4294967295,181,14,65535,4294967295,182,46,65535,4294967295,183,29,65535,4294967295,184,29,142,4294967295,45,9,65535,121,185,10,65535,122,3,2,65535,123,2,1,65535,124,186,3,65535,125,187,3,65535,126,188,3,65535,127,189,3,65535,128,10,3,65535,129,10,3,65535,130,190,3,65535,131,10,3,65535,132,191,3,65535,133,192,3,65535,134,10,3,65535,135,193,3,65535,136,10,3,65535,137,194,3,65535,138,195,31,65535,4294967295,196,30,65535,4294967295,197,30,364,4294967295,198,31,65535,4294967295,199,16,65535,4294967295,200,47,65535,4294967295,201,31,65535,4294967295,202,31,364,4294967295,203,48,65535,4294967295,204,49,65535,4294967295,205,16,65535,4294967295,206,16,364,4294967295,207,16,65535,4294967295,208,17,65535,4294967295,209,32,65535,4294967295,210,32,65535,4294967295,2,1,65535,139,211,17,65535,4294967295,212,7,65535,4294967295,213,18,65535,4294967295,214,8,65535,4294967295,215,50,65535,4294967295,216,51,65535,4294967295,217,19,65535,4294967295,218,52,65535,4294967295,219,20,65535,4294967295,220,53,65535,4294967295,221,54,65535,4294967295,168,33,65535,4294967295,222,55,65535,4294967295,223,33,65535,4294967295,224,56,65535,4294967295,153,34,65535,4294967295,225,57,65535,4294967295,226,58,65535,4294967295,227,34,65535,4294967295,153,34,65535,4294967295,228,59,65535,4294967295,153,34,65535,140,229,60,65535,4294967295,230,21,65535,4294967295,231,61,65535,4294967295,232,35,65535,4294967295,233,35,65535,4294967295,234,35,142,4294967295,235,62,65535,4294967295,236,63,65535,4294967295,237,36,65535,4294967295,238,36,464,4294967295,239,64,65535,4294967295,240,65,65535,4294967295,241,66,65535,4294967295,158,23,65535,4294967295,242,23,65535,4294967295,243,67,65535,4294967295,244,37,65535,4294967295,245,37,484,4294967295,246,38,65535,4294967295,247,38,65535,4294967295,248,38,65535,4294967295,249,38,490,4294967295,250,68,65535,4294967295,251,69,65535,4294967295,252,70,65535,4294967295,111,24,65535,4294967295,253,24,65535,4294967295,254,39,65535,4294967295,255,39,507,4294967295,256,33,65535,4294967295,257,40,65535,4294967295,258,40,65535,4294967295,259,71,65535,4294967295,257,40,65535,4294967295,260,40,65535,4294967295,261,40,124,4294967295,262,72,65535,4294967295,263,73,65535,4294967295,170,41,65535,4294967295,264,41,65535,4294967295,265,41,126,4294967295,266,74,65535,4294967295,112,25,65535,4294967295,267,75,65535,4294967295,172,42,65535,4294967295,268,42,65535,4294967295,269,42,142,4294967295,270,43,65535,4294967295,271,43,333,4294967295,272,76,65535,4294967295,273,77,65535,4294967295,113,26,65535,4294967295,274,26,65535,4294967295,275,27,65535,4294967295,276,78,65535,4294967295,277,44,65535,4294967295,278,44,142,4294967295,279,79,65535,4294967295,280,9,65535,4294967295,281,28,65535,4294967295,282,80,65535,4294967295,283,81,65535,4294967295,284,45,65535,4294967295,285,82,333,4294967295,286,82,65535,4294967295,287,8,65535,141,288,14,65535,4294967295,289,46,507,4294967295,290,83,65535,4294967295,291,84,65535,4294967295,292,85,65535,4294967295,293,29,65535,4294967295,294,10,65535,142,295,3,65535,143,10,3,65535,144,296,3,65535,145,10,3,65535,146,297,3,65535,147,10,3,65535,148,298,3,65535,149,10,3,65535,150,299,1,65535,4294967295,2,1,65535,151,300,16,65535,4294967295,301,30,65535,4294967295,302,86,65535,4294967295,303,30,65535,4294967295,304,30,364,4294967295,305,30,65535,4294967295,300,16,65535,4294967295,306,31,65535,4294967295,307,47,65535,4294967295,308,47,610,4294967295,309,87,65535,4294967295,310,88,65535,4294967295,311,31,65535,4294967295,312,31,364,4294967295,313,31,65535,4294967295,314,48,629,4294967295,315,89,65535,4294967295,316,90,65535,4294967295,317,49,249,4294967295,318,31,65535,4294967295,319,16,65535,4294967295,320,16,65535,4294967295,321,32,65535,4294967295,322,91,65535,4294967295,323,92,65535,4294967295,324,17,65535,4294967295,67,7,65535,4294967295,325,18,65535,4294967295,42,8,65535,4294967295,326,50,65535,4294967295,327,93,65535,4294967295,328,87,65535,4294967295,329,50,65535,4294967295,330,50,249,4294967295,331,94,65535,4294967295,332,95,65535,4294967295,216,51,65535,4294967295,333,51,65535,4294967295,334,51,124,4294967295,335,96,65535,4294967295,336,19,65535,4294967295,337,97,65535,4294967295,338,98,65535,4294967295,218,52,65535,4294967295,339,52,65535,4294967295,340,52,126,4294967295,341,99,65535,4294967295,342,20,65535,4294967295,343,53,65535,4294967295,344,33,65535,4294967295,345,53,65535,4294967295,346,53,124,4294967295,347,54,65535,4294967295,348,54,126,4294967295,349,55,65535,4294967295,350,100,65535,4294967295,351,101,65535,4294967295,352,102,65535,4294967295,353,55,65535,4294967295,354,103,65535,4294967295,355,56,65535,4294967295,356,56,142,4294967295,357,104,65535,4294967295,358,57,65535,4294967295,359,57,65535,4294967295,360,105,65535,4294967295,361,57,65535,4294967295,358,57,65535,4294967295,362,57,124,4294967295,363,106,65535,4294967295,364,107,65535,4294967295,365,58,65535,4294967295,226,58,65535,4294967295,366,58,126,4294967295,367,108,65535,4294967295,349,55,65535,4294967295,368,109,65535,4294967295,369,59,65535,4294967295,228,59,65535,4294967295,370,59,142,4294967295,371,110,65535,4294967295,229,60,65535,4294967295,372,60,65535,4294967295,373,60,142,4294967295,374,21,65535,4294967295,375,61,65535,4294967295,376,61,333,4294967295,377,111,65535,4294967295,378,60,65535,4294967295,379,35,65535,4294967295,380,112,65535,4294967295,381,62,65535,4294967295,382,62,65535,4294967295,383,62,142,4294967295,107,21,65535,152,384,63,65535,4294967295,385,63,65535,4294967295,386,113,65535,4294967295,387,63,65535,4294967295,388,63,249,4294967295,389,114,65535,4294967295,390,115,65535,4294967295,391,116,65535,4294967295,392,117,65535,4294967295,160,36,65535,4294967295,393,36,65535,4294967295,394,64,65535,4294967295,395,64,829,4294967295,396,118,65535,4294967295,240,65,65535,4294967295,397,65,65535,4294967295,398,65,124,4294967295,399,119,65535,4294967295,400,120,65535,4294967295,401,80,65535,4294967295,402,66,65535,4294967295,403,66,124,4294967295,404,121,65535,4294967295,405,23,65535,4294967295,406,67,65535,4294967295,407,67,853,4294967295,408,122,65535,4294967295,409,123,65535,4294967295,410,124,65535,4294967295,163,37,65535,4294967295,411,37,65535,4294967295,412,125,65535,4294967295,413,126,65535,4294967295,414,127,65535,4294967295,415,128,65535,4294967295,246,38,65535,4294967295,416,38,65535,4294967295,417,68,65535,4294967295,418,68,887,4294967295,419,129,65535,4294967295,251,69,65535,4294967295,420,69,65535,4294967295,421,69,126,4294967295,422,130,65535,4294967295,423,131,65535,4294967295,424,132,65535,4294967295,425,70,65535,4294967295,426,70,126,4294967295,427,24,65535,4294967295,428,133,65535,4294967295,429,134,65535,4294967295,430,135,65535,4294967295,167,39,65535,4294967295,431,39,65535,4294967295,71,12,65535,4294967295,432,136,65535,4294967295,259,71,65535,4294967295,433,71,65535,4294967295,434,71,464,4294967295,435,137,65535,4294967295,240,65,65535,4294967295,436,138,65535,4294967295,257,40,65535,4294967295,437,40,65535,4294967295,438,139,65535,4294967295,262,72,65535,4294967295,439,72,65535,4294967295,440,72,484,4294967295,441,73,65535,4294967295,442,73,65535,4294967295,441,73,65535,4294967295,443,73,65535,4294967295,444,73,490,4294967295,445,140,65535,4294967295,251,69,65535,4294967295,446,141,65535,4294967295,170,41,65535,4294967295,447,41,65535,4294967295,266,74,65535,4294967295,448,74,65535,4294967295,449,74,507,4294967295,267,75,65535,4294967295,450,75,65535,4294967295,451,75,333,4294967295,272,76,65535,4294967295,452,142,65535,4294967295,172,42,65535,4294967295,453,42,65535,4294967295,454,143,65535,4294967295,455,144,65535,4294967295,173,43,65535,4294967295,456,43,65535,4294967295,457,145,65535,4294967295,272,76,65535,4294967295,458,76,65535,4294967295,459,76,142,4294967295,460,77,65535,4294967295,461,146,65535,4294967295,462,77,65535,4294967295,463,77,992,4294967295,464,26,65535,4294967295,465,27,65535,4294967295,466,78,333,4294967295,467,147,65535,4294967295,468,148,65535,4294967295,469,149,65535,4294967295,470,44,65535,4294967295,471,79,65535,4294967295,472,79,142,4294967295,114,27,65535,153,45,9,65535,4294967295,473,28,65535,4294967295,474,132,65535,4294967295,475,80,464,4294967295,476,81,65535,4294967295,477,81,333,4294967295,478,150,65535,4294967295,479,151,65535,4294967295,480,152,65535,4294967295,481,82,65535,4294967295,482,82,65535,4294967295,116,28,65535,154,483,14,65535,4294967295,484,46,65535,4294967295,485,83,65535,4294967295,486,83,507,4294967295,487,153,65535,4294967295,488,84,65535,4294967295,489,84,65535,4294967295,490,84,142,4294967295,224,56,65535,155,491,85,65535,4294967295,492,154,65535,4294967295,493,155,65535,4294967295,494,85,142,4294967295,495,156,65535,4294967295,491,85,65535,156,496,29,65535,4294967295,46,10,65535,157,497,3,65535,158,10,3,65535,159,498,1,65535,4294967295,2,1,65535,160,499,3,65535,161,500,31,65535,4294967295,501,31,65535,4294967295,502,86,65535,4294967295,503,86,364,4294967295,504,30,65535,4294967295,505,30,65535,4294967295,506,30,65535,4294967295,507,157,65535,4294967295,508,47,65535,4294967295,509,158,65535,4294967295,510,47,65535,4294967295,511,47,364,4294967295,512,47,65535,4294967295,513,50,65535,4294967295,514,159,65535,4294967295,515,87,65535,4294967295,516,87,65535,4294967295,517,87,364,4294967295,518,160,65535,4294967295,519,88,65535,4294967295,520,63,65535,4294967295,521,161,65535,4294967295,522,162,65535,4294967295,523,88,364,4294967295,524,163,65535,4294967295,300,16,65535,4294967295,525,31,65535,4294967295,526,31,65535,4294967295,527,164,65535,4294967295,528,48,65535,4294967295,529,48,364,4294967295,530,48,65535,4294967295,531,165,65535,4294967295,532,89,65535,4294967295,533,89,629,4294967295,534,166,65535,4294967295,535,90,65535,4294967295,536,49,65535,4294967295,537,90,65535,4294967295,538,90,364,4294967295,539,49,65535,4294967295,540,49,364,4294967295,541,49,65535,4294967295,542,157,65535,4294967295,543,16,65535,4294967295,544,16,65535,4294967295,545,49,65535,4294967295,546,167,65535,4294967295,547,168,65535,4294967295,548,91,65535,4294967295,549,91,65535,4294967295,550,91,65535,4294967295,551,169,65535,4294967295,552,170,65535,162,553,92,65535,4294967295,554,171,65535,4294967295,555,172,65535,4294967295,556,173,65535,4294967295,553,92,65535,4294967295,557,149,65535,4294967295,553,92,65535,163,558,17,65535,4294967295,559,18,65535,4294967295,560,87,65535,4294967295,561,93,65535,4294967295,562,93,65535,4294967295,563,93,364,4294967295,564,50,65535,4294967295,565,174,65535,4294967295,566,50,65535,4294967295,567,50,364,4294967295,568,50,65535,4294967295,569,94,65535,4294967295,570,51,65535,4294967295,571,97,65535,4294967295,572,94,65535,4294967295,573,94,65535,4294967295,574,94,124,4294967295,575,175,65535,4294967295,343,53,65535,164,576,95,65535,4294967295,577,176,464,4294967295,578,177,65535,4294967295,579,51,65535,4294967295,580,96,65535,4294967295,581,178,484,4294967295,582,179,65535,4294967295,583,19,65535,4294967295,584,52,65535,4294967295,585,97,65535,4294967295,586,180,490,4294967295,587,95,65535,4294967295,588,98,65535,4294967295,589,98,65535,4294967295,590,98,126,4294967295,221,54,65535,165,591,181,65535,4294967295,592,52,65535,4294967295,593,99,65535,4294967295,594,182,507,4294967295,595,183,65535,4294967295,596,20,65535,4294967295,597,184,65535,4294967295,598,185,65535,4294967295,599,53,65535,4294967295,600,186,65535,4294967295,601,54,65535,4294967295,349,55,65535,4294967295,602,100,65535,4294967295,603,187,65535,4294967295,604,188,65535,4294967295,605,100,65535,4294967295,602,100,65535,4294967295,606,100,124,4294967295,607,189,65535,4294967295,602,100,65535,166,608,190,65535,4294967295,609,191,65535,4294967295,610,101,65535,4294967295,351,101,65535,4294967295,611,101,126,4294967295,612,192,65535,4294967295,351,101,65535,167,352,102,65535,4294967295,613,193,65535,4294967295,614,194,65535,4294967295,615,102,65535,4294967295,616,102,65535,4294967295,617,102,65535,4294967295,618,195,65535,4294967295,619,187,65535,4294967295,349,55,65535,4294967295,620,196,65535,4294967295,349,55,65535,168,621,197,65535,4294967295,622,103,65535,4294967295,354,103,65535,4294967295,623,103,142,4294967295,624,198,65535,4294967295,354,103,65535,169,625,199,65535,4294967295,626,56,65535,4294967295,627,200,65535,4294967295,357,104,65535,4294967295,628,104,65535,4294967295,629,104,142,4294967295,630,201,65535,4294967295,631,105,65535,4294967295,360,105,65535,4294967295,632,105,464,4294967295,633,202,65535,4294967295,634,187,65535,4294967295,578,177,65535,4294967295,358,57,65535,4294967295,635,57,65535,4294967295,636,203,65535,4294967295,637,106,65535,4294967295,363,106,65535,4294967295,638,106,484,4294967295,639,107,65535,4294967295,640,107,65535,4294967295,641,107,65535,4294967295,639,107,65535,4294967295,642,107,490,4294967295,643,204,65535,4294967295,609,191,65535,4294967295,591,181,65535,4294967295,226,58,65535,4294967295,644,58,65535,4294967295,645,108,65535,4294967295,367,108,65535,4294967295,646,108,507,4294967295,647,109,65535,4294967295,368,109,65535,4294967295,648,109,333,4294967295,620,196,65535,4294967295,649,205,65535,4294967295,228,59,65535,4294967295,650,59,65535,4294967295,651,110,65535,4294967295,652,200,333,4294967295,156,35,65535,4294967295,653,60,65535,4294967295,654,21,65535,4294967295,655,206,65535,4294967295,656,61,65535,4294967295,657,207,65535,4294967295,658,208,65535,4294967295,659,111,65535,4294967295,660,111,65535,4294967295,661,209,333,4294967295,662,209,65535,4294967295,663,20,65535,170,664,196,65535,4294967295,665,35,65535,4294967295,666,112,65535,4294967295,667,112,507,4294967295,668,210,65535,4294967295,669,60,65535,4294967295,618,195,65535,4294967295,670,62,65535,4294967295,385,63,65535,4294967295,671,211,65535,4294967295,672,113,65535,4294967295,673,113,1429,4294967295,674,212,65535,4294967295,675,213,65535,4294967295,676,214,65535,4294967295,677,63,65535,4294967295,678,63,364,4294967295,679,63,65535,4294967295,680,215,65535,4294967295,681,114,65535,4294967295,682,114,1452,4294967295,390,115,65535,4294967295,683,115,65535,4294967295,684,115,464,4294967295,685,216,65535,4294967295,686,217,65535,4294967295,687,218,65535,4294967295,688,116,464,4294967295,689,219,65535,4294967295,690,220,65535,4294967295,691,117,65535,4294967295,692,117,464,4294967295,693,221,65535,4294967295,694,36,65535,4294967295,695,222,65535,4294967295,696,223,65535,4294967295,697,224,65535,4294967295,239,64,65535,4294967295,698,64,65535,4294967295,396,118,65535,4294967295,699,118,65535,4294967295,700,225,65535,4294967295,240,65,65535,4294967295,240,65,65535,4294967295,701,65,65535,4294967295,702,226,65535,4294967295,399,119,65535,4294967295,703,119,65535,4294967295,704,120,65535,4294967295,705,66,65535,4294967295,706,131,65535,4294967295,707,120,65535,4294967295,708,120,124,4294967295,709,227,65535,4294967295,67,7,65535,171,710,66,65535,4294967295,711,121,484,4294967295,712,23,65535,4294967295,713,228,65535,4294967295,714,229,65535,4294967295,715,230,65535,4294967295,243,67,65535,4294967295,716,67,65535,4294967295,717,231,65535,4294967295,408,122,65535,4294967295,718,122,65535,4294967295,719,122,484,4294967295,720,123,484,4294967295,721,232,65535,4294967295,722,233,65535,4294967295,723,124,65535,4294967295,724,124,484,4294967295,725,234,65535,4294967295,726,37,65535,4294967295,727,125,65535,4294967295,728,125,65535,4294967295,729,125,65535,4294967295,730,125,1539,4294967295,731,235,65535,4294967295,413,126,65535,4294967295,732,126,65535,4294967295,733,126,490,4294967295,734,236,65535,4294967295,735,237,65535,4294967295,736,238,65535,4294967295,737,127,490,4294967295,738,239,65535,4294967295,739,240,65535,4294967295,740,128,65535,4294967295,741,128,490,4294967295,742,241,65535,4294967295,743,38,65535,4294967295,744,242,65535,4294967295,745,243,65535,4294967295,746,244,65535,4294967295,250,68,65535,4294967295,747,68,65535,4294967295,748,129,65535,4294967295,749,129,65535,4294967295,748,129,65535,4294967295,750,129,65535,4294967295,751,245,65535,4294967295,251,69,65535,4294967295,251,69,65535,4294967295,752,69,65535,4294967295,422,130,65535,4294967295,753,130,65535,4294967295,754,70,65535,4294967295,755,131,490,4294967295,756,132,65535,4294967295,757,132,126,4294967295,42,8,65535,172,758,70,65535,4294967295,759,24,65535,4294967295,428,133,65535,4294967295,760,133,65535,4294967295,761,133,507,4294967295,762,134,507,4294967295,763,246,65535,4294967295,764,135,65535,4294967295,765,135,65535,4294967295,766,135,1604,4294967295,767,39,65535,4294967295,768,136,65535,4294967295,769,247,65535,4294967295,770,136,65535,4294967295,771,248,65535,4294967295,768,136,65535,4294967295,772,136,65535,4294967295,773,136,249,4294967295,774,249,65535,4294967295,390,115,65535,4294967295,775,250,65535,4294967295,259,71,65535,4294967295,776,71,65535,4294967295,435,137,65535,4294967295,777,137,65535,4294967295,778,137,829,4294967295,779,185,65535,4294967295,780,176,65535,4294967295,436,138,65535,4294967295,781,138,65535,4294967295,782,138,124,4294967295,783,178,65535,4294967295,784,40,65535,4294967295,438,139,65535,4294967295,785,139,65535,4294967295,786,139,853,4294967295,408,122,65535,4294967295,787,251,65535,4294967295,262,72,65535,4294967295,788,72,65535,4294967295,789,252,65535,4294967295,413,126,65535,4294967295,790,253,65535,4294967295,441,73,65535,4294967295,791,73,65535,4294967295,445,140,65535,4294967295,792,140,65535,4294967295,793,140,887,4294967295,794,180,65535,4294967295,446,141,65535,4294967295,795,141,65535,4294967295,796,141,126,4294967295,797,182,65535,4294967295,798,41,65535,4294967295,428,133,65535,4294967295,799,254,65535,4294967295,800,255,65535,4294967295,266,74,65535,4294967295,801,74,65535,4294967295,454,143,65535,4294967295,802,256,65535,4294967295,803,257,65535,4294967295,267,75,65535,4294967295,804,75,65535,4294967295,805,142,65535,4294967295,806,258,65535,4294967295,805,142,65535,4294967295,807,142,65535,4294967295,808,142,992,4294967295,809,42,65535,4294967295,454,143,65535,4294967295,810,143,65535,4294967295,811,143,333,4294967295,812,144,65535,4294967295,813,144,65535,4294967295,814,144,1707,4294967295,815,43,65535,4294967295,457,145,65535,4294967295,816,145,65535,4294967295,272,76,65535,4294967295,817,259,65535,4294967295,272,76,65535,4294967295,818,76,65535,4294967295,819,146,65535,4294967295,820,146,1719,4294967295,821,260,65535,4294967295,822,261,65535,4294967295,823,262,65535,4294967295,460,77,65535,4294967295,824,77,65535,4294967295,825,26,65535,4294967295,826,27,65535,4294967295,827,78,65535,4294967295,828,116,65535,4294967295,829,263,65535,4294967295,830,147,65535,4294967295,831,264,333,4294967295,832,264,65535,4294967295,833,18,65535,173,834,265,65535,4294967295,835,148,65535,4294967295,836,148,65535,4294967295,837,148,142,4294967295,838,266,65535,4294967295,839,267,65535,4294967295,840,268,65535,4294967295,841,149,142,4294967295,842,44,65535,4294967295,843,269,65535,4294967295,844,270,65535,4294967295,845,79,65535,4294967295,846,28,65535,4294967295,847,271,65535,4294967295,848,80,65535,4294967295,849,81,65535,4294967295,850,150,65535,4294967295,851,150,507,4294967295,182,46,65535,174,852,151,65535,4294967295,853,151,65535,4294967295,854,272,333,4294967295,855,273,65535,4294967295,856,54,65535,175,857,152,65535,4294967295,858,274,65535,4294967295,859,275,65535,4294967295,860,276,65535,4294967295,861,277,333,4294967295,862,278,65535,176,863,82,65535,4294967295,864,272,65535,4294967295,865,277,65535,4294967295,74,14,65535,4294967295,866,46,65535,4294967295,867,83,65535,4294967295,868,153,65535,4294967295,869,9,65535,177,870,199,65535,4294967295,871,84,65535,4294967295,872,154,65535,4294967295,873,279,507,4294967295,874,280,65535,4294967295,875,85,65535,178,876,281,65535,4294967295,493,155,65535,4294967295,877,155,65535,4294967295,878,155,142,4294967295,879,282,65535,4294967295,880,283,65535,4294967295,491,85,65535,4294967295,881,85,65535,4294967295,882,284,65535,4294967295,883,277,65535,4294967295,884,156,65535,4294967295,885,156,142,4294967295,886,285,65535,4294967295,887,29,65535,4294967295,888,1,65535,4294967295,2,1,65535,179,10,3,65535,180,889,157,65535,4294967295,890,286,65535,4294967295,891,86,65535,4294967295,892,86,65535,4294967295,893,86,364,4294967295,894,86,65535,4294967295,895,287,65535,4294967295,896,30,65535,4294967295,897,30,65535,4294967295,898,157,65535,4294967295,899,287,65535,4294967295,900,288,65535,4294967295,901,289,65535,4294967295,902,157,65535,4294967295,903,157,249,4294967295,904,290,65535,4294967295,137,16,65535,181,905,291,65535,4294967295,906,158,65535,4294967295,907,158,610,4294967295,908,47,65535,4294967295,909,47,65535,4294967295,910,47,65535,4294967295,911,87,65535,4294967295,912,159,65535,4294967295,913,159,65535,4294967295,914,159,610,4294967295,915,292,65535,4294967295,916,293,65535,4294967295,917,87,65535,4294967295,918,87,364,4294967295,919,87,65535,4294967295,920,160,65535,4294967295,921,160,629,4294967295,922,294,65535,4294967295,923,63,65535,4294967295,924,161,65535,4294967295,925,161,610,4294967295,926,295,65535,4294967295,927,292,65535,4294967295,928,296,65535,4294967295,929,297,65535,4294967295,522,162,65535,4294967295,930,162,65535,4294967295,931,162,364,4294967295,932,298,65535,4294967295,933,88,364,4294967295,934,88,65535,4294967295,935,299,65535,4294967295,936,163,65535,4294967295,937,163,629,4294967295,938,31,65535,4294967295,939,31,65535,4294967295,940,164,629,4294967295,941,300,65535,4294967295,942,48,65535,4294967295,943,48,65535,4294967295,944,165,1987,4294967295,945,301,65535,4294967295,946,89,65535,4294967295,947,89,364,4294967295,948,89,65535,4294967295,949,302,65535,4294967295,950,166,65535,4294967295,951,303,629,4294967295,952,9,65535,182,536,49,65535,4294967295,953,90,65535,4294967295,954,304,65535,4294967295,955,305,65535,4294967295,956,90,65535,4294967295,957,90,364,4294967295,958,90,65535,4294967295,959,90,65535,4294967295,960,49,65535,4294967295,961,49,65535,4294967295,962,288,65535,4294967295,963,16,65535,4294967295,137,16,65535,4294967295,964,90,65535,4294967295,965,167,65535,4294967295,552,170,65535,4294967295,966,91,65535,4294967295,967,167,65535,4294967295,968,167,124,4294967295,969,168,65535,4294967295,970,168,126,4294967295,971,306,65535,4294967295,972,307,65535,4294967295,973,169,65535,4294967295,974,169,142,4294967295,975,170,65535,4294967295,976,171,65535,4294967295,977,171,65535,4294967295,978,308,65535,4294967295,979,171,65535,4294967295,980,171,124,4294967295,981,309,65535,4294967295,982,310,65535,4294967295,983,172,65535,4294967295,984,172,126,4294967295,985,311,65535,4294967295,986,306,65535,4294967295,987,312,65535,4294967295,988,313,65535,4294967295,556,173,65535,4294967295,989,173,65535,4294967295,556,173,65535,4294967295,990,314,65535,4294967295,98,17,65535,4294967295,100,18,65535,4294967295,513,50,65535,4294967295,991,93,65535,4294967295,992,93,65535,4294967295,993,93,364,4294967295,994,93,65535,4294967295,995,87,65535,4294967295,996,315,65535,4294967295,997,316,65535,4294967295,565,174,65535,4294967295,998,174,65535,4294967295,999,174,249,4294967295,1000,317,65535,4294967295,1001,87,65535,4294967295,1002,50,65535,4294967295,1003,50,65535,4294967295,1004,51,65535,4294967295,1005,318,65535,4294967295,1006,185,65535,4294967295,1007,94,65535,4294967295,1008,175,65535,4294967295,1009,319,992,4294967295,1010,320,65535,4294967295,1011,321,65535,4294967295,1012,176,65535,4294967295,1013,176,65535,4294967295,1014,322,65535,4294967295,1015,207,65535,4294967295,1016,177,65535,4294967295,1017,177,65535,4294967295,1018,177,124,4294967295,1019,323,65535,4294967295,1020,51,65535,4294967295,1021,324,65535,4294967295,1022,178,65535,4294967295,1023,178,65535,4294967295,1024,325,65535,4294967295,582,179,65535,4294967295,1025,179,65535,4294967295,1026,251,484,4294967295,146,19,65535,4294967295,1027,326,65535,4294967295,1028,327,65535,4294967295,1029,180,65535,4294967295,1030,180,65535,4294967295,1031,180,65535,4294967295,1032,98,65535,4294967295,1033,186,65535,4294967295,1034,98,65535,4294967295,1035,328,65535,4294967295,1036,329,65535,4294967295,1037,181,65535,4294967295,1038,181,65535,4294967295,1039,181,126,4294967295,1040,52,65535,4294967295,1041,330,65535,4294967295,1042,182,65535,4294967295,1043,182,65535,4294967295,595,183,65535,4294967295,1044,183,65535,4294967295,1045,254,507,4294967295,103,20,65535,4294967295,1046,184,65535,4294967295,1047,331,65535,4294967295,1048,247,65535,4294967295,1049,184,65535,4294967295,1050,184,249,4294967295,1051,138,65535,4294967295,598,185,65535,4294967295,1052,185,65535,4294967295,1053,185,124,4294967295,1054,319,65535,4294967295,1055,53,65535,4294967295,1056,176,65535,4294967295,600,186,65535,4294967295,1057,186,65535,4294967295,1058,186,126,4294967295,1059,54,65535,4294967295,634,187,65535,4294967295,1060,332,65535,4294967295,1061,190,65535,4294967295,634,187,65535,4294967295,1062,187,65535,4294967295,1063,187,124,4294967295,1064,333,65535,4294967295,1065,334,65535,4294967295,1066,188,65535,4294967295,604,188,65535,4294967295,1067,335,490,4294967295,1068,336,65535,4294967295,1069,100,65535,183,1070,337,65535,4294967295,1071,100,65535,4294967295,602,100,65535,4294967295,1072,100,65535,4294967295,1073,338,65535,4294967295,1074,189,65535,4294967295,607,189,65535,4294967295,1075,339,992,4294967295,1076,100,65535,184,1077,190,65535,4294967295,1078,340,65535,4294967295,1079,190,65535,4294967295,1061,190,65535,4294967295,1080,341,464,4294967295,1081,342,65535,4294967295,1082,101,65535,185,1083,188,65535,4294967295,609,191,65535,4294967295,1084,191,65535,4294967295,1085,191,126,4294967295,1086,343,65535,4294967295,351,101,65535,4294967295,1087,101,65535,4294967295,1088,344,65535,4294967295,1089,192,65535,4294967295,612,192,65535,4294967295,1090,345,333,4294967295,1091,101,65535,186,1092,193,65535,4294967295,1093,346,65535,4294967295,1094,347,65535,4294967295,1095,193,65535,4294967295,1092,193,65535,4294967295,1096,193,124,4294967295,1097,348,65535,4294967295,1092,193,65535,187,1098,349,65535,4294967295,1099,350,65535,4294967295,1100,194,65535,4294967295,614,194,65535,4294967295,1101,194,126,4294967295,1102,351,65535,4294967295,614,194,65535,188,349,55,65535,4294967295,1103,346,65535,4294967295,352,102,65535,4294967295,352,102,65535,4294967295,1104,352,65535,4294967295,352,102,65535,189,1105,353,65535,4294967295,1106,195,65535,4294967295,1107,195,142,4294967295,1108,354,65535,4294967295,618,195,65535,190,1109,100,65535,4294967295,620,196,65535,4294967295,1110,196,142,4294967295,1111,197,65535,4294967295,621,197,65535,4294967295,1112,355,507,4294967295,1113,356,65535,4294967295,1114,103,65535,191,1115,357,65535,4294967295,1116,333,65535,4294967295,354,103,65535,4294967295,1117,103,65535,4294967295,1118,345,65535,4294967295,624,198,65535,4294967295,1119,198,65535,4294967295,1120,198,142,4294967295,1115,357,65535,4294967295,625,199,65535,4294967295,1121,199,65535,4294967295,1122,199,142,4294967295,1123,56,65535,4294967295,1124,200,65535,4294967295,1125,358,65535,4294967295,156,35,65535,4294967295,1126,104,65535,4294967295,1127,201,65535,4294967295,1128,201,65535,4294967295,1129,359,65535,4294967295,1130,201,65535,4294967295,1127,201,65535,4294967295,1131,201,249,4294967295,1132,360,65535,4294967295,1078,340,65535,4294967295,1133,361,65535,4294967295,360,105,65535,4294967295,1134,105,65535,4294967295,1135,202,65535,4294967295,633,202,65535,4294967295,1136,202,829,4294967295,1137,57,65535,4294967295,1138,203,65535,4294967295,636,203,65535,4294967295,1139,203,853,4294967295,1140,362,65535,4294967295,1141,363,65535,4294967295,363,106,65535,4294967295,1142,106,65535,4294967295,1143,364,65535,4294967295,1144,334,65535,4294967295,1145,365,65535,4294967295,639,107,65535,4294967295,1146,107,65535,4294967295,1147,204,65535,4294967295,643,204,65535,4294967295,1148,204,887,4294967295,1149,58,65535,4294967295,1150,366,65535,4294967295,1151,367,65535,4294967295,367,108,65535,4294967295,1152,108,65535,4294967295,1088,344,65535,4294967295,1153,368,65535,4294967295,368,109,65535,4294967295,1154,109,65535,4294967295,1155,205,65535,4294967295,1156,369,65535,4294967295,1157,205,65535,4294967295,1155,205,65535,4294967295,1158,205,992,4294967295,1159,59,65535,4294967295,1160,370,65535,4294967295,1161,200,65535,4294967295,1162,60,65535,4294967295,107,21,65535,4294967295,655,206,65535,4294967295,1163,206,65535,4294967295,1164,206,333,4294967295,1165,371,65535,4294967295,1166,61,65535,4294967295,1167,329,65535,4294967295,1168,207,65535,4294967295,1169,207,464,4294967295,1170,208,65535,4294967295,1171,208,65535,4294967295,1172,208,333,4294967295,1173,372,65535,4294967295,1174,206,65535,4294967295,1102,351,65535,4294967295,1175,209,65535,4294967295,1176,209,65535,4294967295,1177,209,65535,4294967295,231,61,65535,192,1104,352,65535,4294967295,1178,35,65535,4294967295,1179,373,65535,4294967295,1180,112,65535,4294967295,1181,210,65535,4294967295,1182,210,65535,4294967295,1183,210,507,4294967295,1184,374,65535,4294967295,1185,375,65535,4294967295,1186,62,65535,4294967295,1187,211,65535,4294967295,1188,211,65535,4294967295,1189,211,65535,4294967295,1190,211,2528,4294967295,1191,376,65535,4294967295,1192,377,65535,4294967295,1193,378,65535,4294967295,1194,379,65535,4294967295,1195,211,65535,4294967295,1196,113,364,4294967295,1197,113,65535,4294967295,1198,212,65535,4294967295,1199,212,2551,4294967295,1200,380,65535,4294967295,675,213,65535,4294967295,1201,213,65535,4294967295,1202,213,249,4294967295,1203,381,65535,4294967295,890,286,65535,4294967295,1204,271,65535,4294967295,1205,214,65535,4294967295,1206,214,249,4294967295,1207,382,65535,4294967295,923,63,65535,4294967295,1208,63,65535,4294967295,1209,63,65535,4294967295,1210,215,65535,4294967295,1211,215,2575,4294967295,1212,383,65535,4294967295,1213,384,65535,4294967295,1214,385,65535,4294967295,1215,386,65535,4294967295,1216,114,364,4294967295,1217,114,65535,4294967295,390,115,65535,4294967295,1218,387,65535,4294967295,390,115,65535,4294967295,1219,115,65535,4294967295,685,216,65535,4294967295,1220,216,65535,4294967295,1221,217,65535,4294967295,1222,217,126,4294967295,100,18,65535,193,1223,238,65535,4294967295,1224,218,65535,4294967295,1225,218,124,4294967295,1226,116,65535,4294967295,1227,219,65535,4294967295,1228,117,65535,4294967295,1229,239,65535,4294967295,1230,219,65535,4294967295,1231,219,490,4294967295,1232,388,65535,4294967295,706,131,65535,194,1233,240,65535,4294967295,1234,220,65535,4294967295,1235,240,464,4294967295,1236,8,65535,195,1237,117,65535,4294967295,1238,221,829,4294967295,1239,36,65535,4294967295,695,222,65535,4294967295,1240,222,65535,4294967295,1241,222,829,4294967295,1242,389,65535,4294967295,1243,223,829,4294967295,1244,390,65535,4294967295,1245,391,65535,4294967295,1246,224,65535,4294967295,1247,224,829,4294967295,1248,392,65535,4294967295,1249,64,65535,4294967295,390,115,65535,4294967295,700,225,65535,4294967295,1250,225,65535,4294967295,1251,65,65535,4294967295,702,226,65535,4294967295,1252,226,65535,4294967295,408,122,65535,4294967295,1253,66,65535,4294967295,1254,157,65535,4294967295,1255,284,65535,4294967295,1256,120,65535,4294967295,1257,227,992,4294967295,1258,393,65535,4294967295,1259,66,65535,4294967295,1260,121,65535,4294967295,158,23,65535,4294967295,713,228,65535,4294967295,1261,228,65535,4294967295,1262,228,853,4294967295,1263,229,853,4294967295,1264,394,65535,4294967295,1265,395,65535,4294967295,1266,230,65535,4294967295,1267,230,853,4294967295,1268,396,65535,4294967295,1269,67,65535,4294967295,717,231,65535,4294967295,1270,231,65535,4294967295,408,122,65535,4294967295,1271,397,65535,4294967295,408,122,65535,4294967295,1272,122,65535,4294967295,1273,123,65535,4294967295,1274,232,65535,4294967295,1275,232,484,4294967295,1276,233,853,4294967295,1277,124,65535,4294967295,1278,234,65535,4294967295,1279,398,484,4294967295,1280,9,65535,196,1281,37,65535,4294967295,1282,125,65535,4294967295,728,125,65535,4294967295,1283,399,65535,4294967295,1284,400,65535,4294967295,1285,401,65535,4294967295,1286,125,65535,4294967295,1287,125,364,4294967295,1288,125,65535,4294967295,1289,235,65535,4294967295,1290,235,2707,4294967295,413,126,65535,4294967295,1291,402,65535,4294967295,413,126,65535,4294967295,1292,126,65535,4294967295,734,236,65535,4294967295,1293,236,65535,4294967295,1294,127,65535,4294967295,1295,237,65535,4294967295,1296,237,126,4294967295,1297,218,65535,4294967295,1298,238,65535,4294967295,1299,238,124,4294967295,98,17,65535,197,1300,127,65535,4294967295,1301,128,65535,4294967295,1302,239,65535,4294967295,1303,403,65535,4294967295,1304,7,65535,198,1305,220,65535,4294967295,1306,240,65535,4294967295,1307,404,65535,4294967295,401,80,65535,199,1308,128,65535,4294967295,1309,398,65535,4294967295,1310,241,887,4294967295,1311,38,65535,4294967295,744,242,65535,4294967295,1312,242,65535,4294967295,1313,242,887,4294967295,1314,405,65535,4294967295,1315,243,887,4294967295,1316,406,65535,4294967295,1317,407,65535,4294967295,1318,244,65535,4294967295,1319,244,887,4294967295,1320,408,65535,4294967295,1321,68,65535,4294967295,1322,409,65535,4294967295,413,126,65535,4294967295,751,245,65535,4294967295,1323,245,65535,4294967295,1324,69,65535,4294967295,428,133,65535,4294967295,1325,289,65535,4294967295,1326,131,65535,4294967295,1327,278,65535,4294967295,1328,132,65535,4294967295,1329,70,65535,4294967295,111,24,65535,4294967295,428,133,65535,4294967295,1330,410,65535,4294967295,428,133,65535,4294967295,1331,133,65535,4294967295,1332,134,65535,4294967295,1333,246,65535,4294967295,1334,246,507,4294967295,1335,411,65535,4294967295,1336,412,65535,4294967295,1337,413,65535,4294967295,1338,414,65535,4294967295,764,135,65535,4294967295,1339,135,65535,4294967295,1340,39,65535,4294967295,1341,136,65535,4294967295,1342,184,65535,4294967295,1343,415,65535,4294967295,769,247,65535,4294967295,1344,247,65535,4294967295,1345,247,364,4294967295,1346,416,65535,4294967295,770,136,65535,4294967295,1347,417,65535,4294967295,771,248,65535,4294967295,1348,248,65535,4294967295,1349,248,1429,4294967295,1350,418,65535,4294967295,675,213,65535,4294967295,1351,419,65535,4294967295,1352,136,65535,4294967295,1353,136,364,4294967295,1354,136,65535,4294967295,1355,420,65535,4294967295,774,249,65535,4294967295,1356,249,65535,4294967295,1357,249,1452,4294967295,1358,421,65535,4294967295,1359,422,65535,4294967295,775,250,65535,4294967295,1360,250,65535,4294967295,1361,250,464,4294967295,1362,423,65535,4294967295,1363,71,65535,4294967295,695,222,65535,4294967295,1364,424,65535,4294967295,435,137,65535,4294967295,1365,137,65535,4294967295,1366,138,65535,4294967295,578,177,65535,4294967295,1367,138,65535,4294967295,1368,40,65535,4294967295,713,228,65535,4294967295,1369,425,65535,4294967295,438,139,65535,4294967295,1370,139,65535,4294967295,1371,426,65535,4294967295,787,251,65535,4294967295,1372,251,65535,4294967295,1373,427,65535,4294967295,1374,72,65535,4294967295,1375,252,65535,4294967295,1376,252,65535,4294967295,1375,252,65535,4294967295,1377,252,65535,4294967295,1378,252,1539,4294967295,1379,428,65535,4294967295,1380,429,65535,4294967295,1381,430,65535,4294967295,790,253,65535,4294967295,1382,253,65535,4294967295,1383,253,490,4294967295,1384,431,65535,4294967295,1385,73,65535,4294967295,744,242,65535,4294967295,1386,432,65535,4294967295,445,140,65535,4294967295,1387,140,65535,4294967295,1388,141,65535,4294967295,591,181,65535,4294967295,1389,141,65535,4294967295,1390,41,65535,4294967295,1391,433,65535,4294967295,799,254,65535,4294967295,1392,254,65535,4294967295,1393,434,65535,4294967295,1394,255,65535,4294967295,1394,255,65535,4294967295,1395,255,65535,4294967295,1396,255,1604,4294967295,1397,74,65535,4294967295,802,256,65535,4294967295,1398,256,65535,4294967295,1399,256,333,4294967295,1400,435,65535,4294967295,1401,257,65535,4294967295,1401,257,65535,4294967295,1402,257,65535,4294967295,1403,257,1707,4294967295,1404,75,65535,4294967295,806,258,65535,4294967295,1405,258,65535,4294967295,1406,258,1719,4294967295,821,260,65535,4294967295,1407,436,65535,4294967295,805,142,65535,4294967295,1408,142,65535,4294967295,1409,42,65535,4294967295,454,143,65535,4294967295,1410,437,65535,4294967295,454,143,65535,4294967295,1411,143,65535,4294967295,1412,438,65535,4294967295,1413,439,65535,4294967295,1414,440,65535,4294967295,812,144,65535,4294967295,1415,144,65535,4294967295,1416,43,65535,4294967295,454,143,65535,4294967295,1417,259,65535,4294967295,1418,441,65535,4294967295,1417,259,65535,4294967295,1419,259,65535,4294967295,1420,76,65535,4294967295,1421,442,65535,4294967295,1422,443,65535,4294967295,1423,444,65535,4294967295,461,146,65535,4294967295,1424,146,65535,4294967295,1425,445,65535,4294967295,821,260,65535,4294967295,1426,260,65535,4294967295,1427,260,992,4294967295,1428,261,992,4294967295,1429,446,65535,4294967295,1430,262,65535,4294967295,1431,262,992,4294967295,1432,77,65535,4294967295,113,26,65535,4294967295,114,27,65535,4294967295,1433,78,65535,4294967295,1434,217,65535,4294967295,1435,263,65535,4294967295,1436,263,333,4294967295,1437,447,65535,4294967295,1438,448,65535,4294967295,1439,449,65535,4294967295,1440,264,65535,4294967295,1441,264,65535,4294967295,276,78,65535,200,1442,265,65535,4294967295,1443,265,333,4294967295,1444,450,65535,4294967295,1445,451,65535,4294967295,1446,452,65535,4294967295,1447,148,65535,4294967295,1448,453,65535,4294967295,1449,266,65535,4294967295,1450,266,65535,4294967295,1451,266,142,4294967295,551,169,65535,201,1452,267,65535,4294967295,1453,267,333,4294967295,1454,454,65535,4294967295,840,268,65535,4294967295,1455,268,65535,4294967295,1456,268,142,4294967295,1457,455,65535,4294967295,557,149,65535,4294967295,1458,149,65535,4294967295,1459,44,65535,4294967295,1460,456,65535,4294967295,1461,269,65535,4294967295,1462,269,65535,4294967295,1463,269,142,4294967295,1464,457,65535,4294967295,1465,458,65535,202,1466,270,65535,4294967295,1467,459,65535,4294967295,1468,460,65535,4294967295,1469,270,142,4294967295,1470,461,65535,4294967295,1466,270,65535,203,1471,79,65535,4294967295,116,28,65535,4294967295,1472,291,65535,4294967295,1473,271,1429,4294967295,1474,80,65535,4294967295,1475,81,65535,4294967295,1476,462,65535,4294967295,1477,279,65535,4294967295,1478,150,65535,4294967295,1479,370,65535,4294967295,1480,272,65535,4294967295,1481,272,65535,4294967295,1482,273,65535,4294967295,1483,273,65535,4294967295,371,110,65535,204,1484,274,65535,4294967295,1485,274,65535,4294967295,1486,463,65535,4294967295,1487,274,65535,4294967295,1488,464,464,4294967295,1489,465,65535,4294967295,1490,278,65535,205,1491,466,65535,4294967295,1492,275,65535,4294967295,1493,275,333,4294967295,1494,467,65535,4294967295,1495,468,65535,4294967295,860,276,65535,4294967295,1496,276,65535,4294967295,1497,469,333,4294967295,1498,470,65535,4294967295,1499,471,65535,4294967295,883,277,65535,4294967295,1500,277,65535,4294967295,883,277,65535,206,1501,278,65535,4294967295,1502,472,65535,4294967295,1501,278,65535,207,1503,82,65535,4294967295,1504,272,65535,4294967295,627,200,65535,208,1505,469,65535,4294967295,1506,473,65535,4294967295,1507,46,65535,4294967295,1508,83,65535,4294967295,1509,474,65535,4294967295,1510,357,65535,4294967295,1511,84,65535,4294967295,1512,475,65535,4294967295,1513,279,65535,4294967295,1514,476,65535,4294967295,1513,279,65535,4294967295,1515,279,65535,4294967295,1513,279,65535,209,1516,280,65535,4294967295,1517,477,507,4294967295,1518,478,65535,4294967295,876,281,65535,4294967295,1519,281,65535,4294967295,1520,479,507,4294967295,1521,480,65535,4294967295,493,155,65535,4294967295,1522,481,65535,4294967295,493,155,65535,4294967295,1523,155,65535,4294967295,1524,482,65535,4294967295,879,282,65535,4294967295,1525,282,65535,4294967295,1526,282,142,4294967295,1527,483,65535,4294967295,1528,283,65535,4294967295,1529,484,65535,4294967295,1530,283,65535,4294967295,1531,485,484,4294967295,1532,486,65535,4294967295,1533,85,65535,210,1534,85,65535,4294967295,1535,284,65535,4294967295,1536,487,65535,4294967295,1537,466,65535,4294967295,1538,284,124,4294967295,1539,488,65535,4294967295,1535,284,65535,211,1540,486,65535,4294967295,1541,156,65535,4294967295,495,156,65535,4294967295,1542,156,65535,4294967295,495,156,65535,212,1543,285,65535,4294967295,1544,285,142,4294967295,119,29,65535,4294967295,900,288,65535,4294967295,1545,286,65535,4294967295,1546,214,65535,4294967295,1547,489,65535,4294967295,1548,286,65535,4294967295,1549,157,249,4294967295,1550,490,65535,4294967295,1551,7,65535,213,1552,90,65535,4294967295,1553,86,65535,4294967295,1554,86,65535,4294967295,1555,86,65535,4294967295,1556,288,65535,4294967295,1557,491,65535,4294967295,1558,287,65535,4294967295,1559,287,364,4294967295,1560,492,65535,4294967295,138,30,65535,214,1561,30,65535,4294967295,138,30,65535,4294967295,1562,288,65535,4294967295,1563,493,65535,4294967295,1564,288,65535,4294967295,507,157,65535,4294967295,1565,494,65535,4294967295,1566,288,65535,4294967295,1567,288,3260,4294967295,1568,495,65535,4294967295,1569,496,65535,4294967295,1570,289,1539,4294967295,1571,318,65535,4294967295,1572,497,65535,4294967295,1573,157,65535,4294967295,1574,157,364,4294967295,1575,157,65535,4294967295,1576,290,3287,4294967295,1577,498,65535,4294967295,1578,291,65535,4294967295,1579,499,65535,4294967295,1580,500,65535,4294967295,1581,291,65535,4294967295,1582,501,610,4294967295,1583,8,65535,215,1584,158,65535,4294967295,1585,158,65535,4294967295,1586,158,364,4294967295,1587,158,65535,4294967295,1588,501,65535,4294967295,1589,47,65535,4294967295,1590,47,65535,4294967295,1591,502,65535,4294967295,1592,159,65535,4294967295,1593,503,65535,4294967295,1594,159,65535,4294967295,1595,159,364,4294967295,1596,159,65535,4294967295,1597,504,65535,4294967295,1598,505,65535,4294967295,927,292,65535,4294967295,1599,506,65535,4294967295,1600,292,364,4294967295,1601,507,65535,4294967295,916,293,65535,4294967295,1602,201,65535,4294967295,1603,508,65535,4294967295,1604,293,65535,4294967295,1605,293,364,4294967295,1606,509,65535,4294967295,513,50,65535,4294967295,1607,87,65535,4294967295,1608,87,65535,4294967295,1609,510,65535,4294967295,1610,160,65535,4294967295,1611,160,364,4294967295,1612,160,65535,4294967295,1613,511,65535,4294967295,1614,294,65535,4294967295,1615,294,65535,4294967295,1616,294,629,4294967295,1617,512,65535,4294967295,385,63,65535,4294967295,1618,513,65535,4294967295,1619,161,364,4294967295,1620,161,65535,4294967295,1621,295,65535,4294967295,1622,295,3398,4294967295,1623,292,65535,4294967295,1624,296,65535,4294967295,1625,296,65535,4294967295,1626,514,65535,4294967295,1624,296,65535,4294967295,1627,296,65535,4294967295,1628,136,249,4294967295,1629,515,65535,4294967295,1630,516,65535,4294967295,929,297,65535,4294967295,1631,297,65535,4294967295,1632,517,610,4294967295,1633,518,65535,4294967295,522,162,65535,4294967295,1634,296,65535,4294967295,1635,162,364,4294967295,1636,162,65535,4294967295,1637,519,65535,4294967295,932,298,65535,4294967295,1638,298,65535,4294967295,1639,520,629,4294967295,1640,88,65535,4294967295,1641,88,65535,4294967295,1642,299,65535,4294967295,1643,299,1987,4294967295,1644,521,65535,4294967295,1645,163,364,4294967295,1646,163,65535,4294967295,1647,31,65535,4294967295,198,31,65535,4294967295,1648,164,65535,4294967295,1649,164,364,4294967295,1650,164,65535,4294967295,1651,522,65535,4294967295,1652,300,65535,4294967295,1653,300,629,4294967295,1654,523,65535,4294967295,1655,48,65535,4294967295,1656,48,65535,4294967295,1657,165,65535,4294967295,1658,165,364,4294967295,1659,165,65535,4294967295,1660,271,65535,4294967295,1661,524,65535,4294967295,1662,301,65535,4294967295,1663,525,1987,4294967295,1664,526,65535,4294967295,1665,8,65535,216,1666,89,65535,4294967295,1667,89,65535,4294967295,1668,302,3398,4294967295,1669,527,65535,4294967295,1670,528,65535,4294967295,1671,529,65535,4294967295,1672,303,65535,4294967295,1673,303,65535,4294967295,1674,303,364,4294967295,1675,303,65535,4294967295,1676,48,629,4294967295,1677,530,65535,4294967295,1678,531,65535,4294967295,1679,532,65535,4294967295,1680,304,65535,4294967295,1681,304,65535,4294967295,1682,304,364,4294967295,1683,533,65535,4294967295,1684,305,65535,4294967295,1685,534,65535,4294967295,1686,535,65535,4294967295,1687,536,65535,4294967295,1688,305,364,4294967295,1689,537,65535,4294967295,536,49,65535,4294967295,1690,90,65535,4294967295,1691,90,65535,4294967295,1692,530,65535,4294967295,1693,49,65535,4294967295,1694,49,65535,4294967295,889,157,65535,4294967295,137,16,65535,4294967295,1695,49,65535,4294967295,1696,531,65535,4294967295,1697,538,65535,4294967295,1698,167,65535,4294967295,1699,539,65535,4294967295,1700,168,65535,4294967295,1701,540,65535,4294967295,1702,541,65535,4294967295,986,306,65535,4294967295,1703,542,65535,4294967295,1704,306,65535,4294967295,1465,458,65535,4294967295,972,307,65535,4294967295,1705,543,65535,4294967295,1706,544,65535,4294967295,1707,307,65535,4294967295,972,307,65535,4294967295,1446,452,65535,4294967295,972,307,65535,217,1708,451,65535,4294967295,1709,169,65535,4294967295,1710,534,65535,4294967295,1711,308,65535,4294967295,1712,308,464,4294967295,1713,545,65535,4294967295,1714,546,65535,4294967295,976,171,65535,4294967295,1715,171,65535,4294967295,1716,547,65535,4294967295,1717,309,65535,4294967295,1718,309,484,4294967295,1719,310,65535,4294967295,1720,310,65535,4294967295,1721,310,65535,4294967295,1722,310,490,4294967295,1723,548,65535,4294967295,1724,549,65535,4294967295,555,172,65535,4294967295,1725,172,65535,4294967295,1726,311,65535,4294967295,1727,311,507,4294967295,1728,306,65535,4294967295,1729,312,65535,4294967295,1730,312,65535,4294967295,1731,550,65535,4294967295,1729,312,65535,4294967295,1732,312,65535,4294967295,1733,312,124,4294967295,1734,551,65535,4294967295,1735,552,65535,4294967295,988,313,65535,4294967295,1736,313,65535,4294967295,1737,313,126,4294967295,1738,553,65535,4294967295,556,173,65535,4294967295,1739,554,65535,4294967295,990,314,65535,4294967295,1740,314,65535,4294967295,1741,314,142,4294967295,1742,87,65535,4294967295,1743,93,65535,4294967295,1744,93,65535,4294967295,1745,93,65535,4294967295,1746,502,65535,4294967295,1747,315,65535,4294967295,1748,174,65535,4294967295,1749,555,65535,4294967295,1750,315,65535,4294967295,1751,315,65535,4294967295,1752,318,249,4294967295,1753,556,65535,4294967295,1754,53,65535,218,1755,557,65535,4294967295,1756,316,65535,4294967295,1757,558,1429,4294967295,1758,559,65535,4294967295,1759,174,65535,4294967295,1760,174,364,4294967295,1761,174,65535,4294967295,1762,317,65535,4294967295,1763,560,1452,4294967295,1764,561,65535,4294967295,1765,502,65535,4294967295,1766,50,65535,4294967295,1767,50,65535,4294967295,1768,94,65535,4294967295,1769,562,65535,4294967295,1770,563,65535,4294967295,1771,326,65535,4294967295,1772,318,65535,4294967295,1773,318,65535,4294967295,1774,318,249,4294967295,1775,564,65535,4294967295,1046,184,65535,219,1776,337,65535,4294967295,1777,94,65535,4294967295,1778,565,65535,4294967295,1779,319,65535,4294967295,1780,319,65535,4294967295,1781,566,65535,4294967295,1782,320,65535,4294967295,1783,320,65535,4294967295,1784,567,992,4294967295,1785,568,65535,4294967295,1786,53,65535,220,1787,569,65535,4294967295,1788,570,65535,4294967295,1011,321,65535,4294967295,1789,321,65535,4294967295,1790,430,464,4294967295,1791,176,65535,4294967295,1792,322,65535,4294967295,1793,177,65535,4294967295,1794,328,65535,4294967295,1795,322,65535,4294967295,1796,322,65535,4294967295,1797,322,124,4294967295,1798,571,65535,4294967295,146,19,65535,221,1799,51,65535,4294967295,1800,177,65535,4294967295,1801,323,65535,4294967295,1802,323,484,4294967295,1803,51,65535,4294967295,1804,572,65535,4294967295,1021,324,65535,4294967295,1805,324,65535,4294967295,1806,573,484,4294967295,1807,573,65535,4294967295,1808,178,65535,4294967295,1809,325,65535,4294967295,1810,426,853,4294967295,1811,574,65535,4294967295,1141,363,65535,4294967295,1812,251,65535,4294967295,1813,575,65535,4294967295,1814,326,65535,4294967295,1815,576,1539,4294967295,1816,577,65535,4294967295,1817,578,65535,4294967295,1028,327,65535,4294967295,1818,327,65535,4294967295,1819,421,490,4294967295,1820,579,65535,4294967295,1821,421,65535,4294967295,1822,180,65535,4294967295,1823,316,65535,4294967295,1824,343,65535,4294967295,1825,98,65535,4294967295,1826,181,65535,4294967295,1827,328,65535,4294967295,1828,328,490,4294967295,1829,329,65535,4294967295,1830,329,65535,4294967295,1831,329,126,4294967295,103,20,65535,222,1832,52,65535,4294967295,1833,181,65535,4294967295,1834,52,65535,4294967295,1041,330,65535,4294967295,1835,330,65535,4294967295,1836,435,507,4294967295,1837,182,65535,4294967295,668,210,65535,4294967295,1838,254,65535,4294967295,1839,247,65535,4294967295,1840,331,65535,4294967295,1841,331,65535,4294967295,1842,331,364,4294967295,1843,184,65535,4294967295,1844,580,65535,4294967295,1845,184,65535,4294967295,1846,184,364,4294967295,1847,184,65535,4294967295,1848,185,65535,4294967295,569,94,65535,4294967295,1849,482,65535,4294967295,1850,185,65535,4294967295,1851,581,65535,4294967295,1852,53,65535,4294967295,1853,186,65535,4294967295,338,98,65535,4294967295,1854,582,65535,4294967295,1855,186,65535,4294967295,1856,54,65535,4294967295,1857,332,65535,4294967295,1858,583,65535,4294967295,1859,584,65535,4294967295,1860,332,65535,4294967295,1857,332,65535,4294967

_(report truncated; full output in workflow logs)_

@tinovyatkin
tinovyatkin merged commit 37be5d7 into main Jul 24, 2026
12 of 13 checks passed
@tinovyatkin
tinovyatkin deleted the codex/csharp-grammar-driven-parity branch July 24, 2026 05:26
@ophiarch ophiarch Bot mentioned this pull request Jul 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

parse-bench: investigate Rust vs Go AST divergence on C# Mono fixtures

1 participant