From cf173f6ac61982a2d35805f225d353e971be3ef3 Mon Sep 17 00:00:00 2001 From: Yaroslav Bolyukin Date: Tue, 13 Dec 2022 23:22:30 +0000 Subject: [PATCH] feat: parse object comprehensions --- --- a/crates/jrsonnet-rowan-parser/jsonnet.ungram +++ b/crates/jrsonnet-rowan-parser/jsonnet.ungram @@ -194,29 +194,25 @@ MemberBindStmt = ObjLocal MemberAssertStmt = Assertion -MemberField = Field -Member = - MemberBindStmt -| MemberAssertStmt -| MemberField - -ObjLocal = - 'local' - Bind - -FieldNormal = +MemberFieldNormal = FieldName '+'? Visibility Expr -FieldMethod = +MemberFieldMethod = FieldName ParamsDesc Visibility Expr -Field = - FieldNormal -| FieldMethod +Member = + MemberBindStmt +| MemberAssertStmt +| MemberFieldNormal +| MemberFieldMethod + +ObjLocal = + 'local' + Bind FieldNameFixed = id:Name @@ -374,3 +370,4 @@ ParsingError = 'ERROR_MISSING_TOKEN!' | 'ERROR_UNEXPECTED_TOKEN!' +| 'ERROR_CUSTOM!' --- a/crates/jrsonnet-rowan-parser/src/event.rs +++ b/crates/jrsonnet-rowan-parser/src/event.rs @@ -1,4 +1,4 @@ -use std::mem; +use std::{mem, num::NonZeroUsize}; use rowan::{GreenNodeBuilder, Language, TextRange, TextSize}; @@ -9,7 +9,7 @@ AstToken, JsonnetLanguage, SyntaxKind, }; -#[derive(Clone, Debug, PartialEq, Eq)] +#[derive(Clone, Debug)] pub enum Event { /// Used for unfinished markers Pending, @@ -18,22 +18,18 @@ kind: SyntaxKind, /// If marker is preceded or wrapped - instead of reordering events, we /// insert start event in the end of events Vec instead, and store relative offset to this event here - forward_parent: Option, + forward_parent: Option, }, /// Eat token - Token { - kind: SyntaxKind, - }, + Token { kind: SyntaxKind }, /// Push token, but do not eat anything, - VirtualToken { - kind: SyntaxKind, - }, + VirtualToken { kind: SyntaxKind }, /// Position of finished node Finish { /// Same as forward_parent of Start, but for wrapping - wrapper: Option, + wrapper: Option, + error: Option>, }, - Error(SyntaxError), /// Used for dropped markers and other things Noop, } @@ -74,7 +70,6 @@ let mut eat_start_whitespace = false; let mut depth = 0; let mut error_starts_at = Vec::new(); - let mut error_last_range = None; for idx in 0..self.events.len() { match mem::replace(&mut self.events[idx], Event::Noop) { Event::Start { @@ -84,7 +79,6 @@ if depth != 0 { self.skip_whitespace(); } - error_last_range = None; let mut kinds = vec![kind]; let mut idx = idx; @@ -94,7 +88,7 @@ // of that, and of that, etc. until we reach a StartNode event without a forward // parent. while let Some(fp) = forward_parent { - idx += fp; + idx += fp.get(); forward_parent = if let Event::Start { kind, @@ -123,7 +117,6 @@ if eat_start_whitespace { self.skip_whitespace(); } - error_last_range = None; self.token(kind); eat_start_whitespace = true; } @@ -131,31 +124,43 @@ if eat_start_whitespace { self.skip_whitespace(); } - error_last_range = None; self.virtual_token(kind); eat_start_whitespace = false; } - Event::Finish { wrapper } => { + Event::Finish { wrapper, error } => { if depth == 1 { self.skip_whitespace(); } - error_last_range = Some(( + let range = ( error_starts_at.pop().expect("starts == finishes"), self.text_offset(), - )); + ); + if let Some(error) = error { + self.errors.push(LocatedSyntaxError { + error: *error, + range: TextRange::new(range.0, range.1), + }) + } self.builder.finish_node(); depth -= 1; let mut idx = idx; let mut wrapper = wrapper; while let Some(w) = wrapper { - idx += w; - wrapper = if let Event::Finish { wrapper } = + idx += w.get(); + wrapper = if let Event::Finish { wrapper, error } = mem::replace(&mut self.events[idx], Event::Noop) { - error_last_range = Some(( + let range = ( error_starts_at.pop().expect("starts == finishes"), self.text_offset(), - )); + ); + if let Some(error) = error { + self.errors.push(LocatedSyntaxError { + error: *error, + range: TextRange::new(range.0, range.1), + }) + } + if depth == 1 { self.skip_whitespace(); } @@ -170,15 +175,6 @@ } Event::Pending => panic!("pending event should not appear in finished events"), Event::Noop => {} - Event::Error(error) => { - let (start, end) = error_last_range - .take() - .expect("expected error event right after closed node"); - self.errors.push(LocatedSyntaxError { - error, - range: TextRange::new(start, end), - }); - } } } --- a/crates/jrsonnet-rowan-parser/src/generated/nodes.rs +++ b/crates/jrsonnet-rowan-parser/src/generated/nodes.rs @@ -643,20 +643,10 @@ } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct MemberField { +pub struct MemberFieldNormal { pub(crate) syntax: SyntaxNode, } -impl MemberField { - pub fn field(&self) -> Option { - support::child(&self.syntax) - } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct FieldNormal { - pub(crate) syntax: SyntaxNode, -} -impl FieldNormal { +impl MemberFieldNormal { pub fn field_name(&self) -> Option { support::child(&self.syntax) } @@ -672,10 +662,10 @@ } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct FieldMethod { +pub struct MemberFieldMethod { pub(crate) syntax: SyntaxNode, } -impl FieldMethod { +impl MemberFieldMethod { pub fn field_name(&self) -> Option { support::child(&self.syntax) } @@ -955,13 +945,8 @@ pub enum Member { MemberBindStmt(MemberBindStmt), MemberAssertStmt(MemberAssertStmt), - MemberField(MemberField), -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub enum Field { - FieldNormal(FieldNormal), - FieldMethod(FieldMethod), + MemberFieldNormal(MemberFieldNormal), + MemberFieldMethod(MemberFieldMethod), } #[derive(Debug, Clone, PartialEq, Eq, Hash)] @@ -1134,6 +1119,7 @@ pub enum ParsingErrorKind { ErrorMissingToken, ErrorUnexpectedToken, + ErrorCustom, } impl AstNode for SourceFile { fn can_cast(kind: SyntaxKind) -> bool { @@ -1780,24 +1766,9 @@ &self.syntax } } -impl AstNode for MemberField { - fn can_cast(kind: SyntaxKind) -> bool { - kind == MEMBER_FIELD - } - fn cast(syntax: SyntaxNode) -> Option { - if Self::can_cast(syntax.kind()) { - Some(Self { syntax }) - } else { - None - } - } - fn syntax(&self) -> &SyntaxNode { - &self.syntax - } -} -impl AstNode for FieldNormal { +impl AstNode for MemberFieldNormal { fn can_cast(kind: SyntaxKind) -> bool { - kind == FIELD_NORMAL + kind == MEMBER_FIELD_NORMAL } fn cast(syntax: SyntaxNode) -> Option { if Self::can_cast(syntax.kind()) { @@ -1810,9 +1781,9 @@ &self.syntax } } -impl AstNode for FieldMethod { +impl AstNode for MemberFieldMethod { fn can_cast(kind: SyntaxKind) -> bool { - kind == FIELD_METHOD + kind == MEMBER_FIELD_METHOD } fn cast(syntax: SyntaxNode) -> Option { if Self::can_cast(syntax.kind()) { @@ -2352,15 +2323,22 @@ Member::MemberAssertStmt(node) } } -impl From for Member { - fn from(node: MemberField) -> Member { - Member::MemberField(node) +impl From for Member { + fn from(node: MemberFieldNormal) -> Member { + Member::MemberFieldNormal(node) } } +impl From for Member { + fn from(node: MemberFieldMethod) -> Member { + Member::MemberFieldMethod(node) + } +} impl AstNode for Member { fn can_cast(kind: SyntaxKind) -> bool { match kind { - MEMBER_BIND_STMT | MEMBER_ASSERT_STMT | MEMBER_FIELD => true, + MEMBER_BIND_STMT | MEMBER_ASSERT_STMT | MEMBER_FIELD_NORMAL | MEMBER_FIELD_METHOD => { + true + } _ => false, } } @@ -2368,7 +2346,8 @@ let res = match syntax.kind() { MEMBER_BIND_STMT => Member::MemberBindStmt(MemberBindStmt { syntax }), MEMBER_ASSERT_STMT => Member::MemberAssertStmt(MemberAssertStmt { syntax }), - MEMBER_FIELD => Member::MemberField(MemberField { syntax }), + MEMBER_FIELD_NORMAL => Member::MemberFieldNormal(MemberFieldNormal { syntax }), + MEMBER_FIELD_METHOD => Member::MemberFieldMethod(MemberFieldMethod { syntax }), _ => return None, }; Some(res) @@ -2377,39 +2356,8 @@ match self { Member::MemberBindStmt(it) => &it.syntax, Member::MemberAssertStmt(it) => &it.syntax, - Member::MemberField(it) => &it.syntax, - } - } -} -impl From for Field { - fn from(node: FieldNormal) -> Field { - Field::FieldNormal(node) - } -} -impl From for Field { - fn from(node: FieldMethod) -> Field { - Field::FieldMethod(node) - } -} -impl AstNode for Field { - fn can_cast(kind: SyntaxKind) -> bool { - match kind { - FIELD_NORMAL | FIELD_METHOD => true, - _ => false, - } - } - fn cast(syntax: SyntaxNode) -> Option { - let res = match syntax.kind() { - FIELD_NORMAL => Field::FieldNormal(FieldNormal { syntax }), - FIELD_METHOD => Field::FieldMethod(FieldMethod { syntax }), - _ => return None, - }; - Some(res) - } - fn syntax(&self) -> &SyntaxNode { - match self { - Field::FieldNormal(it) => &it.syntax, - Field::FieldMethod(it) => &it.syntax, + Member::MemberFieldNormal(it) => &it.syntax, + Member::MemberFieldMethod(it) => &it.syntax, } } } @@ -2914,7 +2862,7 @@ impl ParsingErrorKind { fn can_cast(kind: SyntaxKind) -> bool { match kind { - ERROR_MISSING_TOKEN | ERROR_UNEXPECTED_TOKEN => true, + ERROR_MISSING_TOKEN | ERROR_UNEXPECTED_TOKEN | ERROR_CUSTOM => true, _ => false, } } @@ -2922,6 +2870,7 @@ let res = match kind { ERROR_MISSING_TOKEN => Self::ErrorMissingToken, ERROR_UNEXPECTED_TOKEN => Self::ErrorUnexpectedToken, + ERROR_CUSTOM => Self::ErrorCustom, _ => return None, }; Some(res) @@ -2958,11 +2907,6 @@ } } impl std::fmt::Display for Member { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - std::fmt::Display::fmt(self.syntax(), f) - } -} -impl std::fmt::Display for Field { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { std::fmt::Display::fmt(self.syntax(), f) } @@ -3197,17 +3141,12 @@ std::fmt::Display::fmt(self.syntax(), f) } } -impl std::fmt::Display for MemberField { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - std::fmt::Display::fmt(self.syntax(), f) - } -} -impl std::fmt::Display for FieldNormal { +impl std::fmt::Display for MemberFieldNormal { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { std::fmt::Display::fmt(self.syntax(), f) } } -impl std::fmt::Display for FieldMethod { +impl std::fmt::Display for MemberFieldMethod { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { std::fmt::Display::fmt(self.syntax(), f) } --- a/crates/jrsonnet-rowan-parser/src/generated/syntax_kinds.rs +++ b/crates/jrsonnet-rowan-parser/src/generated/syntax_kinds.rs @@ -181,6 +181,7 @@ ASSERT_KW, ERROR_MISSING_TOKEN, ERROR_UNEXPECTED_TOKEN, + ERROR_CUSTOM, #[doc = r" Also acts as __LAST_TOKEN"] #[error] LEXING_ERROR, @@ -227,9 +228,8 @@ OBJ_LOCAL, MEMBER_BIND_STMT, MEMBER_ASSERT_STMT, - MEMBER_FIELD, - FIELD_NORMAL, - FIELD_METHOD, + MEMBER_FIELD_NORMAL, + MEMBER_FIELD_METHOD, FIELD_NAME_FIXED, FIELD_NAME_DYNAMIC, FOR_SPEC, @@ -249,7 +249,6 @@ COMP_SPEC, BIND, MEMBER, - FIELD, FIELD_NAME, DESTRUCT, DESTRUCT_ARRAY_PART, @@ -281,7 +280,7 @@ } pub fn is_enum(self) -> bool { match self { - EXPR | OBJ_BODY | COMP_SPEC | BIND | MEMBER | FIELD | FIELD_NAME | DESTRUCT + EXPR | OBJ_BODY | COMP_SPEC | BIND | MEMBER | FIELD_NAME | DESTRUCT | DESTRUCT_ARRAY_PART | BINARY_OPERATOR | UNARY_OPERATOR | LITERAL | TEXT | NUMBER | IMPORT_KIND | VISIBILITY | TRIVIA | PARSING_ERROR => true, _ => false, --- a/crates/jrsonnet-rowan-parser/src/lib.rs +++ b/crates/jrsonnet-rowan-parser/src/lib.rs @@ -3,7 +3,7 @@ use event::Sink; use generated::nodes::{SourceFile, Trivia}; use lex::lex; -use parser::{LocatedSyntaxError, Parser, SyntaxError}; +use parser::{LocatedSyntaxError, Parser}; pub use rowan; mod ast; --- a/crates/jrsonnet-rowan-parser/src/marker.rs +++ b/crates/jrsonnet-rowan-parser/src/marker.rs @@ -1,7 +1,12 @@ +use std::num::NonZeroUsize; + use drop_bomb::DropBomb; -use rowan::TextRange; -use crate::{event::Event, parser::Parser, SyntaxKind}; +use crate::{ + event::Event, + parser::{ExpectedSyntax, Parser, SyntaxError}, + SyntaxKind, +}; pub struct Ranger { pub pos: usize, @@ -38,7 +43,12 @@ bomb: DropBomb::new("marked dropped while not completed"), } } - pub fn complete(mut self, p: &mut Parser, kind: SyntaxKind) -> CompletedMarker { + fn complete_raw( + mut self, + p: &mut Parser, + kind: SyntaxKind, + error: Option, + ) -> CompletedMarker { self.bomb.defuse(); assert!( !kind.is_enum(), @@ -50,7 +60,7 @@ // "{kind:?} should be only emitted by lexer, not used directly" // ); let event_at_pos = &mut p.events[self.start_event_idx]; - assert_eq!(*event_at_pos, Event::Pending); + assert!(matches!(event_at_pos, Event::Pending)); *event_at_pos = Event::Start { kind, @@ -58,7 +68,10 @@ }; let finish_event_idx = p.events.len(); - p.events.push(Event::Finish { wrapper: None }); + p.events.push(Event::Finish { + wrapper: None, + error: error.map(Box::new), + }); p.entered -= 1; p.clear_outdated_hints(); CompletedMarker { @@ -66,10 +79,42 @@ finish_event_idx, } } + pub fn complete(mut self, p: &mut Parser, kind: SyntaxKind) -> CompletedMarker { + self.complete_raw(p, kind, None) + } + pub fn complete_error(mut self, p: &mut Parser, msg: impl AsRef) -> CompletedMarker { + self.complete_raw( + p, + SyntaxKind::ERROR_CUSTOM, + Some(SyntaxError::Custom { + error: msg.as_ref().to_owned(), + }), + ) + } + pub fn complete_missing(mut self, p: &mut Parser, expected: ExpectedSyntax) -> CompletedMarker { + self.complete_raw( + p, + SyntaxKind::ERROR_MISSING_TOKEN, + Some(SyntaxError::Missing { expected }), + ) + } + pub fn complete_unexpected( + mut self, + p: &mut Parser, + expected: ExpectedSyntax, + found: SyntaxKind, + ) -> CompletedMarker { + self.complete_raw( + p, + SyntaxKind::ERROR_UNEXPECTED_TOKEN, + Some(SyntaxError::Unexpected { expected, found }), + ) + } + pub fn forget(mut self, p: &mut Parser) { self.bomb.defuse(); let event_at_pos = &mut p.events[self.start_event_idx]; - assert_eq!(*event_at_pos, Event::Pending); + assert!(matches!(event_at_pos, Event::Pending)); *event_at_pos = Event::Noop; p.entered -= 1; @@ -85,7 +130,9 @@ let new_m = p.start(); match &mut p.events[self.start_event_idx] { Event::Start { forward_parent, .. } => { - *forward_parent = Some(new_m.start_event_idx - self.start_event_idx); + *forward_parent = Some( + NonZeroUsize::new(new_m.start_event_idx - self.start_event_idx).expect("!= 0"), + ); } _ => unreachable!(), } @@ -93,23 +140,48 @@ new_m } /// Create new node around existing marker, not counting anything that comes after it - pub fn wrap(self, p: &mut Parser, kind: SyntaxKind) -> CompletedMarker { + fn wrap_raw( + self, + p: &mut Parser, + kind: SyntaxKind, + error: Option, + ) -> CompletedMarker { let new_m = p.start(); match &mut p.events[self.start_event_idx] { Event::Start { forward_parent, .. } => { - *forward_parent = Some(new_m.start_event_idx - self.start_event_idx); + *forward_parent = Some( + NonZeroUsize::new(new_m.start_event_idx - self.start_event_idx).expect("!= 0"), + ); } _ => unreachable!(), } - let completed = new_m.complete(p, kind); + let completed = new_m.complete_raw(p, kind, error); match &mut p.events[self.finish_event_idx] { - Event::Finish { wrapper } => { - *wrapper = Some(completed.finish_event_idx - self.finish_event_idx); + Event::Finish { + wrapper, + error: _error, + } => { + *wrapper = Some( + NonZeroUsize::new(completed.finish_event_idx - self.finish_event_idx) + .expect("!= 0"), + ); } _ => unreachable!(), } completed } + pub fn wrap(self, p: &mut Parser, kind: SyntaxKind) -> CompletedMarker { + self.wrap_raw(p, kind, None) + } + pub fn wrap_error(self, p: &mut Parser, msg: impl AsRef) -> CompletedMarker { + self.wrap_raw( + p, + SyntaxKind::ERROR_CUSTOM, + Some(SyntaxError::Custom { + error: msg.as_ref().to_owned(), + }), + ) + } } --- a/crates/jrsonnet-rowan-parser/src/parser.rs +++ b/crates/jrsonnet-rowan-parser/src/parser.rs @@ -1,13 +1,12 @@ -use std::{cell::Cell, fmt::Display, rc::Rc}; +use std::{cell::Cell, fmt, rc::Rc}; use miette::{LabeledSpan, SourceOffset, SourceSpan}; -use rowan::{GreenNode, TextRange, TextSize}; +use rowan::{GreenNode, TextRange}; use crate::{ event::Event, - lex::Lexeme, marker::{CompletedMarker, Marker, Ranger}, - nodes::{BinaryOperatorKind, Literal, Number, Text, Trivia, UnaryOperatorKind}, + nodes::{BinaryOperatorKind, Literal, Number, Text, UnaryOperatorKind}, token_set::SyntaxKindSet, AstToken, SyntaxKind, SyntaxKind::*, @@ -17,20 +16,6 @@ pub struct Parse { pub green_node: GreenNode, pub errors: Vec, -} - -#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)] -pub enum ExpectedSyntax { - Named(&'static str), - Unnamed(SyntaxKind), -} -impl Display for ExpectedSyntax { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - match self { - ExpectedSyntax::Named(n) => write!(f, "{}", n), - ExpectedSyntax::Unnamed(u) => write!(f, "{:?}", u), - } - } } pub struct Parser { @@ -41,14 +26,11 @@ pub entered: u32, pub hints: Vec<(u32, TextRange, String)>, pub last_error_token: usize, - expected_syntax: Option, - expected_syntax_tracking_state: Rc>, + expected_syntax_tracking_state: Rc>, steps: Cell, } -const DEFAULT_RECOVERY_SET: SyntaxKindSet = TS![]; - -#[derive(Clone, Debug, PartialEq, Eq)] +#[derive(Clone, Debug)] pub enum SyntaxError { Unexpected { expected: ExpectedSyntax, @@ -80,11 +62,11 @@ dbg!(&val); match val.error { SyntaxError::Unexpected { expected, found } => LabeledSpan::new_with_span( - Some(format!("expected {}, found {:?}", expected, found)), + Some(format!("expected {expected}, found {found:?}")), span, ), SyntaxError::Missing { expected } => { - LabeledSpan::new_with_span(Some(format!("missing {}", expected)), span) + LabeledSpan::new_with_span(Some(format!("missing {expected}")), span) } SyntaxError::Custom { error } | SyntaxError::Hint { error } => { LabeledSpan::new_with_span(Some(error), span) @@ -102,10 +84,7 @@ entered: 0, last_error_token: 0, hints: vec![], - expected_syntax: None, - expected_syntax_tracking_state: Rc::new(Cell::new( - ExpectedSyntaxTrackingState::Unnamed, - )), + expected_syntax_tracking_state: Rc::new(Cell::new(ExpectedSyntax::Unnamed(TS![]))), steps: Cell::new(0), } } @@ -119,9 +98,8 @@ self.hints.truncate(self.hints.len() - amount) } fn clear_expected_syntaxes(&mut self) { - self.expected_syntax = None; self.expected_syntax_tracking_state - .set(ExpectedSyntaxTrackingState::Unnamed); + .set(ExpectedSyntax::Unnamed(TS![])); } pub fn start(&mut self) -> Marker { let start_event_idx = self.events.len(); @@ -166,38 +144,19 @@ } else { self.error_with_no_skip(); } - } - pub(crate) fn error_with_recovery_set( - &mut self, - recovery_set: SyntaxKindSet, - ) -> CompletedMarker { - self.error_with_recovery_set_no_default(recovery_set.union(DEFAULT_RECOVERY_SET)) } pub fn error_with_no_skip(&mut self) -> CompletedMarker { - self.error_with_recovery_set_no_default(SyntaxKindSet::ALL) + self.error_with_recovery_set(SyntaxKindSet::ALL) } - pub fn error_with_recovery_set_no_default( - &mut self, - recovery_set: SyntaxKindSet, - ) -> CompletedMarker { - let expected_syntax = self - .expected_syntax - .take() - .unwrap_or(ExpectedSyntax::Named("unknown")); + pub fn error_with_recovery_set(&mut self, recovery_set: SyntaxKindSet) -> CompletedMarker { + let expected = self.expected_syntax_tracking_state.get(); self.expected_syntax_tracking_state - .set(ExpectedSyntaxTrackingState::Unnamed); + .set(ExpectedSyntax::Unnamed(TS![])); if self.at_end() || self.at_ts(recovery_set) { - // let range = self - // .offset - // .unwrap_or_else(|| TextRange::at(TextSize::from(0), TextSize::from(0))); let m = self.start(); - let m = m.complete(self, ERROR_MISSING_TOKEN); - self.events.push(Event::Error(SyntaxError::Missing { - expected: expected_syntax, - })); - return m; + return m.complete_missing(self, expected); } let current_token = self.current(); @@ -206,11 +165,7 @@ let m = self.start(); self.bump(); - let m = m.complete(self, ERROR_UNEXPECTED_TOKEN); - self.events.push(Event::Error(SyntaxError::Unexpected { - expected: expected_syntax, - found: current_token, - })); + let m = m.complete_unexpected(self, expected, current_token); self.clear_expected_syntaxes(); m } @@ -269,8 +224,7 @@ #[must_use] pub(crate) fn expected_syntax_name(&mut self, name: &'static str) -> ExpectedSyntaxGuard { self.expected_syntax_tracking_state - .set(ExpectedSyntaxTrackingState::Named); - self.expected_syntax = Some(ExpectedSyntax::Named(name)); + .set(ExpectedSyntax::Named(name)); ExpectedSyntaxGuard::new(Rc::clone(&self.expected_syntax_tracking_state)) } @@ -278,12 +232,21 @@ self.nth_at(0, kind) } pub fn nth_at(&mut self, n: usize, kind: SyntaxKind) -> bool { - if let ExpectedSyntaxTrackingState::Unnamed = self.expected_syntax_tracking_state.get() { - self.expected_syntax = Some(ExpectedSyntax::Unnamed(kind)); + if n == 0 { + if let ExpectedSyntax::Unnamed(kinds) = self.expected_syntax_tracking_state.get() { + let kinds = kinds.with(kind); + self.expected_syntax_tracking_state + .set(ExpectedSyntax::Unnamed(kinds)) + } } self.nth(n) == kind } pub fn at_ts(&mut self, set: SyntaxKindSet) -> bool { + if let ExpectedSyntax::Unnamed(kinds) = self.expected_syntax_tracking_state.get() { + let kinds = kinds.union(set); + self.expected_syntax_tracking_state + .set(ExpectedSyntax::Unnamed(kinds)) + } set.contains(self.current()) } pub fn at_end(&mut self) -> bool { @@ -291,11 +254,11 @@ } } pub(crate) struct ExpectedSyntaxGuard { - expected_syntax_tracking_state: Rc>, + expected_syntax_tracking_state: Rc>, } impl ExpectedSyntaxGuard { - fn new(expected_syntax_tracking_state: Rc>) -> Self { + fn new(expected_syntax_tracking_state: Rc>) -> Self { Self { expected_syntax_tracking_state, } @@ -305,14 +268,22 @@ impl Drop for ExpectedSyntaxGuard { fn drop(&mut self) { self.expected_syntax_tracking_state - .set(ExpectedSyntaxTrackingState::Unnamed); + .set(ExpectedSyntax::Unnamed(TS![])); } } -#[derive(Debug, Clone, Copy)] -enum ExpectedSyntaxTrackingState { - Named, - Unnamed, +#[derive(Clone, Debug, Copy)] +pub enum ExpectedSyntax { + Named(&'static str), + Unnamed(SyntaxKindSet), +} +impl fmt::Display for ExpectedSyntax { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + ExpectedSyntax::Named(name) => write!(f, "{name}"), + ExpectedSyntax::Unnamed(set) => write!(f, "{set}"), + } + } } fn expr(p: &mut Parser) -> CompletedMarker { @@ -357,44 +328,43 @@ } Ok(lhs) } -fn compspec(p: &mut Parser) { - assert!(p.at(T![for]) || p.at(T![if])); + +const COMPSPEC: SyntaxKindSet = TS![for if]; +fn compspec(p: &mut Parser) -> CompletedMarker { + assert!(p.at_ts(COMPSPEC)); if p.at(T![for]) { let m = p.start(); p.bump(); name(p); p.expect(T![in]); expr(p); - m.complete(p, FOR_SPEC); + m.complete(p, FOR_SPEC) } else if p.at(T![if]) { let m = p.start(); p.bump(); expr(p); - m.complete(p, IF_SPEC); + m.complete(p, IF_SPEC) } else { unreachable!() } } + fn comma(p: &mut Parser) -> bool { - if p.at(T![,]) { - p.bump(); - true - } else { - false - } + comma_with_alternatives(p, TS![]) } fn comma_with_alternatives(p: &mut Parser, set: SyntaxKindSet) -> bool { if p.at(T![,]) { p.bump(); true } else if p.at_ts(set) { - p.expect_with_no_skip(T![,]); - p.bump(); + let _ex = p.expected_syntax_name("comma"); + p.expect_with_recovery_set(T![,], TS![]); true } else { false } } + fn field_name(p: &mut Parser) { let _e = p.expected_syntax_name("field name"); let m = p.start(); @@ -410,49 +380,17 @@ text(p); m.complete(p, FIELD_NAME_FIXED); } else { - p.error_with_recovery_set(TS![;]); + m.forget(p); + p.error_with_recovery_set(TS![; : :: ::: '(']); } } fn visibility(p: &mut Parser) { if p.at_ts(TS![: :: :::]) { p.bump() } else { - p.error_with_recovery_set(TS![]); + p.error_with_recovery_set(TS![=]); } } -fn field(p: &mut Parser) { - let m = p.start(); - field_name(p); - let plus = if p.at(T![+]) { - let r = p.start_ranger(); - p.bump(); - Some(r.finish(p)) - } else { - None - }; - let params = if p.at(T!['(']) { - // if let Some(plus) = plus { - // p.custom_error(plus, "can't extend with method"); - // } - params_desc(p); - // if p.at(T![+]) { - // let r = p.start_ranger(); - // p.bump(); - // p.custom_error(r.finish(p), "can't extend with method"); - // } - true - } else { - false - }; - visibility(p); - expr(p); - - if params { - m.complete(p, FIELD_METHOD) - } else { - m.complete(p, FIELD_NORMAL) - }; -} fn assertion(p: &mut Parser) { let m = p.start(); p.bump_assert(T![assert]); @@ -468,11 +406,27 @@ let m = p.start(); p.bump_assert(T!['{']); + let mut elems = 0; + let mut compspecs = Vec::new(); loop { if p.at(T!['}']) { p.bump(); break; } + if p.at_ts(COMPSPEC) { + if elems == 0 { + let m = p.start(); + m.complete_missing(p, ExpectedSyntax::Named("field definition")); + } + while p.at_ts(COMPSPEC) { + compspecs.push(compspec(p)); + } + if comma_with_alternatives(p, TS![;]) { + continue; + } + p.expect(R_BRACE); + break; + } let m = p.start(); if p.at(T![local]) { obj_local(p); @@ -481,20 +435,57 @@ assertion(p); m.complete(p, MEMBER_ASSERT_STMT) } else { - field(p); - while p.at(T![for]) || p.at(T![if]) { - compspec(p) + field_name(p); + if p.at(T![+]) { + p.bump(); + } + let params = if p.at(T!['(']) { + params_desc(p); + visibility(p); + expr(p); + true + } else if p.at_ts(TS![: :: :::]) && p.nth_at(1, T![function]) { + visibility(p); + p.bump_assert(T![function]); + params_desc(p); + expr(p); + true + } else { + visibility(p); + expr(p); + false + }; + + if params { + m.complete(p, MEMBER_FIELD_METHOD) + } else { + m.complete(p, MEMBER_FIELD_NORMAL) } - m.complete(p, MEMBER_FIELD) }; - if comma_with_alternatives(p, SyntaxKindSet::new(&[T![=]])) { + elems += 1; + while p.at_ts(COMPSPEC) { + compspecs.push(compspec(p)); + } + if comma_with_alternatives(p, TS![;]) { continue; } p.expect(R_BRACE); break; } - m.complete(p, OBJ_BODY_MEMBER_LIST); + if elems > 1 && !compspecs.is_empty() { + for errored in compspecs { + errored.wrap_error( + p, + "compspec may only be used if there is only one array element", + ); + } + m.complete(p, OBJ_BODY_MEMBER_LIST); + } else if !compspecs.is_empty() { + m.complete(p, OBJ_BODY_COMP); + } else { + m.complete(p, OBJ_BODY_MEMBER_LIST); + } m_t.complete(p, EXPR_OBJECT) } fn param(p: &mut Parser) { @@ -530,6 +521,7 @@ p.bump_assert(T!['(']); let started_named = Cell::new(false); + let mut unnamed_after_named = Vec::new(); loop { if p.at(T![')']) { @@ -545,7 +537,10 @@ started_named.set(true); } else { expr(p); - m.complete(p, ARG); + let arg = m.complete(p, ARG); + if started_named.get() { + unnamed_after_named.push(arg) + } } if comma(p) { continue; @@ -556,6 +551,11 @@ if p.at(T![tailstrict]) { p.bump() } + + for errored in unnamed_after_named { + errored.wrap_error(p, "can't use positional arguments after named"); + } + m.complete(p, ARGS_DESC); } @@ -564,8 +564,7 @@ let m = p.start(); p.bump_assert(T!['[']); - // This vec will have at most one element in case of correct input - let mut compspecs = Vec::with_capacity(1); + let mut compspecs = Vec::new(); let mut elems = 0; loop { @@ -573,16 +572,20 @@ p.bump(); break; } + if elems != 0 && p.at_ts(COMPSPEC) { + while p.at_ts(COMPSPEC) { + compspecs.push(compspec(p)); + } + if comma(p) { + continue; + } + p.expect(T![']']); + break; + } elems += 1; expr(p); - let c = p.start_ranger(); - let mut had_spec = false; - while p.at(T![for]) || p.at(T![if]) { - had_spec = true; - compspec(p) - } - if had_spec { - compspecs.push(c.finish(p)); + while p.at_ts(COMPSPEC) { + compspecs.push(compspec(p)); } if comma(p) { continue; @@ -593,10 +596,10 @@ if elems > 1 && !compspecs.is_empty() { for spec in compspecs { - // p.custom_error( - // spec, - // "compspec may only be used if there is only one array element", - // ) + spec.wrap_error( + p, + "compspec may only be used if there is only one array element", + ); } m.complete(p, EXPR_ARRAY) --- /dev/null +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec.snap @@ -0,0 +1,34 @@ +--- +source: crates/jrsonnet-rowan-parser/src/tests.rs +expression: "[a for a in [1, 2, 3]]\n" +--- +SOURCE_FILE@0..23 + EXPR_ARRAY_COMP@0..22 + L_BRACK@0..1 "[" + EXPR_VAR@1..2 + NAME@1..2 + IDENT@1..2 "a" + WHITESPACE@2..3 " " + FOR_SPEC@3..21 + FOR_KW@3..6 "for" + WHITESPACE@6..7 " " + NAME@7..8 + IDENT@7..8 "a" + WHITESPACE@8..9 " " + IN_KW@9..11 "in" + WHITESPACE@11..12 " " + EXPR_ARRAY@12..21 + L_BRACK@12..13 "[" + EXPR_NUMBER@13..14 + FLOAT@13..14 "1" + COMMA@14..15 "," + WHITESPACE@15..16 " " + EXPR_NUMBER@16..17 + FLOAT@16..17 "2" + COMMA@17..18 "," + WHITESPACE@18..19 " " + EXPR_NUMBER@19..20 + FLOAT@19..20 "3" + R_BRACK@20..21 "]" + R_BRACK@21..22 "]" + WHITESPACE@22..23 "\n" --- /dev/null +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_comma.snap @@ -0,0 +1,35 @@ +--- +source: crates/jrsonnet-rowan-parser/src/tests.rs +expression: "[a, for a in [1, 2, 3]]\n" +--- +SOURCE_FILE@0..24 + EXPR_ARRAY_COMP@0..23 + L_BRACK@0..1 "[" + EXPR_VAR@1..2 + NAME@1..2 + IDENT@1..2 "a" + COMMA@2..3 "," + WHITESPACE@3..4 " " + FOR_SPEC@4..22 + FOR_KW@4..7 "for" + WHITESPACE@7..8 " " + NAME@8..9 + IDENT@8..9 "a" + WHITESPACE@9..10 " " + IN_KW@10..12 "in" + WHITESPACE@12..13 " " + EXPR_ARRAY@13..22 + L_BRACK@13..14 "[" + EXPR_NUMBER@14..15 + FLOAT@14..15 "1" + COMMA@15..16 "," + WHITESPACE@16..17 " " + EXPR_NUMBER@17..18 + FLOAT@17..18 "2" + COMMA@18..19 "," + WHITESPACE@19..20 " " + EXPR_NUMBER@20..21 + FLOAT@20..21 "3" + R_BRACK@21..22 "]" + R_BRACK@22..23 "]" + WHITESPACE@23..24 "\n" --- /dev/null +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_incompatible_with_multiple_elems.snap @@ -0,0 +1,49 @@ +--- +source: crates/jrsonnet-rowan-parser/src/tests.rs +expression: "[a for a in [1, 2, 3], b]\n" +--- +SOURCE_FILE@0..26 + EXPR_ARRAY@0..25 + L_BRACK@0..1 "[" + EXPR_VAR@1..2 + NAME@1..2 + IDENT@1..2 "a" + WHITESPACE@2..3 " " + ERROR_CUSTOM@3..21 + FOR_SPEC@3..21 + FOR_KW@3..6 "for" + WHITESPACE@6..7 " " + NAME@7..8 + IDENT@7..8 "a" + WHITESPACE@8..9 " " + IN_KW@9..11 "in" + WHITESPACE@11..12 " " + EXPR_ARRAY@12..21 + L_BRACK@12..13 "[" + EXPR_NUMBER@13..14 + FLOAT@13..14 "1" + COMMA@14..15 "," + WHITESPACE@15..16 " " + EXPR_NUMBER@16..17 + FLOAT@16..17 "2" + COMMA@17..18 "," + WHITESPACE@18..19 " " + EXPR_NUMBER@19..20 + FLOAT@19..20 "3" + R_BRACK@20..21 "]" + COMMA@21..22 "," + WHITESPACE@22..23 " " + EXPR_VAR@23..24 + NAME@23..24 + IDENT@23..24 "b" + R_BRACK@24..25 "]" + WHITESPACE@25..26 "\n" +=== +LocatedSyntaxError { error: Custom { error: "compspec may only be used if there is only one array element" }, range: 3..21 } +=== + x syntax error + ,---- + 1 | [a for a in [1, 2, 3], b] + : ^^^^^^^^^|^^^^^^^^ + : `-- compspec may only be used if there is only one array element + `---- --- /dev/null +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_incompatible_with_multiple_elems_w.snap @@ -0,0 +1,55 @@ +--- +source: crates/jrsonnet-rowan-parser/src/tests.rs +expression: "[a, b, for a in [1, 2, 3], c]\n" +--- +SOURCE_FILE@0..30 + EXPR_ARRAY@0..29 + L_BRACK@0..1 "[" + EXPR_VAR@1..2 + NAME@1..2 + IDENT@1..2 "a" + COMMA@2..3 "," + WHITESPACE@3..4 " " + EXPR_VAR@4..5 + NAME@4..5 + IDENT@4..5 "b" + COMMA@5..6 "," + WHITESPACE@6..7 " " + ERROR_CUSTOM@7..25 + FOR_SPEC@7..25 + FOR_KW@7..10 "for" + WHITESPACE@10..11 " " + NAME@11..12 + IDENT@11..12 "a" + WHITESPACE@12..13 " " + IN_KW@13..15 "in" + WHITESPACE@15..16 " " + EXPR_ARRAY@16..25 + L_BRACK@16..17 "[" + EXPR_NUMBER@17..18 + FLOAT@17..18 "1" + COMMA@18..19 "," + WHITESPACE@19..20 " " + EXPR_NUMBER@20..21 + FLOAT@20..21 "2" + COMMA@21..22 "," + WHITESPACE@22..23 " " + EXPR_NUMBER@23..24 + FLOAT@23..24 "3" + R_BRACK@24..25 "]" + COMMA@25..26 "," + WHITESPACE@26..27 " " + EXPR_VAR@27..28 + NAME@27..28 + IDENT@27..28 "c" + R_BRACK@28..29 "]" + WHITESPACE@29..30 "\n" +=== +LocatedSyntaxError { error: Custom { error: "compspec may only be used if there is only one array element" }, range: 7..25 } +=== + x syntax error + ,---- + 1 | [a, b, for a in [1, 2, 3], c] + : ^^^^^^^^^|^^^^^^^^ + : `-- compspec may only be used if there is only one array element + `---- --- /dev/null +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_no_elems.snap @@ -0,0 +1,40 @@ +--- +source: crates/jrsonnet-rowan-parser/src/tests.rs +expression: "[for a in [1, 2, 3]]\n" +--- +SOURCE_FILE@0..21 + EXPR_ARRAY_COMP@0..20 + L_BRACK@0..1 "[" + ERROR_MISSING_TOKEN@1..1 + FOR_SPEC@1..19 + FOR_KW@1..4 "for" + WHITESPACE@4..5 " " + NAME@5..6 + IDENT@5..6 "a" + WHITESPACE@6..7 " " + IN_KW@7..9 "in" + WHITESPACE@9..10 " " + EXPR_ARRAY@10..19 + L_BRACK@10..11 "[" + EXPR_NUMBER@11..12 + FLOAT@11..12 "1" + COMMA@12..13 "," + WHITESPACE@13..14 " " + EXPR_NUMBER@14..15 + FLOAT@14..15 "2" + COMMA@15..16 "," + WHITESPACE@16..17 " " + EXPR_NUMBER@17..18 + FLOAT@17..18 "3" + R_BRACK@18..19 "]" + R_BRACK@19..20 "]" + WHITESPACE@20..21 "\n" +=== +LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 1..1 } +=== + x syntax error + ,---- + 1 | [for a in [1, 2, 3]] + : ^ + : `-- missing expression + `---- --- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_rparen.snap +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_rparen.snap @@ -21,7 +21,7 @@ ERROR_MISSING_TOKEN@14..14 ERROR_MISSING_TOKEN@14..14 === -LocatedSyntaxError { error: Missing { expected: Unnamed(R_PAREN) }, range: 14..14 } +LocatedSyntaxError { error: Missing { expected: Unnamed(SyntaxKindSet([R_PAREN, COMMA, ASSIGN])) }, range: 14..14 } LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 14..14 } === x syntax error @@ -29,5 +29,5 @@ 1 | function(a, b : ^^ : |`-- missing expression - : `-- missing R_PAREN + : `-- missing R_PAREN, COMMA or ASSIGN `---- --- /dev/null +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_method.snap @@ -0,0 +1,52 @@ +--- +source: crates/jrsonnet-rowan-parser/src/tests.rs +expression: "local\n\ta(x) = x,\n\ta = function(x) x,\n; c\n" +--- +SOURCE_FILE@0..41 + EXPR_LOCAL@0..40 + LOCAL_KW@0..5 "local" + WHITESPACE@5..7 "\n\t" + BIND_FUNCTION@7..15 + NAME@7..8 + IDENT@7..8 "a" + PARAMS_DESC@8..11 + L_PAREN@8..9 "(" + PARAM@9..10 + DESTRUCT_FULL@9..10 + NAME@9..10 + IDENT@9..10 "x" + R_PAREN@10..11 ")" + WHITESPACE@11..12 " " + ASSIGN@12..13 "=" + WHITESPACE@13..14 " " + EXPR_VAR@14..15 + NAME@14..15 + IDENT@14..15 "x" + COMMA@15..16 "," + WHITESPACE@16..18 "\n\t" + BIND_FUNCTION@18..35 + NAME@18..19 + IDENT@18..19 "a" + WHITESPACE@19..20 " " + ASSIGN@20..21 "=" + WHITESPACE@21..22 " " + FUNCTION_KW@22..30 "function" + PARAMS_DESC@30..33 + L_PAREN@30..31 "(" + PARAM@31..32 + DESTRUCT_FULL@31..32 + NAME@31..32 + IDENT@31..32 "x" + R_PAREN@32..33 ")" + WHITESPACE@33..34 " " + EXPR_VAR@34..35 + NAME@34..35 + IDENT@34..35 "x" + COMMA@35..36 "," + WHITESPACE@36..37 "\n" + SEMI@37..38 ";" + WHITESPACE@38..39 " " + EXPR_VAR@39..40 + NAME@39..40 + IDENT@39..40 "c" + WHITESPACE@40..41 "\n" --- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_no_value_recovery.snap +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_no_value_recovery.snap @@ -33,7 +33,7 @@ ERROR_MISSING_TOKEN@25..25 ERROR_MISSING_TOKEN@25..25 === -LocatedSyntaxError { error: Missing { expected: Unnamed(SEMI) }, range: 25..25 } +LocatedSyntaxError { error: Missing { expected: Unnamed(SyntaxKindSet([L_BRACK, L_PAREN, L_BRACE, SEMI, DOT, COMMA])) }, range: 25..25 } LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 25..25 } === x syntax error @@ -42,5 +42,5 @@ 3 | 1 : ^^ : |`-- missing expression - : `-- missing SEMI + : `-- missing L_BRACK, L_PAREN, L_BRACE, SEMI, DOT or COMMA `---- --- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_novalue.snap +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_novalue.snap @@ -18,7 +18,7 @@ ERROR_MISSING_TOKEN@10..10 === LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 10..10 } -LocatedSyntaxError { error: Missing { expected: Unnamed(SEMI) }, range: 10..10 } +LocatedSyntaxError { error: Missing { expected: Unnamed(SyntaxKindSet([SEMI, COMMA])) }, range: 10..10 } LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 10..10 } === x syntax error @@ -26,6 +26,6 @@ 1 | local a = : ^^^ : `-- missing expression - : |`-- missing SEMI + : |`-- missing SEMI or COMMA : `-- missing expression `---- --- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__named_before_positional.snap +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__named_before_positional.snap @@ -3,59 +3,68 @@ expression: "a(1, 2, b=4, 3, 5, k = 12, 6)\n" --- SOURCE_FILE@0..30 - EXPR_APPLY@0..30 + EXPR_APPLY@0..29 EXPR_VAR@0..1 - IDENT@0..1 "a" - L_PAREN@1..2 "(" - ARG@2..3 - EXPR_NUMBER@2..3 - NUMBER@2..3 "1" - COMMA@3..4 "," - WHITESPACE@4..5 " " - ARG@5..6 - EXPR_NUMBER@5..6 - NUMBER@5..6 "2" - COMMA@6..7 "," - WHITESPACE@7..8 " " - ARG@8..11 - IDENT@8..9 "b" - ASSIGN@9..10 "=" - EXPR_NUMBER@10..11 - NUMBER@10..11 "4" - COMMA@11..12 "," - WHITESPACE@12..13 " " - ERROR@13..28 - ARG@13..14 - EXPR_NUMBER@13..14 - NUMBER@13..14 "3" + NAME@0..1 + IDENT@0..1 "a" + ARGS_DESC@1..29 + L_PAREN@1..2 "(" + ARG@2..3 + EXPR_NUMBER@2..3 + FLOAT@2..3 "1" + COMMA@3..4 "," + WHITESPACE@4..5 " " + ARG@5..6 + EXPR_NUMBER@5..6 + FLOAT@5..6 "2" + COMMA@6..7 "," + WHITESPACE@7..8 " " + ARG@8..11 + NAME@8..9 + IDENT@8..9 "b" + ASSIGN@9..10 "=" + EXPR_NUMBER@10..11 + FLOAT@10..11 "4" + COMMA@11..12 "," + WHITESPACE@12..13 " " + ERROR_CUSTOM@13..14 + ARG@13..14 + EXPR_NUMBER@13..14 + FLOAT@13..14 "3" COMMA@14..15 "," WHITESPACE@15..16 " " - ARG@16..17 - EXPR_NUMBER@16..17 - NUMBER@16..17 "5" + ERROR_CUSTOM@16..17 + ARG@16..17 + EXPR_NUMBER@16..17 + FLOAT@16..17 "5" COMMA@17..18 "," WHITESPACE@18..19 " " ARG@19..25 - IDENT@19..20 "k" + NAME@19..20 + IDENT@19..20 "k" WHITESPACE@20..21 " " ASSIGN@21..22 "=" WHITESPACE@22..23 " " EXPR_NUMBER@23..25 - NUMBER@23..25 "12" + FLOAT@23..25 "12" COMMA@25..26 "," WHITESPACE@26..27 " " - ARG@27..28 - EXPR_NUMBER@27..28 - NUMBER@27..28 "6" - R_PAREN@28..29 ")" - WHITESPACE@29..30 "\n" + ERROR_CUSTOM@27..28 + ARG@27..28 + EXPR_NUMBER@27..28 + FLOAT@27..28 "6" + R_PAREN@28..29 ")" + WHITESPACE@29..30 "\n" === -Custom { error: "positional arguments can't be placed after named", range: 13..28 } +LocatedSyntaxError { error: Custom { error: "can't use positional arguments after named" }, range: 13..14 } +LocatedSyntaxError { error: Custom { error: "can't use positional arguments after named" }, range: 16..17 } +LocatedSyntaxError { error: Custom { error: "can't use positional arguments after named" }, range: 27..28 } === x syntax error ,---- 1 | a(1, 2, b=4, 3, 5, k = 12, 6) - : ^^^^^^^|^^^^^^^ - : `-- positional arguments can't be placed after named + : | | | + : | | `-- can't use positional arguments after named + : | `-- can't use positional arguments after named + : `-- can't use positional arguments after named `---- - --- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_lhs.snap +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_lhs.snap @@ -9,7 +9,7 @@ WHITESPACE@1..2 " " === LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 0..0 } -LocatedSyntaxError { error: Unexpected { expected: Unnamed(EOF), found: PLUS }, range: 0..1 } +LocatedSyntaxError { error: Unexpected { expected: Unnamed(SyntaxKindSet([EOF])), found: PLUS }, range: 0..1 } === x syntax error ,---- --- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_operator.snap +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_operator.snap @@ -10,11 +10,11 @@ FLOAT@2..3 "2" WHITESPACE@3..4 "\n" === -LocatedSyntaxError { error: Unexpected { expected: Unnamed(EOF), found: FLOAT }, range: 2..3 } +LocatedSyntaxError { error: Unexpected { expected: Unnamed(SyntaxKindSet([EOF, L_BRACK, L_PAREN, L_BRACE, DOT])), found: FLOAT }, range: 2..3 } === x syntax error ,---- 1 | 2 2 : | - : `-- expected EOF, found FLOAT + : `-- expected EOF, L_BRACK, L_PAREN, L_BRACE or DOT, found FLOAT `---- --- /dev/null +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec.snap @@ -0,0 +1,39 @@ +--- +source: crates/jrsonnet-rowan-parser/src/tests.rs +expression: "{a:1 for a in [1, 2, 3]}\n" +--- +SOURCE_FILE@0..25 + EXPR_OBJECT@0..24 + OBJ_BODY_COMP@0..24 + L_BRACE@0..1 "{" + MEMBER_FIELD_NORMAL@1..4 + FIELD_NAME_FIXED@1..2 + NAME@1..2 + IDENT@1..2 "a" + COLON@2..3 ":" + EXPR_NUMBER@3..4 + FLOAT@3..4 "1" + WHITESPACE@4..5 " " + FOR_SPEC@5..23 + FOR_KW@5..8 "for" + WHITESPACE@8..9 " " + NAME@9..10 + IDENT@9..10 "a" + WHITESPACE@10..11 " " + IN_KW@11..13 "in" + WHITESPACE@13..14 " " + EXPR_ARRAY@14..23 + L_BRACK@14..15 "[" + EXPR_NUMBER@15..16 + FLOAT@15..16 "1" + COMMA@16..17 "," + WHITESPACE@17..18 " " + EXPR_NUMBER@18..19 + FLOAT@18..19 "2" + COMMA@19..20 "," + WHITESPACE@20..21 " " + EXPR_NUMBER@21..22 + FLOAT@21..22 "3" + R_BRACK@22..23 "]" + R_BRACE@23..24 "}" + WHITESPACE@24..25 "\n" --- /dev/null +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_comma.snap @@ -0,0 +1,40 @@ +--- +source: crates/jrsonnet-rowan-parser/src/tests.rs +expression: "{a:1, for a in [1, 2, 3]}\n" +--- +SOURCE_FILE@0..26 + EXPR_OBJECT@0..25 + OBJ_BODY_COMP@0..25 + L_BRACE@0..1 "{" + MEMBER_FIELD_NORMAL@1..4 + FIELD_NAME_FIXED@1..2 + NAME@1..2 + IDENT@1..2 "a" + COLON@2..3 ":" + EXPR_NUMBER@3..4 + FLOAT@3..4 "1" + COMMA@4..5 "," + WHITESPACE@5..6 " " + FOR_SPEC@6..24 + FOR_KW@6..9 "for" + WHITESPACE@9..10 " " + NAME@10..11 + IDENT@10..11 "a" + WHITESPACE@11..12 " " + IN_KW@12..14 "in" + WHITESPACE@14..15 " " + EXPR_ARRAY@15..24 + L_BRACK@15..16 "[" + EXPR_NUMBER@16..17 + FLOAT@16..17 "1" + COMMA@17..18 "," + WHITESPACE@18..19 " " + EXPR_NUMBER@19..20 + FLOAT@19..20 "2" + COMMA@20..21 "," + WHITESPACE@21..22 " " + EXPR_NUMBER@22..23 + FLOAT@22..23 "3" + R_BRACK@23..24 "]" + R_BRACE@24..25 "}" + WHITESPACE@25..26 "\n" --- /dev/null +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_incompatible_with_multiple_elems.snap @@ -0,0 +1,58 @@ +--- +source: crates/jrsonnet-rowan-parser/src/tests.rs +expression: "{a:1 for a in [1, 2, 3], b:1}\n" +--- +SOURCE_FILE@0..30 + EXPR_OBJECT@0..29 + OBJ_BODY_MEMBER_LIST@0..29 + L_BRACE@0..1 "{" + MEMBER_FIELD_NORMAL@1..4 + FIELD_NAME_FIXED@1..2 + NAME@1..2 + IDENT@1..2 "a" + COLON@2..3 ":" + EXPR_NUMBER@3..4 + FLOAT@3..4 "1" + WHITESPACE@4..5 " " + ERROR_CUSTOM@5..23 + FOR_SPEC@5..23 + FOR_KW@5..8 "for" + WHITESPACE@8..9 " " + NAME@9..10 + IDENT@9..10 "a" + WHITESPACE@10..11 " " + IN_KW@11..13 "in" + WHITESPACE@13..14 " " + EXPR_ARRAY@14..23 + L_BRACK@14..15 "[" + EXPR_NUMBER@15..16 + FLOAT@15..16 "1" + COMMA@16..17 "," + WHITESPACE@17..18 " " + EXPR_NUMBER@18..19 + FLOAT@18..19 "2" + COMMA@19..20 "," + WHITESPACE@20..21 " " + EXPR_NUMBER@21..22 + FLOAT@21..22 "3" + R_BRACK@22..23 "]" + COMMA@23..24 "," + WHITESPACE@24..25 " " + MEMBER_FIELD_NORMAL@25..28 + FIELD_NAME_FIXED@25..26 + NAME@25..26 + IDENT@25..26 "b" + COLON@26..27 ":" + EXPR_NUMBER@27..28 + FLOAT@27..28 "1" + R_BRACE@28..29 "}" + WHITESPACE@29..30 "\n" +=== +LocatedSyntaxError { error: Custom { error: "compspec may only be used if there is only one array element" }, range: 5..23 } +=== + x syntax error + ,---- + 1 | {a:1 for a in [1, 2, 3], b:1} + : ^^^^^^^^^|^^^^^^^^ + : `-- compspec may only be used if there is only one array element + `---- --- /dev/null +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_incompatible_with_multiple_elems_w.snap @@ -0,0 +1,68 @@ +--- +source: crates/jrsonnet-rowan-parser/src/tests.rs +expression: "{a:1, b:1, for a in [1, 2, 3], c:1}\n" +--- +SOURCE_FILE@0..36 + EXPR_OBJECT@0..35 + OBJ_BODY_MEMBER_LIST@0..35 + L_BRACE@0..1 "{" + MEMBER_FIELD_NORMAL@1..4 + FIELD_NAME_FIXED@1..2 + NAME@1..2 + IDENT@1..2 "a" + COLON@2..3 ":" + EXPR_NUMBER@3..4 + FLOAT@3..4 "1" + COMMA@4..5 "," + WHITESPACE@5..6 " " + MEMBER_FIELD_NORMAL@6..9 + FIELD_NAME_FIXED@6..7 + NAME@6..7 + IDENT@6..7 "b" + COLON@7..8 ":" + EXPR_NUMBER@8..9 + FLOAT@8..9 "1" + COMMA@9..10 "," + WHITESPACE@10..11 " " + ERROR_CUSTOM@11..29 + FOR_SPEC@11..29 + FOR_KW@11..14 "for" + WHITESPACE@14..15 " " + NAME@15..16 + IDENT@15..16 "a" + WHITESPACE@16..17 " " + IN_KW@17..19 "in" + WHITESPACE@19..20 " " + EXPR_ARRAY@20..29 + L_BRACK@20..21 "[" + EXPR_NUMBER@21..22 + FLOAT@21..22 "1" + COMMA@22..23 "," + WHITESPACE@23..24 " " + EXPR_NUMBER@24..25 + FLOAT@24..25 "2" + COMMA@25..26 "," + WHITESPACE@26..27 " " + EXPR_NUMBER@27..28 + FLOAT@27..28 "3" + R_BRACK@28..29 "]" + COMMA@29..30 "," + WHITESPACE@30..31 " " + MEMBER_FIELD_NORMAL@31..34 + FIELD_NAME_FIXED@31..32 + NAME@31..32 + IDENT@31..32 "c" + COLON@32..33 ":" + EXPR_NUMBER@33..34 + FLOAT@33..34 "1" + R_BRACE@34..35 "}" + WHITESPACE@35..36 "\n" +=== +LocatedSyntaxError { error: Custom { error: "compspec may only be used if there is only one array element" }, range: 11..29 } +=== + x syntax error + ,---- + 1 | {a:1, b:1, for a in [1, 2, 3], c:1} + : ^^^^^^^^^|^^^^^^^^ + : `-- compspec may only be used if there is only one array element + `---- --- /dev/null +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_no_elems.snap @@ -0,0 +1,41 @@ +--- +source: crates/jrsonnet-rowan-parser/src/tests.rs +expression: "{for a in [1, 2, 3]}\n" +--- +SOURCE_FILE@0..21 + EXPR_OBJECT@0..20 + OBJ_BODY_COMP@0..20 + L_BRACE@0..1 "{" + ERROR_MISSING_TOKEN@1..1 + FOR_SPEC@1..19 + FOR_KW@1..4 "for" + WHITESPACE@4..5 " " + NAME@5..6 + IDENT@5..6 "a" + WHITESPACE@6..7 " " + IN_KW@7..9 "in" + WHITESPACE@9..10 " " + EXPR_ARRAY@10..19 + L_BRACK@10..11 "[" + EXPR_NUMBER@11..12 + FLOAT@11..12 "1" + COMMA@12..13 "," + WHITESPACE@13..14 " " + EXPR_NUMBER@14..15 + FLOAT@14..15 "2" + COMMA@15..16 "," + WHITESPACE@16..17 " " + EXPR_NUMBER@17..18 + FLOAT@17..18 "3" + R_BRACK@18..19 "]" + R_BRACE@19..20 "}" + WHITESPACE@20..21 "\n" +=== +LocatedSyntaxError { error: Missing { expected: Named("field definition") }, range: 1..1 } +=== + x syntax error + ,---- + 1 | {for a in [1, 2, 3]} + : ^ + : `-- missing field definition + `---- --- /dev/null +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_method.snap @@ -0,0 +1,49 @@ +--- +source: crates/jrsonnet-rowan-parser/src/tests.rs +expression: "{\n\ta(x): x,\n\ta: function(x) x,\n}\n" +--- +SOURCE_FILE@0..33 + EXPR_OBJECT@0..32 + OBJ_BODY_MEMBER_LIST@0..32 + L_BRACE@0..1 "{" + WHITESPACE@1..3 "\n\t" + MEMBER_FIELD_METHOD@3..10 + FIELD_NAME_FIXED@3..4 + NAME@3..4 + IDENT@3..4 "a" + PARAMS_DESC@4..7 + L_PAREN@4..5 "(" + PARAM@5..6 + DESTRUCT_FULL@5..6 + NAME@5..6 + IDENT@5..6 "x" + R_PAREN@6..7 ")" + COLON@7..8 ":" + WHITESPACE@8..9 " " + EXPR_VAR@9..10 + NAME@9..10 + IDENT@9..10 "x" + COMMA@10..11 "," + WHITESPACE@11..13 "\n\t" + MEMBER_FIELD_METHOD@13..29 + FIELD_NAME_FIXED@13..14 + NAME@13..14 + IDENT@13..14 "a" + COLON@14..15 ":" + WHITESPACE@15..16 " " + FUNCTION_KW@16..24 "function" + PARAMS_DESC@24..27 + L_PAREN@24..25 "(" + PARAM@25..26 + DESTRUCT_FULL@25..26 + NAME@25..26 + IDENT@25..26 "x" + R_PAREN@26..27 ")" + WHITESPACE@27..28 " " + EXPR_VAR@28..29 + NAME@28..29 + IDENT@28..29 "x" + COMMA@29..30 "," + WHITESPACE@30..31 "\n" + R_BRACE@31..32 "}" + WHITESPACE@32..33 "\n" --- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__stdlib.snap +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__stdlib.snap @@ -42,2575 +42,2553 @@ IDENT@39..41 "id" COMMA@41..42 "," WHITESPACE@42..46 "\n\n " - MEMBER_FIELD@46..224 - FIELD_NORMAL@46..224 - FIELD_NAME_FIXED@46..54 - NAME@46..54 - IDENT@46..54 "thisFile" - COLONCOLON@54..56 "::" - WHITESPACE@56..57 " " - EXPR_ERROR@57..224 - ERROR_KW@57..62 "error" - WHITESPACE@62..63 " " - EXPR_STRING@63..224 - STRING_SINGLE@63..224 "'std.thisFile is depr ..." + MEMBER_FIELD_NORMAL@46..224 + FIELD_NAME_FIXED@46..54 + NAME@46..54 + IDENT@46..54 "thisFile" + COLONCOLON@54..56 "::" + WHITESPACE@56..57 " " + EXPR_ERROR@57..224 + ERROR_KW@57..62 "error" + WHITESPACE@62..63 " " + EXPR_STRING@63..224 + STRING_SINGLE@63..224 "'std.thisFile is depr ..." COMMA@224..225 "," WHITESPACE@225..229 "\n\n " - MEMBER_FIELD@229..249 - FIELD_METHOD@229..249 - FIELD_NAME_FIXED@229..237 - NAME@229..237 - IDENT@229..237 "toString" - PARAMS_DESC@237..240 - L_PAREN@237..238 "(" - PARAM@238..239 - DESTRUCT_FULL@238..239 - NAME@238..239 - IDENT@238..239 "a" - R_PAREN@239..240 ")" - COLONCOLON@240..242 "::" - WHITESPACE@242..243 " " - EXPR_BINARY@243..249 - LHS_EXPR@243..245 - EXPR_STRING@243..245 - STRING_SINGLE@243..245 "''" - WHITESPACE@245..246 " " - PLUS@246..247 "+" - WHITESPACE@247..248 " " - EXPR_VAR@248..249 - NAME@248..249 - IDENT@248..249 "a" + MEMBER_FIELD_METHOD@229..249 + FIELD_NAME_FIXED@229..237 + NAME@229..237 + IDENT@229..237 "toString" + PARAMS_DESC@237..240 + L_PAREN@237..238 "(" + PARAM@238..239 + DESTRUCT_FULL@238..239 + NAME@238..239 + IDENT@238..239 "a" + R_PAREN@239..240 ")" + COLONCOLON@240..242 "::" + WHITESPACE@242..243 " " + EXPR_BINARY@243..249 + LHS_EXPR@243..245 + EXPR_STRING@243..245 + STRING_SINGLE@243..245 "''" + WHITESPACE@245..246 " " + PLUS@246..247 "+" + WHITESPACE@247..248 " " + EXPR_VAR@248..249 + NAME@248..249 + IDENT@248..249 "a" COMMA@249..250 "," WHITESPACE@250..254 "\n\n " - MEMBER_FIELD@254..397 - FIELD_METHOD@254..397 - FIELD_NAME_FIXED@254..265 - NAME@254..265 - IDENT@254..265 "lstripChars" - PARAMS_DESC@265..277 - L_PAREN@265..266 "(" - PARAM@266..269 - DESTRUCT_FULL@266..269 - NAME@266..269 - IDENT@266..269 "str" - COMMA@269..270 "," - WHITESPACE@270..271 " " - PARAM@271..276 - DESTRUCT_FULL@271..276 - NAME@271..276 - IDENT@271..276 "chars" - R_PAREN@276..277 ")" - COLONCOLON@277..279 "::" - WHITESPACE@279..284 "\n " - EXPR_IF_THEN_ELSE@284..397 - IF_KW@284..286 "if" - WHITESPACE@286..287 " " - EXPR_BINARY@287..335 - LHS_EXPR@287..306 - EXPR_BINARY@287..306 - LHS_EXPR@287..302 - EXPR_APPLY@287..302 - EXPR_INDEX@287..297 - EXPR_VAR@287..290 - NAME@287..290 - IDENT@287..290 "std" - DOT@290..291 "." - NAME@291..297 - IDENT@291..297 "length" - ARGS_DESC@297..302 - L_PAREN@297..298 "(" - ARG@298..301 - EXPR_VAR@298..301 - NAME@298..301 - IDENT@298..301 "str" - R_PAREN@301..302 ")" - WHITESPACE@302..303 " " - GT@303..304 ">" - WHITESPACE@304..305 " " - EXPR_NUMBER@305..306 - FLOAT@305..306 "0" - WHITESPACE@306..307 " " - AND@307..309 "&&" - WHITESPACE@309..310 " " - EXPR_APPLY@310..335 - EXPR_INDEX@310..320 - EXPR_VAR@310..313 - NAME@310..313 - IDENT@310..313 "std" - DOT@313..314 "." - NAME@314..320 - IDENT@314..320 "member" - ARGS_DESC@320..335 - L_PAREN@320..321 "(" - ARG@321..326 - EXPR_VAR@321..326 - NAME@321..326 - IDENT@321..326 "chars" - COMMA@326..327 "," - WHITESPACE@327..328 " " - ARG@328..334 - EXPR_INDEX_EXPR@328..334 - LHS_EXPR@328..331 - EXPR_VAR@328..331 - NAME@328..331 - IDENT@328..331 "str" - L_BRACK@331..332 "[" - EXPR_NUMBER@332..333 - FLOAT@332..333 "0" - R_BRACK@333..334 "]" - R_PAREN@334..335 ")" - WHITESPACE@335..336 " " - THEN_KW@336..340 "then" - WHITESPACE@340..347 "\n " - TRUE_EXPR@347..378 - EXPR_APPLY@347..378 - EXPR_INDEX@347..362 - EXPR_VAR@347..350 - NAME@347..350 - IDENT@347..350 "std" - DOT@350..351 "." - NAME@351..362 - IDENT@351..362 "lstripChars" - ARGS_DESC@362..378 - L_PAREN@362..363 "(" - ARG@363..370 - EXPR_SLICE@363..370 - EXPR_VAR@363..366 - NAME@363..366 - IDENT@363..366 "str" - SLICE_DESC@366..370 - L_BRACK@366..367 "[" - EXPR_NUMBER@367..368 - FLOAT@367..368 "1" - COLON@368..369 ":" - R_BRACK@369..370 "]" - COMMA@370..371 "," - WHITESPACE@371..372 " " - ARG@372..377 - EXPR_VAR@372..377 - NAME@372..377 - IDENT@372..377 "chars" - R_PAREN@377..378 ")" - WHITESPACE@378..383 "\n " - ELSE_KW@383..387 "else" - WHITESPACE@387..394 "\n " - FALSE_EXPR@394..397 - EXPR_VAR@394..397 - NAME@394..397 - IDENT@394..397 "str" + MEMBER_FIELD_METHOD@254..397 + FIELD_NAME_FIXED@254..265 + NAME@254..265 + IDENT@254..265 "lstripChars" + PARAMS_DESC@265..277 + L_PAREN@265..266 "(" + PARAM@266..269 + DESTRUCT_FULL@266..269 + NAME@266..269 + IDENT@266..269 "str" + COMMA@269..270 "," + WHITESPACE@270..271 " " + PARAM@271..276 + DESTRUCT_FULL@271..276 + NAME@271..276 + IDENT@271..276 "chars" + R_PAREN@276..277 ")" + COLONCOLON@277..279 "::" + WHITESPACE@279..284 "\n " + EXPR_IF_THEN_ELSE@284..397 + IF_KW@284..286 "if" + WHITESPACE@286..287 " " + EXPR_BINARY@287..335 + LHS_EXPR@287..306 + EXPR_BINARY@287..306 + LHS_EXPR@287..302 + EXPR_APPLY@287..302 + EXPR_INDEX@287..297 + EXPR_VAR@287..290 + NAME@287..290 + IDENT@287..290 "std" + DOT@290..291 "." + NAME@291..297 + IDENT@291..297 "length" + ARGS_DESC@297..302 + L_PAREN@297..298 "(" + ARG@298..301 + EXPR_VAR@298..301 + NAME@298..301 + IDENT@298..301 "str" + R_PAREN@301..302 ")" + WHITESPACE@302..303 " " + GT@303..304 ">" + WHITESPACE@304..305 " " + EXPR_NUMBER@305..306 + FLOAT@305..306 "0" + WHITESPACE@306..307 " " + AND@307..309 "&&" + WHITESPACE@309..310 " " + EXPR_APPLY@310..335 + EXPR_INDEX@310..320 + EXPR_VAR@310..313 + NAME@310..313 + IDENT@310..313 "std" + DOT@313..314 "." + NAME@314..320 + IDENT@314..320 "member" + ARGS_DESC@320..335 + L_PAREN@320..321 "(" + ARG@321..326 + EXPR_VAR@321..326 + NAME@321..326 + IDENT@321..326 "chars" + COMMA@326..327 "," + WHITESPACE@327..328 " " + ARG@328..334 + EXPR_INDEX_EXPR@328..334 + LHS_EXPR@328..331 + EXPR_VAR@328..331 + NAME@328..331 + IDENT@328..331 "str" + L_BRACK@331..332 "[" + EXPR_NUMBER@332..333 + FLOAT@332..333 "0" + R_BRACK@333..334 "]" + R_PAREN@334..335 ")" + WHITESPACE@335..336 " " + THEN_KW@336..340 "then" + WHITESPACE@340..347 "\n " + TRUE_EXPR@347..378 + EXPR_APPLY@347..378 + EXPR_INDEX@347..362 + EXPR_VAR@347..350 + NAME@347..350 + IDENT@347..350 "std" + DOT@350..351 "." + NAME@351..362 + IDENT@351..362 "lstripChars" + ARGS_DESC@362..378 + L_PAREN@362..363 "(" + ARG@363..370 + EXPR_SLICE@363..370 + EXPR_VAR@363..366 + NAME@363..366 + IDENT@363..366 "str" + SLICE_DESC@366..370 + L_BRACK@366..367 "[" + EXPR_NUMBER@367..368 + FLOAT@367..368 "1" + COLON@368..369 ":" + R_BRACK@369..370 "]" + COMMA@370..371 "," + WHITESPACE@371..372 " " + ARG@372..377 + EXPR_VAR@372..377 + NAME@372..377 + IDENT@372..377 "chars" + R_PAREN@377..378 ")" + WHITESPACE@378..383 "\n " + ELSE_KW@383..387 "else" + WHITESPACE@387..394 "\n " + FALSE_EXPR@394..397 + EXPR_VAR@394..397 + NAME@394..397 + IDENT@394..397 "str" COMMA@397..398 "," WHITESPACE@398..402 "\n\n " - MEMBER_FIELD@402..578 - FIELD_METHOD@402..578 - FIELD_NAME_FIXED@402..413 - NAME@402..413 - IDENT@402..413 "rstripChars" - PARAMS_DESC@413..425 - L_PAREN@413..414 "(" - PARAM@414..417 - DESTRUCT_FULL@414..417 - NAME@414..417 - IDENT@414..417 "str" - COMMA@417..418 "," - WHITESPACE@418..419 " " - PARAM@419..424 - DESTRUCT_FULL@419..424 - NAME@419..424 - IDENT@419..424 "chars" - R_PAREN@424..425 ")" - COLONCOLON@425..427 "::" - WHITESPACE@427..432 "\n " - EXPR_LOCAL@432..578 - LOCAL_KW@432..437 "local" - WHITESPACE@437..438 " " - BIND_DESTRUCT@438..459 - DESTRUCT_FULL@438..441 - NAME@438..441 - IDENT@438..441 "len" - WHITESPACE@441..442 " " - ASSIGN@442..443 "=" - WHITESPACE@443..444 " " - EXPR_APPLY@444..459 - EXPR_INDEX@444..454 - EXPR_VAR@444..447 - NAME@444..447 - IDENT@444..447 "std" - DOT@447..448 "." - NAME@448..454 - IDENT@448..454 "length" - ARGS_DESC@454..459 - L_PAREN@454..455 "(" - ARG@455..458 - EXPR_VAR@455..458 - NAME@455..458 - IDENT@455..458 "str" - R_PAREN@458..459 ")" - SEMI@459..460 ";" - WHITESPACE@460..465 "\n " - EXPR_IF_THEN_ELSE@465..578 - IF_KW@465..467 "if" - WHITESPACE@467..468 " " - EXPR_BINARY@468..510 - LHS_EXPR@468..475 - EXPR_BINARY@468..475 - LHS_EXPR@468..471 - EXPR_VAR@468..471 - NAME@468..471 - IDENT@468..471 "len" - WHITESPACE@471..472 " " - GT@472..473 ">" - WHITESPACE@473..474 " " - EXPR_NUMBER@474..475 - FLOAT@474..475 "0" - WHITESPACE@475..476 " " - AND@476..478 "&&" - WHITESPACE@478..479 " " - EXPR_APPLY@479..510 - EXPR_INDEX@479..489 - EXPR_VAR@479..482 - NAME@479..482 - IDENT@479..482 "std" - DOT@482..483 "." - NAME@483..489 - IDENT@483..489 "member" - ARGS_DESC@489..510 - L_PAREN@489..490 "(" - ARG@490..495 - EXPR_VAR@490..495 - NAME@490..495 - IDENT@490..495 "chars" - COMMA@495..496 "," - WHITESPACE@496..497 " " - ARG@497..509 - EXPR_INDEX_EXPR@497..509 - LHS_EXPR@497..500 - EXPR_VAR@497..500 - NAME@497..500 - IDENT@497..500 "str" - L_BRACK@500..501 "[" - EXPR_BINARY@501..508 - LHS_EXPR@501..504 - EXPR_VAR@501..504 - NAME@501..504 - IDENT@501..504 "len" - WHITESPACE@504..505 " " - MINUS@505..506 "-" - WHITESPACE@506..507 " " - EXPR_NUMBER@507..508 - FLOAT@507..508 "1" - R_BRACK@508..509 "]" - R_PAREN@509..510 ")" - WHITESPACE@510..511 " " - THEN_KW@511..515 "then" - WHITESPACE@515..522 "\n " - TRUE_EXPR@522..559 - EXPR_APPLY@522..559 - EXPR_INDEX@522..537 - EXPR_VAR@522..525 - NAME@522..525 - IDENT@522..525 "std" - DOT@525..526 "." - NAME@526..537 - IDENT@526..537 "rstripChars" - ARGS_DESC@537..559 - L_PAREN@537..538 "(" - ARG@538..551 - EXPR_SLICE@538..551 - EXPR_VAR@538..541 - NAME@538..541 - IDENT@538..541 "str" - SLICE_DESC@541..551 - L_BRACK@541..542 "[" - COLON@542..543 ":" - SLICE_DESC_END@543..550 - EXPR_BINARY@543..550 - LHS_EXPR@543..546 - EXPR_VAR@543..546 - NAME@543..546 - IDENT@543..546 "len" - WHITESPACE@546..547 " " - MINUS@547..548 "-" - WHITESPACE@548..549 " " - EXPR_NUMBER@549..550 - FLOAT@549..550 "1" - R_BRACK@550..551 "]" - COMMA@551..552 "," - WHITESPACE@552..553 " " - ARG@553..558 - EXPR_VAR@553..558 - NAME@553..558 - IDENT@553..558 "chars" - R_PAREN@558..559 ")" - WHITESPACE@559..564 "\n " - ELSE_KW@564..568 "else" - WHITESPACE@568..575 "\n " - FALSE_EXPR@575..578 - EXPR_VAR@575..578 - NAME@575..578 - IDENT@575..578 "str" + MEMBER_FIELD_METHOD@402..578 + FIELD_NAME_FIXED@402..413 + NAME@402..413 + IDENT@402..413 "rstripChars" + PARAMS_DESC@413..425 + L_PAREN@413..414 "(" + PARAM@414..417 + DESTRUCT_FULL@414..417 + NAME@414..417 + IDENT@414..417 "str" + COMMA@417..418 "," + WHITESPACE@418..419 " " + PARAM@419..424 + DESTRUCT_FULL@419..424 + NAME@419..424 + IDENT@419..424 "chars" + R_PAREN@424..425 ")" + COLONCOLON@425..427 "::" + WHITESPACE@427..432 "\n " + EXPR_LOCAL@432..578 + LOCAL_KW@432..437 "local" + WHITESPACE@437..438 " " + BIND_DESTRUCT@438..459 + DESTRUCT_FULL@438..441 + NAME@438..441 + IDENT@438..441 "len" + WHITESPACE@441..442 " " + ASSIGN@442..443 "=" + WHITESPACE@443..444 " " + EXPR_APPLY@444..459 + EXPR_INDEX@444..454 + EXPR_VAR@444..447 + NAME@444..447 + IDENT@444..447 "std" + DOT@447..448 "." + NAME@448..454 + IDENT@448..454 "length" + ARGS_DESC@454..459 + L_PAREN@454..455 "(" + ARG@455..458 + EXPR_VAR@455..458 + NAME@455..458 + IDENT@455..458 "str" + R_PAREN@458..459 ")" + SEMI@459..460 ";" + WHITESPACE@460..465 "\n " + EXPR_IF_THEN_ELSE@465..578 + IF_KW@465..467 "if" + WHITESPACE@467..468 " " + EXPR_BINARY@468..510 + LHS_EXPR@468..475 + EXPR_BINARY@468..475 + LHS_EXPR@468..471 + EXPR_VAR@468..471 + NAME@468..471 + IDENT@468..471 "len" + WHITESPACE@471..472 " " + GT@472..473 ">" + WHITESPACE@473..474 " " + EXPR_NUMBER@474..475 + FLOAT@474..475 "0" + WHITESPACE@475..476 " " + AND@476..478 "&&" + WHITESPACE@478..479 " " + EXPR_APPLY@479..510 + EXPR_INDEX@479..489 + EXPR_VAR@479..482 + NAME@479..482 + IDENT@479..482 "std" + DOT@482..483 "." + NAME@483..489 + IDENT@483..489 "member" + ARGS_DESC@489..510 + L_PAREN@489..490 "(" + ARG@490..495 + EXPR_VAR@490..495 + NAME@490..495 + IDENT@490..495 "chars" + COMMA@495..496 "," + WHITESPACE@496..497 " " + ARG@497..509 + EXPR_INDEX_EXPR@497..509 + LHS_EXPR@497..500 + EXPR_VAR@497..500 + NAME@497..500 + IDENT@497..500 "str" + L_BRACK@500..501 "[" + EXPR_BINARY@501..508 + LHS_EXPR@501..504 + EXPR_VAR@501..504 + NAME@501..504 + IDENT@501..504 "len" + WHITESPACE@504..505 " " + MINUS@505..506 "-" + WHITESPACE@506..507 " " + EXPR_NUMBER@507..508 + FLOAT@507..508 "1" + R_BRACK@508..509 "]" + R_PAREN@509..510 ")" + WHITESPACE@510..511 " " + THEN_KW@511..515 "then" + WHITESPACE@515..522 "\n " + TRUE_EXPR@522..559 + EXPR_APPLY@522..559 + EXPR_INDEX@522..537 + EXPR_VAR@522..525 + NAME@522..525 + IDENT@522..525 "std" + DOT@525..526 "." + NAME@526..537 + IDENT@526..537 "rstripChars" + ARGS_DESC@537..559 + L_PAREN@537..538 "(" + ARG@538..551 + EXPR_SLICE@538..551 + EXPR_VAR@538..541 + NAME@538..541 + IDENT@538..541 "str" + SLICE_DESC@541..551 + L_BRACK@541..542 "[" + COLON@542..543 ":" + SLICE_DESC_END@543..550 + EXPR_BINARY@543..550 + LHS_EXPR@543..546 + EXPR_VAR@543..546 + NAME@543..546 + IDENT@543..546 "len" + WHITESPACE@546..547 " " + MINUS@547..548 "-" + WHITESPACE@548..549 " " + EXPR_NUMBER@549..550 + FLOAT@549..550 "1" + R_BRACK@550..551 "]" + COMMA@551..552 "," + WHITESPACE@552..553 " " + ARG@553..558 + EXPR_VAR@553..558 + NAME@553..558 + IDENT@553..558 "chars" + R_PAREN@558..559 ")" + WHITESPACE@559..564 "\n " + ELSE_KW@564..568 "else" + WHITESPACE@568..575 "\n " + FALSE_EXPR@575..578 + EXPR_VAR@575..578 + NAME@575..578 + IDENT@575..578 "str" COMMA@578..579 "," WHITESPACE@579..583 "\n\n " - MEMBER_FIELD@583..663 - FIELD_METHOD@583..663 - FIELD_NAME_FIXED@583..593 - NAME@583..593 - IDENT@583..593 "stripChars" - PARAMS_DESC@593..605 - L_PAREN@593..594 "(" - PARAM@594..597 - DESTRUCT_FULL@594..597 - NAME@594..597 - IDENT@594..597 "str" - COMMA@597..598 "," - WHITESPACE@598..599 " " - PARAM@599..604 - DESTRUCT_FULL@599..604 - NAME@599..604 - IDENT@599..604 "chars" - R_PAREN@604..605 ")" - COLONCOLON@605..607 "::" - WHITESPACE@607..612 "\n " - EXPR_APPLY@612..663 - EXPR_INDEX@612..627 - EXPR_VAR@612..615 - NAME@612..615 - IDENT@612..615 "std" - DOT@615..616 "." - NAME@616..627 - IDENT@616..627 "lstripChars" - ARGS_DESC@627..663 - L_PAREN@627..628 "(" - ARG@628..655 - EXPR_APPLY@628..655 - EXPR_INDEX@628..643 - EXPR_VAR@628..631 - NAME@628..631 - IDENT@628..631 "std" - DOT@631..632 "." - NAME@632..643 - IDENT@632..643 "rstripChars" - ARGS_DESC@643..655 - L_PAREN@643..644 "(" - ARG@644..647 - EXPR_VAR@644..647 - NAME@644..647 - IDENT@644..647 "str" - COMMA@647..648 "," - WHITESPACE@648..649 " " - ARG@649..654 - EXPR_VAR@649..654 - NAME@649..654 - IDENT@649..654 "chars" - R_PAREN@654..655 ")" - COMMA@655..656 "," - WHITESPACE@656..657 " " - ARG@657..662 - EXPR_VAR@657..662 - NAME@657..662 - IDENT@657..662 "chars" - R_PAREN@662..663 ")" + MEMBER_FIELD_METHOD@583..663 + FIELD_NAME_FIXED@583..593 + NAME@583..593 + IDENT@583..593 "stripChars" + PARAMS_DESC@593..605 + L_PAREN@593..594 "(" + PARAM@594..597 + DESTRUCT_FULL@594..597 + NAME@594..597 + IDENT@594..597 "str" + COMMA@597..598 "," + WHITESPACE@598..599 " " + PARAM@599..604 + DESTRUCT_FULL@599..604 + NAME@599..604 + IDENT@599..604 "chars" + R_PAREN@604..605 ")" + COLONCOLON@605..607 "::" + WHITESPACE@607..612 "\n " + EXPR_APPLY@612..663 + EXPR_INDEX@612..627 + EXPR_VAR@612..615 + NAME@612..615 + IDENT@612..615 "std" + DOT@615..616 "." + NAME@616..627 + IDENT@616..627 "lstripChars" + ARGS_DESC@627..663 + L_PAREN@627..628 "(" + ARG@628..655 + EXPR_APPLY@628..655 + EXPR_INDEX@628..643 + EXPR_VAR@628..631 + NAME@628..631 + IDENT@628..631 "std" + DOT@631..632 "." + NAME@632..643 + IDENT@632..643 "rstripChars" + ARGS_DESC@643..655 + L_PAREN@643..644 "(" + ARG@644..647 + EXPR_VAR@644..647 + NAME@644..647 + IDENT@644..647 "str" + COMMA@647..648 "," + WHITESPACE@648..649 " " + ARG@649..654 + EXPR_VAR@649..654 + NAME@649..654 + IDENT@649..654 "chars" + R_PAREN@654..655 ")" + COMMA@655..656 "," + WHITESPACE@656..657 " " + ARG@657..662 + EXPR_VAR@657..662 + NAME@657..662 + IDENT@657..662 "chars" + R_PAREN@662..663 ")" COMMA@663..664 "," WHITESPACE@664..668 "\n\n " - MEMBER_FIELD@668..741 - FIELD_METHOD@668..741 - FIELD_NAME_FIXED@668..679 - NAME@668..679 - IDENT@668..679 "stringChars" - PARAMS_DESC@679..684 - L_PAREN@679..680 "(" - PARAM@680..683 - DESTRUCT_FULL@680..683 - NAME@680..683 - IDENT@680..683 "str" - R_PAREN@683..684 ")" - COLONCOLON@684..686 "::" - WHITESPACE@686..691 "\n " - EXPR_APPLY@691..741 - EXPR_INDEX@691..704 - EXPR_VAR@691..694 - NAME@691..694 - IDENT@691..694 "std" - DOT@694..695 "." - NAME@695..704 - IDENT@695..704 "makeArray" - ARGS_DESC@704..741 - L_PAREN@704..705 "(" - ARG@705..720 - EXPR_APPLY@705..720 - EXPR_INDEX@705..715 - EXPR_VAR@705..708 - NAME@705..708 - IDENT@705..708 "std" - DOT@708..709 "." - NAME@709..715 - IDENT@709..715 "length" - ARGS_DESC@715..720 - L_PAREN@715..716 "(" - ARG@716..719 - EXPR_VAR@716..719 - NAME@716..719 - IDENT@716..719 "str" - R_PAREN@719..720 ")" - COMMA@720..721 "," - WHITESPACE@721..722 " " - ARG@722..740 - EXPR_FUNCTION@722..740 - FUNCTION_KW@722..730 "function" - PARAMS_DESC@730..733 - L_PAREN@730..731 "(" - PARAM@731..732 - DESTRUCT_FULL@731..732 - NAME@731..732 - IDENT@731..732 "i" - R_PAREN@732..733 ")" - WHITESPACE@733..734 " " - EXPR_INDEX_EXPR@734..740 - LHS_EXPR@734..737 - EXPR_VAR@734..737 - NAME@734..737 - IDENT@734..737 "str" - L_BRACK@737..738 "[" - EXPR_VAR@738..739 - NAME@738..739 - IDENT@738..739 "i" - R_BRACK@739..740 "]" - R_PAREN@740..741 ")" + MEMBER_FIELD_METHOD@668..741 + FIELD_NAME_FIXED@668..679 + NAME@668..679 + IDENT@668..679 "stringChars" + PARAMS_DESC@679..684 + L_PAREN@679..680 "(" + PARAM@680..683 + DESTRUCT_FULL@680..683 + NAME@680..683 + IDENT@680..683 "str" + R_PAREN@683..684 ")" + COLONCOLON@684..686 "::" + WHITESPACE@686..691 "\n " + EXPR_APPLY@691..741 + EXPR_INDEX@691..704 + EXPR_VAR@691..694 + NAME@691..694 + IDENT@691..694 "std" + DOT@694..695 "." + NAME@695..704 + IDENT@695..704 "makeArray" + ARGS_DESC@704..741 + L_PAREN@704..705 "(" + ARG@705..720 + EXPR_APPLY@705..720 + EXPR_INDEX@705..715 + EXPR_VAR@705..708 + NAME@705..708 + IDENT@705..708 "std" + DOT@708..709 "." + NAME@709..715 + IDENT@709..715 "length" + ARGS_DESC@715..720 + L_PAREN@715..716 "(" + ARG@716..719 + EXPR_VAR@716..719 + NAME@716..719 + IDENT@716..719 "str" + R_PAREN@719..720 ")" + COMMA@720..721 "," + WHITESPACE@721..722 " " + ARG@722..740 + EXPR_FUNCTION@722..740 + FUNCTION_KW@722..730 "function" + PARAMS_DESC@730..733 + L_PAREN@730..731 "(" + PARAM@731..732 + DESTRUCT_FULL@731..732 + NAME@731..732 + IDENT@731..732 "i" + R_PAREN@732..733 ")" + WHITESPACE@733..734 " " + EXPR_INDEX_EXPR@734..740 + LHS_EXPR@734..737 + EXPR_VAR@734..737 + NAME@734..737 + IDENT@734..737 "str" + L_BRACK@737..738 "[" + EXPR_VAR@738..739 + NAME@738..739 + IDENT@738..739 "i" + R_BRACK@739..740 "]" + R_PAREN@740..741 ")" COMMA@741..742 "," WHITESPACE@742..746 "\n\n " - MEMBER_FIELD@746..1024 - FIELD_METHOD@746..1024 - FIELD_NAME_FIXED@746..757 - NAME@746..757 - IDENT@746..757 "splitLimitR" - PARAMS_DESC@757..776 - L_PAREN@757..758 "(" - PARAM@758..761 - DESTRUCT_FULL@758..761 - NAME@758..761 - IDENT@758..761 "str" - COMMA@761..762 "," - WHITESPACE@762..763 " " - PARAM@763..764 - DESTRUCT_FULL@763..764 - NAME@763..764 - IDENT@763..764 "c" - COMMA@764..765 "," - WHITESPACE@765..766 " " - PARAM@766..775 - DESTRUCT_FULL@766..775 - NAME@766..775 - IDENT@766..775 "maxsplits" - R_PAREN@775..776 ")" - COLONCOLON@776..778 "::" - WHITESPACE@778..783 "\n " - EXPR_IF_THEN_ELSE@783..1024 - IF_KW@783..785 "if" - WHITESPACE@785..786 " " - EXPR_BINARY@786..801 - LHS_EXPR@786..795 - EXPR_VAR@786..795 - NAME@786..795 - IDENT@786..795 "maxsplits" - WHITESPACE@795..796 " " - EQ@796..798 "==" - WHITESPACE@798..799 " " - EXPR_UNARY@799..801 - MINUS@799..800 "-" - EXPR_NUMBER@800..801 - FLOAT@800..801 "1" - WHITESPACE@801..802 " " - THEN_KW@802..806 "then" - WHITESPACE@806..813 "\n " - TRUE_EXPR@813..839 - EXPR_APPLY@813..839 - EXPR_INDEX@813..827 - EXPR_VAR@813..816 - NAME@813..816 - IDENT@813..816 "std" - DOT@816..817 "." - NAME@817..827 - IDENT@817..827 "splitLimit" - ARGS_DESC@827..839 - L_PAREN@827..828 "(" - ARG@828..831 - EXPR_VAR@828..831 - NAME@828..831 - IDENT@828..831 "str" - COMMA@831..832 "," - WHITESPACE@832..833 " " - ARG@833..834 - EXPR_VAR@833..834 - NAME@833..834 - IDENT@833..834 "c" - COMMA@834..835 "," - WHITESPACE@835..836 " " - ARG@836..838 - EXPR_UNARY@836..838 - MINUS@836..837 "-" - EXPR_NUMBER@837..838 - FLOAT@837..838 "1" - R_PAREN@838..839 ")" - WHITESPACE@839..844 "\n " - ELSE_KW@844..848 "else" - WHITESPACE@848..855 "\n " - FALSE_EXPR@855..1024 - EXPR_LOCAL@855..1024 - LOCAL_KW@855..860 "local" - WHITESPACE@860..861 " " - BIND_FUNCTION@861..922 - NAME@861..867 - IDENT@861..867 "revStr" - PARAMS_DESC@867..872 - L_PAREN@867..868 "(" - PARAM@868..871 - DESTRUCT_FULL@868..871 - NAME@868..871 - IDENT@868..871 "str" - R_PAREN@871..872 ")" - WHITESPACE@872..873 " " - ASSIGN@873..874 "=" - WHITESPACE@874..875 " " - EXPR_APPLY@875..922 - EXPR_INDEX@875..883 - EXPR_VAR@875..878 - NAME@875..878 - IDENT@875..878 "std" - DOT@878..879 "." - NAME@879..883 - IDENT@879..883 "join" - ARGS_DESC@883..922 - L_PAREN@883..884 "(" - ARG@884..886 - EXPR_STRING@884..886 - STRING_SINGLE@884..886 "''" - COMMA@886..887 "," - WHITESPACE@887..888 " " - ARG@888..921 - EXPR_APPLY@888..921 - EXPR_INDEX@888..899 - EXPR_VAR@888..891 - NAME@888..891 - IDENT@888..891 "std" - DOT@891..892 "." - NAME@892..899 - IDENT@892..899 "reverse" - ARGS_DESC@899..921 - L_PAREN@899..900 "(" - ARG@900..920 - EXPR_APPLY@900..920 - EXPR_INDEX@900..915 - EXPR_VAR@900..903 - NAME@900..903 - IDENT@900..903 "std" - DOT@903..904 "." - NAME@904..915 - IDENT@904..915 "stringChars" - ARGS_DESC@915..920 - L_PAREN@915..916 "(" - ARG@916..919 - EXPR_VAR@916..919 - NAME@916..919 - IDENT@916..919 "str" - R_PAREN@919..920 ")" - R_PAREN@920..921 ")" - R_PAREN@921..922 ")" - SEMI@922..923 ";" - WHITESPACE@923..930 "\n " - EXPR_APPLY@930..1024 - EXPR_INDEX@930..937 - EXPR_VAR@930..933 - NAME@930..933 - IDENT@930..933 "std" - DOT@933..934 "." - NAME@934..937 - IDENT@934..937 "map" - ARGS_DESC@937..1024 - L_PAREN@937..938 "(" - ARG@938..959 - EXPR_FUNCTION@938..959 - FUNCTION_KW@938..946 "function" - PARAMS_DESC@946..949 - L_PAREN@946..947 "(" - PARAM@947..948 - DESTRUCT_FULL@947..948 - NAME@947..948 - IDENT@947..948 "e" - R_PAREN@948..949 ")" - WHITESPACE@949..950 " " - EXPR_APPLY@950..959 - EXPR_VAR@950..956 - NAME@950..956 - IDENT@950..956 "revStr" - ARGS_DESC@956..959 - L_PAREN@956..957 "(" - ARG@957..958 - EXPR_VAR@957..958 - NAME@957..958 - IDENT@957..958 "e" - R_PAREN@958..959 ")" - COMMA@959..960 "," - WHITESPACE@960..961 " " - ARG@961..1023 - EXPR_APPLY@961..1023 - EXPR_INDEX@961..972 - EXPR_VAR@961..964 - NAME@961..964 - IDENT@961..964 "std" - DOT@964..965 "." - NAME@965..972 - IDENT@965..972 "reverse" - ARGS_DESC@972..1023 - L_PAREN@972..973 "(" - ARG@973..1022 - EXPR_APPLY@973..1022 - EXPR_INDEX@973..987 - EXPR_VAR@973..976 - NAME@973..976 - IDENT@973..976 "std" - DOT@976..977 "." - NAME@977..987 - IDENT@977..987 "splitLimit" - ARGS_DESC@987..1022 - L_PAREN@987..988 "(" - ARG@988..999 - EXPR_APPLY@988..999 - EXPR_VAR@988..994 - NAME@988..994 - IDENT@988..994 "revStr" - ARGS_DESC@994..999 - L_PAREN@994..995 "(" - ARG@995..998 - EXPR_VAR@995..998 - NAME@995..998 - IDENT@995..998 "str" - R_PAREN@998..999 ")" - COMMA@999..1000 "," - WHITESPACE@1000..1001 " " - ARG@1001..1010 - EXPR_APPLY@1001..1010 - EXPR_VAR@1001..1007 - NAME@1001..1007 - IDENT@1001..1007 "revStr" - ARGS_DESC@1007..1010 - L_PAREN@1007..1008 "(" - ARG@1008..1009 - EXPR_VAR@1008..1009 - NAME@1008..1009 - IDENT@1008..1009 "c" - R_PAREN@1009..1010 ")" - COMMA@1010..1011 "," - WHITESPACE@1011..1012 " " - ARG@1012..1021 - EXPR_VAR@1012..1021 - NAME@1012..1021 - IDENT@1012..1021 "maxsplits" - R_PAREN@1021..1022 ")" - R_PAREN@1022..1023 ")" - R_PAREN@1023..1024 ")" + MEMBER_FIELD_METHOD@746..1024 + FIELD_NAME_FIXED@746..757 + NAME@746..757 + IDENT@746..757 "splitLimitR" + PARAMS_DESC@757..776 + L_PAREN@757..758 "(" + PARAM@758..761 + DESTRUCT_FULL@758..761 + NAME@758..761 + IDENT@758..761 "str" + COMMA@761..762 "," + WHITESPACE@762..763 " " + PARAM@763..764 + DESTRUCT_FULL@763..764 + NAME@763..764 + IDENT@763..764 "c" + COMMA@764..765 "," + WHITESPACE@765..766 " " + PARAM@766..775 + DESTRUCT_FULL@766..775 + NAME@766..775 + IDENT@766..775 "maxsplits" + R_PAREN@775..776 ")" + COLONCOLON@776..778 "::" + WHITESPACE@778..783 "\n " + EXPR_IF_THEN_ELSE@783..1024 + IF_KW@783..785 "if" + WHITESPACE@785..786 " " + EXPR_BINARY@786..801 + LHS_EXPR@786..795 + EXPR_VAR@786..795 + NAME@786..795 + IDENT@786..795 "maxsplits" + WHITESPACE@795..796 " " + EQ@796..798 "==" + WHITESPACE@798..799 " " + EXPR_UNARY@799..801 + MINUS@799..800 "-" + EXPR_NUMBER@800..801 + FLOAT@800..801 "1" + WHITESPACE@801..802 " " + THEN_KW@802..806 "then" + WHITESPACE@806..813 "\n " + TRUE_EXPR@813..839 + EXPR_APPLY@813..839 + EXPR_INDEX@813..827 + EXPR_VAR@813..816 + NAME@813..816 + IDENT@813..816 "std" + DOT@816..817 "." + NAME@817..827 + IDENT@817..827 "splitLimit" + ARGS_DESC@827..839 + L_PAREN@827..828 "(" + ARG@828..831 + EXPR_VAR@828..831 + NAME@828..831 + IDENT@828..831 "str" + COMMA@831..832 "," + WHITESPACE@832..833 " " + ARG@833..834 + EXPR_VAR@833..834 + NAME@833..834 + IDENT@833..834 "c" + COMMA@834..835 "," + WHITESPACE@835..836 " " + ARG@836..838 + EXPR_UNARY@836..838 + MINUS@836..837 "-" + EXPR_NUMBER@837..838 + FLOAT@837..838 "1" + R_PAREN@838..839 ")" + WHITESPACE@839..844 "\n " + ELSE_KW@844..848 "else" + WHITESPACE@848..855 "\n " + FALSE_EXPR@855..1024 + EXPR_LOCAL@855..1024 + LOCAL_KW@855..860 "local" + WHITESPACE@860..861 " " + BIND_FUNCTION@861..922 + NAME@861..867 + IDENT@861..867 "revStr" + PARAMS_DESC@867..872 + L_PAREN@867..868 "(" + PARAM@868..871 + DESTRUCT_FULL@868..871 + NAME@868..871 + IDENT@868..871 "str" + R_PAREN@871..872 ")" + WHITESPACE@872..873 " " + ASSIGN@873..874 "=" + WHITESPACE@874..875 " " + EXPR_APPLY@875..922 + EXPR_INDEX@875..883 + EXPR_VAR@875..878 + NAME@875..878 + IDENT@875..878 "std" + DOT@878..879 "." + NAME@879..883 + IDENT@879..883 "join" + ARGS_DESC@883..922 + L_PAREN@883..884 "(" + ARG@884..886 + EXPR_STRING@884..886 + STRING_SINGLE@884..886 "''" + COMMA@886..887 "," + WHITESPACE@887..888 " " + ARG@888..921 + EXPR_APPLY@888..921 + EXPR_INDEX@888..899 + EXPR_VAR@888..891 + NAME@888..891 + IDENT@888..891 "std" + DOT@891..892 "." + NAME@892..899 + IDENT@892..899 "reverse" + ARGS_DESC@899..921 + L_PAREN@899..900 "(" + ARG@900..920 + EXPR_APPLY@900..920 + EXPR_INDEX@900..915 + EXPR_VAR@900..903 + NAME@900..903 + IDENT@900..903 "std" + DOT@903..904 "." + NAME@904..915 + IDENT@904..915 "stringChars" + ARGS_DESC@915..920 + L_PAREN@915..916 "(" + ARG@916..919 + EXPR_VAR@916..919 + NAME@916..919 + IDENT@916..919 "str" + R_PAREN@919..920 ")" + R_PAREN@920..921 ")" + R_PAREN@921..922 ")" + SEMI@922..923 ";" + WHITESPACE@923..930 "\n " + EXPR_APPLY@930..1024 + EXPR_INDEX@930..937 + EXPR_VAR@930..933 + NAME@930..933 + IDENT@930..933 "std" + DOT@933..934 "." + NAME@934..937 + IDENT@934..937 "map" + ARGS_DESC@937..1024 + L_PAREN@937..938 "(" + ARG@938..959 + EXPR_FUNCTION@938..959 + FUNCTION_KW@938..946 "function" + PARAMS_DESC@946..949 + L_PAREN@946..947 "(" + PARAM@947..948 + DESTRUCT_FULL@947..948 + NAME@947..948 + IDENT@947..948 "e" + R_PAREN@948..949 ")" + WHITESPACE@949..950 " " + EXPR_APPLY@950..959 + EXPR_VAR@950..956 + NAME@950..956 + IDENT@950..956 "revStr" + ARGS_DESC@956..959 + L_PAREN@956..957 "(" + ARG@957..958 + EXPR_VAR@957..958 + NAME@957..958 + IDENT@957..958 "e" + R_PAREN@958..959 ")" + COMMA@959..960 "," + WHITESPACE@960..961 " " + ARG@961..1023 + EXPR_APPLY@961..1023 + EXPR_INDEX@961..972 + EXPR_VAR@961..964 + NAME@961..964 + IDENT@961..964 "std" + DOT@964..965 "." + NAME@965..972 + IDENT@965..972 "reverse" + ARGS_DESC@972..1023 + L_PAREN@972..973 "(" + ARG@973..1022 + EXPR_APPLY@973..1022 + EXPR_INDEX@973..987 + EXPR_VAR@973..976 + NAME@973..976 + IDENT@973..976 "std" + DOT@976..977 "." + NAME@977..987 + IDENT@977..987 "splitLimit" + ARGS_DESC@987..1022 + L_PAREN@987..988 "(" + ARG@988..999 + EXPR_APPLY@988..999 + EXPR_VAR@988..994 + NAME@988..994 + IDENT@988..994 "revStr" + ARGS_DESC@994..999 + L_PAREN@994..995 "(" + ARG@995..998 + EXPR_VAR@995..998 + NAME@995..998 + IDENT@995..998 "str" + R_PAREN@998..999 ")" + COMMA@999..1000 "," + WHITESPACE@1000..1001 " " + ARG@1001..1010 + EXPR_APPLY@1001..1010 + EXPR_VAR@1001..1007 + NAME@1001..1007 + IDENT@1001..1007 "revStr" + ARGS_DESC@1007..1010 + L_PAREN@1007..1008 "(" + ARG@1008..1009 + EXPR_VAR@1008..1009 + NAME@1008..1009 + IDENT@1008..1009 "c" + R_PAREN@1009..1010 ")" + COMMA@1010..1011 "," + WHITESPACE@1011..1012 " " + ARG@1012..1021 + EXPR_VAR@1012..1021 + NAME@1012..1021 + IDENT@1012..1021 "maxsplits" + R_PAREN@1021..1022 ")" + R_PAREN@1022..1023 ")" + R_PAREN@1023..1024 ")" COMMA@1024..1025 "," WHITESPACE@1025..1029 "\n\n " - MEMBER_FIELD@1029..1071 - FIELD_METHOD@1029..1071 - FIELD_NAME_FIXED@1029..1034 - NAME@1029..1034 - IDENT@1029..1034 "split" - PARAMS_DESC@1034..1042 - L_PAREN@1034..1035 "(" - PARAM@1035..1038 - DESTRUCT_FULL@1035..1038 - NAME@1035..1038 - IDENT@1035..1038 "str" - COMMA@1038..1039 "," - WHITESPACE@1039..1040 " " - PARAM@1040..1041 - DESTRUCT_FULL@1040..1041 - NAME@1040..1041 - IDENT@1040..1041 "c" - R_PAREN@1041..1042 ")" - COLONCOLON@1042..1044 "::" - WHITESPACE@1044..1045 " " - EXPR_APPLY@1045..1071 - EXPR_INDEX@1045..1059 - EXPR_VAR@1045..1048 - NAME@1045..1048 - IDENT@1045..1048 "std" - DOT@1048..1049 "." - NAME@1049..1059 - IDENT@1049..1059 "splitLimit" - ARGS_DESC@1059..1071 - L_PAREN@1059..1060 "(" - ARG@1060..1063 - EXPR_VAR@1060..1063 - NAME@1060..1063 - IDENT@1060..1063 "str" - COMMA@1063..1064 "," - WHITESPACE@1064..1065 " " - ARG@1065..1066 - EXPR_VAR@1065..1066 - NAME@1065..1066 - IDENT@1065..1066 "c" - COMMA@1066..1067 "," - WHITESPACE@1067..1068 " " - ARG@1068..1070 - EXPR_UNARY@1068..1070 - MINUS@1068..1069 "-" - EXPR_NUMBER@1069..1070 - FLOAT@1069..1070 "1" - R_PAREN@1070..1071 ")" + MEMBER_FIELD_METHOD@1029..1071 + FIELD_NAME_FIXED@1029..1034 + NAME@1029..1034 + IDENT@1029..1034 "split" + PARAMS_DESC@1034..1042 + L_PAREN@1034..1035 "(" + PARAM@1035..1038 + DESTRUCT_FULL@1035..1038 + NAME@1035..1038 + IDENT@1035..1038 "str" + COMMA@1038..1039 "," + WHITESPACE@1039..1040 " " + PARAM@1040..1041 + DESTRUCT_FULL@1040..1041 + NAME@1040..1041 + IDENT@1040..1041 "c" + R_PAREN@1041..1042 ")" + COLONCOLON@1042..1044 "::" + WHITESPACE@1044..1045 " " + EXPR_APPLY@1045..1071 + EXPR_INDEX@1045..1059 + EXPR_VAR@1045..1048 + NAME@1045..1048 + IDENT@1045..1048 "std" + DOT@1048..1049 "." + NAME@1049..1059 + IDENT@1049..1059 "splitLimit" + ARGS_DESC@1059..1071 + L_PAREN@1059..1060 "(" + ARG@1060..1063 + EXPR_VAR@1060..1063 + NAME@1060..1063 + IDENT@1060..1063 "str" + COMMA@1063..1064 "," + WHITESPACE@1064..1065 " " + ARG@1065..1066 + EXPR_VAR@1065..1066 + NAME@1065..1066 + IDENT@1065..1066 "c" + COMMA@1066..1067 "," + WHITESPACE@1067..1068 " " + ARG@1068..1070 + EXPR_UNARY@1068..1070 + MINUS@1068..1069 "-" + EXPR_NUMBER@1069..1070 + FLOAT@1069..1070 "1" + R_PAREN@1070..1071 ")" COMMA@1071..1072 "," WHITESPACE@1072..1076 "\n\n " - MEMBER_FIELD@1076..1434 - FIELD_METHOD@1076..1434 - FIELD_NAME_FIXED@1076..1088 - NAME@1076..1088 - IDENT@1076..1088 "mapWithIndex" - PARAMS_DESC@1088..1099 - L_PAREN@1088..1089 "(" - PARAM@1089..1093 - DESTRUCT_FULL@1089..1093 - NAME@1089..1093 - IDENT@1089..1093 "func" - COMMA@1093..1094 "," - WHITESPACE@1094..1095 " " - PARAM@1095..1098 - DESTRUCT_FULL@1095..1098 - NAME@1095..1098 - IDENT@1095..1098 "arr" - R_PAREN@1098..1099 ")" - COLONCOLON@1099..1101 "::" - WHITESPACE@1101..1106 "\n " - EXPR_IF_THEN_ELSE@1106..1434 - IF_KW@1106..1108 "if" - WHITESPACE@1108..1109 " " - EXPR_UNARY@1109..1130 - NOT@1109..1110 "!" - EXPR_APPLY@1110..1130 - EXPR_INDEX@1110..1124 - EXPR_VAR@1110..1113 - NAME@1110..1113 - IDENT@1110..1113 "std" - DOT@1113..1114 "." - NAME@1114..1124 - IDENT@1114..1124 "isFunction" - ARGS_DESC@1124..1130 - L_PAREN@1124..1125 "(" - ARG@1125..1129 - EXPR_VAR@1125..1129 - NAME@1125..1129 - IDENT@1125..1129 "func" - R_PAREN@1129..1130 ")" - WHITESPACE@1130..1131 " " - THEN_KW@1131..1135 "then" - WHITESPACE@1135..1142 "\n " - TRUE_EXPR@1142..1220 - EXPR_ERROR@1142..1220 - ERROR_KW@1142..1147 "error" - WHITESPACE@1147..1148 " " - EXPR_PARENED@1148..1220 - L_PAREN@1148..1149 "(" - EXPR_BINARY@1149..1219 - LHS_EXPR@1149..1202 - EXPR_STRING@1149..1202 - STRING_SINGLE@1149..1202 "'std.mapWithIndex fir ..." - WHITESPACE@1202..1203 " " - PLUS@1203..1204 "+" - WHITESPACE@1204..1205 " " - EXPR_APPLY@1205..1219 - EXPR_INDEX@1205..1213 - EXPR_VAR@1205..1208 - NAME@1205..1208 - IDENT@1205..1208 "std" - DOT@1208..1209 "." - NAME@1209..1213 - IDENT@1209..1213 "type" - ARGS_DESC@1213..1219 - L_PAREN@1213..1214 "(" - ARG@1214..1218 - EXPR_VAR@1214..1218 - NAME@1214..1218 - IDENT@1214..1218 "func" - R_PAREN@1218..1219 ")" - R_PAREN@1219..1220 ")" - WHITESPACE@1220..1225 "\n " - ELSE_KW@1225..1229 "else" - WHITESPACE@1229..1230 " " - FALSE_EXPR@1230..1434 - EXPR_IF_THEN_ELSE@1230..1434 - IF_KW@1230..1232 "if" - WHITESPACE@1232..1233 " " - EXPR_BINARY@1233..1272 - LHS_EXPR@1233..1250 - EXPR_UNARY@1233..1250 - NOT@1233..1234 "!" - EXPR_APPLY@1234..1250 - EXPR_INDEX@1234..1245 - EXPR_VAR@1234..1237 - NAME@1234..1237 - IDENT@1234..1237 "std" - DOT@1237..1238 "." - NAME@1238..1245 - IDENT@1238..1245 "isArray" - ARGS_DESC@1245..1250 - L_PAREN@1245..1246 "(" - ARG@1246..1249 - EXPR_VAR@1246..1249 - NAME@1246..1249 - IDENT@1246..1249 "arr" - R_PAREN@1249..1250 ")" - WHITESPACE@1250..1251 " " - AND@1251..1253 "&&" - WHITESPACE@1253..1254 " " - EXPR_UNARY@1254..1272 - NOT@1254..1255 "!" - EXPR_APPLY@1255..1272 - EXPR_INDEX@1255..1267 - EXPR_VAR@1255..1258 - NAME@1255..1258 - IDENT@1255..1258 "std" - DOT@1258..1259 "." - NAME@1259..1267 - IDENT@1259..1267 "isString" - ARGS_DESC@1267..1272 - L_PAREN@1267..1268 "(" - ARG@1268..1271 - EXPR_VAR@1268..1271 - NAME@1268..1271 - IDENT@1268..1271 "arr" - R_PAREN@1271..1272 ")" - WHITESPACE@1272..1273 " " - THEN_KW@1273..1277 "then" - WHITESPACE@1277..1284 "\n " - TRUE_EXPR@1284..1359 - EXPR_ERROR@1284..1359 - ERROR_KW@1284..1289 "error" - WHITESPACE@1289..1290 " " - EXPR_PARENED@1290..1359 - L_PAREN@1290..1291 "(" - EXPR_BINARY@1291..1358 - LHS_EXPR@1291..1342 - EXPR_STRING@1291..1342 - STRING_SINGLE@1291..1342 "'std.mapWithIndex sec ..." - WHITESPACE@1342..1343 " " - PLUS@1343..1344 "+" - WHITESPACE@1344..1345 " " - EXPR_APPLY@1345..1358 - EXPR_INDEX@1345..1353 - EXPR_VAR@1345..1348 - NAME@1345..1348 - IDENT@1345..1348 "std" - DOT@1348..1349 "." - NAME@1349..1353 - IDENT@1349..1353 "type" - ARGS_DESC@1353..1358 - L_PAREN@1353..1354 "(" - ARG@1354..1357 - EXPR_VAR@1354..1357 - NAME@1354..1357 - IDENT@1354..1357 "arr" - R_PAREN@1357..1358 ")" - R_PAREN@1358..1359 ")" - WHITESPACE@1359..1364 "\n " - ELSE_KW@1364..1368 "else" - WHITESPACE@1368..1375 "\n " - FALSE_EXPR@1375..1434 - EXPR_APPLY@1375..1434 - EXPR_INDEX@1375..1388 - EXPR_VAR@1375..1378 - NAME@1375..1378 - IDENT@1375..1378 "std" - DOT@1378..1379 "." - NAME@1379..1388 - IDENT@1379..1388 "makeArray" - ARGS_DESC@1388..1434 - L_PAREN@1388..1389 "(" - ARG@1389..1404 - EXPR_APPLY@1389..1404 - EXPR_INDEX@1389..1399 - EXPR_VAR@1389..1392 - NAME@1389..1392 - IDENT@1389..1392 "std" - DOT@1392..1393 "." - NAME@1393..1399 - IDENT@1393..1399 "length" - ARGS_DESC@1399..1404 - L_PAREN@1399..1400 "(" - ARG@1400..1403 - EXPR_VAR@1400..1403 - NAME@1400..1403 - IDENT@1400..1403 "arr" - R_PAREN@1403..1404 ")" - COMMA@1404..1405 "," - WHITESPACE@1405..1406 " " - ARG@1406..1433 - EXPR_FUNCTION@1406..1433 - FUNCTION_KW@1406..1414 "function" - PARAMS_DESC@1414..1417 - L_PAREN@1414..1415 "(" - PARAM@1415..1416 - DESTRUCT_FULL@1415..1416 - NAME@1415..1416 - IDENT@1415..1416 "i" - R_PAREN@1416..1417 ")" - WHITESPACE@1417..1418 " " - EXPR_APPLY@1418..1433 - EXPR_VAR@1418..1422 - NAME@1418..1422 - IDENT@1418..1422 "func" - ARGS_DESC@1422..1433 - L_PAREN@1422..1423 "(" - ARG@1423..1424 - EXPR_VAR@1423..1424 - NAME@1423..1424 - IDENT@1423..1424 "i" - COMMA@1424..1425 "," - WHITESPACE@1425..1426 " " - ARG@1426..1432 - EXPR_INDEX_EXPR@1426..1432 - LHS_EXPR@1426..1429 - EXPR_VAR@1426..1429 - NAME@1426..1429 - IDENT@1426..1429 "arr" - L_BRACK@1429..1430 "[" - EXPR_VAR@1430..1431 - NAME@1430..1431 - IDENT@1430..1431 "i" - R_BRACK@1431..1432 "]" - R_PAREN@1432..1433 ")" - R_PAREN@1433..1434 ")" + MEMBER_FIELD_METHOD@1076..1434 + FIELD_NAME_FIXED@1076..1088 + NAME@1076..1088 + IDENT@1076..1088 "mapWithIndex" + PARAMS_DESC@1088..1099 + L_PAREN@1088..1089 "(" + PARAM@1089..1093 + DESTRUCT_FULL@1089..1093 + NAME@1089..1093 + IDENT@1089..1093 "func" + COMMA@1093..1094 "," + WHITESPACE@1094..1095 " " + PARAM@1095..1098 + DESTRUCT_FULL@1095..1098 + NAME@1095..1098 + IDENT@1095..1098 "arr" + R_PAREN@1098..1099 ")" + COLONCOLON@1099..1101 "::" + WHITESPACE@1101..1106 "\n " + EXPR_IF_THEN_ELSE@1106..1434 + IF_KW@1106..1108 "if" + WHITESPACE@1108..1109 " " + EXPR_UNARY@1109..1130 + NOT@1109..1110 "!" + EXPR_APPLY@1110..1130 + EXPR_INDEX@1110..1124 + EXPR_VAR@1110..1113 + NAME@1110..1113 + IDENT@1110..1113 "std" + DOT@1113..1114 "." + NAME@1114..1124 + IDENT@1114..1124 "isFunction" + ARGS_DESC@1124..1130 + L_PAREN@1124..1125 "(" + ARG@1125..1129 + EXPR_VAR@1125..1129 + NAME@1125..1129 + IDENT@1125..1129 "func" + R_PAREN@1129..1130 ")" + WHITESPACE@1130..1131 " " + THEN_KW@1131..1135 "then" + WHITESPACE@1135..1142 "\n " + TRUE_EXPR@1142..1220 + EXPR_ERROR@1142..1220 + ERROR_KW@1142..1147 "error" + WHITESPACE@1147..1148 " " + EXPR_PARENED@1148..1220 + L_PAREN@1148..1149 "(" + EXPR_BINARY@1149..1219 + LHS_EXPR@1149..1202 + EXPR_STRING@1149..1202 + STRING_SINGLE@1149..1202 "'std.mapWithIndex fir ..." + WHITESPACE@1202..1203 " " + PLUS@1203..1204 "+" + WHITESPACE@1204..1205 " " + EXPR_APPLY@1205..1219 + EXPR_INDEX@1205..1213 + EXPR_VAR@1205..1208 + NAME@1205..1208 + IDENT@1205..1208 "std" + DOT@1208..1209 "." + NAME@1209..1213 + IDENT@1209..1213 "type" + ARGS_DESC@1213..1219 + L_PAREN@1213..1214 "(" + ARG@1214..1218 + EXPR_VAR@1214..1218 + NAME@1214..1218 + IDENT@1214..1218 "func" + R_PAREN@1218..1219 ")" + R_PAREN@1219..1220 ")" + WHITESPACE@1220..1225 "\n " + ELSE_KW@1225..1229 "else" + WHITESPACE@1229..1230 " " + FALSE_EXPR@1230..1434 + EXPR_IF_THEN_ELSE@1230..1434 + IF_KW@1230..1232 "if" + WHITESPACE@1232..1233 " " + EXPR_BINARY@1233..1272 + LHS_EXPR@1233..1250 + EXPR_UNARY@1233..1250 + NOT@1233..1234 "!" + EXPR_APPLY@1234..1250 + EXPR_INDEX@1234..1245 + EXPR_VAR@1234..1237 + NAME@1234..1237 + IDENT@1234..1237 "std" + DOT@1237..1238 "." + NAME@1238..1245 + IDENT@1238..1245 "isArray" + ARGS_DESC@1245..1250 + L_PAREN@1245..1246 "(" + ARG@1246..1249 + EXPR_VAR@1246..1249 + NAME@1246..1249 + IDENT@1246..1249 "arr" + R_PAREN@1249..1250 ")" + WHITESPACE@1250..1251 " " + AND@1251..1253 "&&" + WHITESPACE@1253..1254 " " + EXPR_UNARY@1254..1272 + NOT@1254..1255 "!" + EXPR_APPLY@1255..1272 + EXPR_INDEX@1255..1267 + EXPR_VAR@1255..1258 + NAME@1255..1258 + IDENT@1255..1258 "std" + DOT@1258..1259 "." + NAME@1259..1267 + IDENT@1259..1267 "isString" + ARGS_DESC@1267..1272 + L_PAREN@1267..1268 "(" + ARG@1268..1271 + EXPR_VAR@1268..1271 + NAME@1268..1271 + IDENT@1268..1271 "arr" + R_PAREN@1271..1272 ")" + WHITESPACE@1272..1273 " " + THEN_KW@1273..1277 "then" + WHITESPACE@1277..1284 "\n " + TRUE_EXPR@1284..1359 + EXPR_ERROR@1284..1359 + ERROR_KW@1284..1289 "error" + WHITESPACE@1289..1290 " " + EXPR_PARENED@1290..1359 + L_PAREN@1290..1291 "(" + EXPR_BINARY@1291..1358 + LHS_EXPR@1291..1342 + EXPR_STRING@1291..1342 + STRING_SINGLE@1291..1342 "'std.mapWithIndex sec ..." + WHITESPACE@1342..1343 " " + PLUS@1343..1344 "+" + WHITESPACE@1344..1345 " " + EXPR_APPLY@1345..1358 + EXPR_INDEX@1345..1353 + EXPR_VAR@1345..1348 + NAME@1345..1348 + IDENT@1345..1348 "std" + DOT@1348..1349 "." + NAME@1349..1353 + IDENT@1349..1353 "type" + ARGS_DESC@1353..1358 + L_PAREN@1353..1354 "(" + ARG@1354..1357 + EXPR_VAR@1354..1357 + NAME@1354..1357 + IDENT@1354..1357 "arr" + R_PAREN@1357..1358 ")" + R_PAREN@1358..1359 ")" + WHITESPACE@1359..1364 "\n " + ELSE_KW@1364..1368 "else" + WHITESPACE@1368..1375 "\n " + FALSE_EXPR@1375..1434 + EXPR_APPLY@1375..1434 + EXPR_INDEX@1375..1388 + EXPR_VAR@1375..1378 + NAME@1375..1378 + IDENT@1375..1378 "std" + DOT@1378..1379 "." + NAME@1379..1388 + IDENT@1379..1388 "makeArray" + ARGS_DESC@1388..1434 + L_PAREN@1388..1389 "(" + ARG@1389..1404 + EXPR_APPLY@1389..1404 + EXPR_INDEX@1389..1399 + EXPR_VAR@1389..1392 + NAME@1389..1392 + IDENT@1389..1392 "std" + DOT@1392..1393 "." + NAME@1393..1399 + IDENT@1393..1399 "length" + ARGS_DESC@1399..1404 + L_PAREN@1399..1400 "(" + ARG@1400..1403 + EXPR_VAR@1400..1403 + NAME@1400..1403 + IDENT@1400..1403 "arr" + R_PAREN@1403..1404 ")" + COMMA@1404..1405 "," + WHITESPACE@1405..1406 " " + ARG@1406..1433 + EXPR_FUNCTION@1406..1433 + FUNCTION_KW@1406..1414 "function" + PARAMS_DESC@1414..1417 + L_PAREN@1414..1415 "(" + PARAM@1415..1416 + DESTRUCT_FULL@1415..1416 + NAME@1415..1416 + IDENT@1415..1416 "i" + R_PAREN@1416..1417 ")" + WHITESPACE@1417..1418 " " + EXPR_APPLY@1418..1433 + EXPR_VAR@1418..1422 + NAME@1418..1422 + IDENT@1418..1422 "func" + ARGS_DESC@1422..1433 + L_PAREN@1422..1423 "(" + ARG@1423..1424 + EXPR_VAR@1423..1424 + NAME@1423..1424 + IDENT@1423..1424 "i" + COMMA@1424..1425 "," + WHITESPACE@1425..1426 " " + ARG@1426..1432 + EXPR_INDEX_EXPR@1426..1432 + LHS_EXPR@1426..1429 + EXPR_VAR@1426..1429 + NAME@1426..1429 + IDENT@1426..1429 "arr" + L_BRACK@1429..1430 "[" + EXPR_VAR@1430..1431 + NAME@1430..1431 + IDENT@1430..1431 "i" + R_BRACK@1431..1432 "]" + R_PAREN@1432..1433 ")" + R_PAREN@1433..1434 ")" COMMA@1434..1435 "," WHITESPACE@1435..1439 "\n\n " - MEMBER_FIELD@1439..1767 - FIELD_METHOD@1439..1767 - FIELD_NAME_FIXED@1439..1449 - NAME@1439..1449 - IDENT@1439..1449 "mapWithKey" - PARAMS_DESC@1449..1460 - L_PAREN@1449..1450 "(" - PARAM@1450..1454 - DESTRUCT_FULL@1450..1454 - NAME@1450..1454 - IDENT@1450..1454 "func" - COMMA@1454..1455 "," - WHITESPACE@1455..1456 " " - PARAM@1456..1459 - DESTRUCT_FULL@1456..1459 - NAME@1456..1459 - IDENT@1456..1459 "obj" - R_PAREN@1459..1460 ")" - COLONCOLON@1460..1462 "::" - WHITESPACE@1462..1467 "\n " - EXPR_IF_THEN_ELSE@1467..1767 - IF_KW@1467..1469 "if" - WHITESPACE@1469..1470 " " - EXPR_UNARY@1470..1491 - NOT@1470..1471 "!" - EXPR_APPLY@1471..1491 - EXPR_INDEX@1471..1485 - EXPR_VAR@1471..1474 - NAME@1471..1474 - IDENT@1471..1474 "std" - DOT@1474..1475 "." - NAME@1475..1485 - IDENT@1475..1485 "isFunction" - ARGS_DESC@1485..1491 - L_PAREN@1485..1486 "(" - ARG@1486..1490 - EXPR_VAR@1486..1490 - NAME@1486..1490 - IDENT@1486..1490 "func" - R_PAREN@1490..1491 ")" - WHITESPACE@1491..1492 " " - THEN_KW@1492..1496 "then" - WHITESPACE@1496..1503 "\n " - TRUE_EXPR@1503..1579 - EXPR_ERROR@1503..1579 - ERROR_KW@1503..1508 "error" - WHITESPACE@1508..1509 " " - EXPR_PARENED@1509..1579 - L_PAREN@1509..1510 "(" - EXPR_BINARY@1510..1578 - LHS_EXPR@1510..1561 - EXPR_STRING@1510..1561 - STRING_SINGLE@1510..1561 "'std.mapWithKey first ..." - WHITESPACE@1561..1562 " " - PLUS@1562..1563 "+" - WHITESPACE@1563..1564 " " - EXPR_APPLY@1564..1578 - EXPR_INDEX@1564..1572 - EXPR_VAR@1564..1567 - NAME@1564..1567 - IDENT@1564..1567 "std" - DOT@1567..1568 "." - NAME@1568..1572 - IDENT@1568..1572 "type" - ARGS_DESC@1572..1578 - L_PAREN@1572..1573 "(" - ARG@1573..1577 - EXPR_VAR@1573..1577 - NAME@1573..1577 - IDENT@1573..1577 "func" - R_PAREN@1577..1578 ")" - R_PAREN@1578..1579 ")" - WHITESPACE@1579..1584 "\n " - ELSE_KW@1584..1588 "else" - WHITESPACE@1588..1589 " " - FALSE_EXPR@1589..1767 - EXPR_IF_THEN_ELSE@1589..1767 - IF_KW@1589..1591 "if" - WHITESPACE@1591..1592 " " - EXPR_UNARY@1592..1610 - NOT@1592..1593 "!" - EXPR_APPLY@1593..1610 - EXPR_INDEX@1593..1605 - EXPR_VAR@1593..1596 - NAME@1593..1596 - IDENT@1593..1596 "std" - DOT@1596..1597 "." - NAME@1597..1605 - IDENT@1597..1605 "isObject" - ARGS_DESC@1605..1610 - L_PAREN@1605..1606 "(" - ARG@1606..1609 - EXPR_VAR@1606..1609 - NAME@1606..1609 - IDENT@1606..1609 "obj" - R_PAREN@1609..1610 ")" - WHITESPACE@1610..1611 " " - THEN_KW@1611..1615 "then" - WHITESPACE@1615..1622 "\n " - TRUE_EXPR@1622..1696 - EXPR_ERROR@1622..1696 - ERROR_KW@1622..1627 "error" - WHITESPACE@1627..1628 " " - EXPR_PARENED@1628..1696 - L_PAREN@1628..1629 "(" - EXPR_BINARY@1629..1695 - LHS_EXPR@1629..1679 - EXPR_STRING@1629..1679 - STRING_SINGLE@1629..1679 "'std.mapWithKey secon ..." - WHITESPACE@1679..1680 " " - PLUS@1680..1681 "+" - WHITESPACE@1681..1682 " " - EXPR_APPLY@1682..1695 - EXPR_INDEX@1682..1690 - EXPR_VAR@1682..1685 - NAME@1682..1685 - IDENT@1682..1685 "std" - DOT@1685..1686 "." - NAME@1686..1690 - IDENT@1686..1690 "type" - ARGS_DESC@1690..1695 - L_PAREN@1690..1691 "(" - ARG@1691..1694 - EXPR_VAR@1691..1694 - NAME@1691..1694 - IDENT@1691..1694 "obj" - R_PAREN@1694..1695 ")" - R_PAREN@1695..1696 ")" - WHITESPACE@1696..1701 "\n " - ELSE_KW@1701..1705 "else" - WHITESPACE@1705..1712 "\n " - FALSE_EXPR@1712..1767 - EXPR_OBJECT@1712..1767 - OBJ_BODY_MEMBER_LIST@1712..1767 - L_BRACE@1712..1713 "{" - WHITESPACE@1713..1714 " " - MEMBER_FIELD@1714..1765 - FIELD_NORMAL@1714..1734 - FIELD_NAME_DYNAMIC@1714..1717 - L_BRACK@1714..1715 "[" - EXPR_VAR@1715..1716 - NAME@1715..1716 - IDENT@1715..1716 "k" - R_BRACK@1716..1717 "]" - COLON@1717..1718 ":" - WHITESPACE@1718..1719 " " - EXPR_APPLY@1719..1734 - EXPR_VAR@1719..1723 - NAME@1719..1723 - IDENT@1719..1723 "func" - ARGS_DESC@1723..1734 - L_PAREN@1723..1724 "(" - ARG@1724..1725 - EXPR_VAR@1724..1725 - NAME@1724..1725 - IDENT@1724..1725 "k" - COMMA@1725..1726 "," - WHITESPACE@1726..1727 " " - ARG@1727..1733 - EXPR_INDEX_EXPR@1727..1733 - LHS_EXPR@1727..1730 - EXPR_VAR@1727..1730 - NAME@1727..1730 - IDENT@1727..1730 "obj" - L_BRACK@1730..1731 "[" - EXPR_VAR@1731..1732 - NAME@1731..1732 - IDENT@1731..1732 "k" - R_BRACK@1732..1733 "]" - R_PAREN@1733..1734 ")" - WHITESPACE@1734..1735 " " - FOR_SPEC@1735..1765 - FOR_KW@1735..1738 "for" - WHITESPACE@1738..1739 " " - NAME@1739..1740 - IDENT@1739..1740 "k" - WHITESPACE@1740..1741 " " - IN_KW@1741..1743 "in" - WHITESPACE@1743..1744 " " - EXPR_APPLY@1744..1765 - EXPR_INDEX@1744..1760 - EXPR_VAR@1744..1747 - NAME@1744..1747 - IDENT@1744..1747 "std" - DOT@1747..1748 "." - NAME@1748..1760 - IDENT@1748..1760 "objectFields" - ARGS_DESC@1760..1765 - L_PAREN@1760..1761 "(" - ARG@1761..1764 - EXPR_VAR@1761..1764 - NAME@1761..1764 - IDENT@1761..1764 "obj" - R_PAREN@1764..1765 ")" - WHITESPACE@1765..1766 " " - R_BRACE@1766..1767 "}" + MEMBER_FIELD_METHOD@1439..1767 + FIELD_NAME_FIXED@1439..1449 + NAME@1439..1449 + IDENT@1439..1449 "mapWithKey" + PARAMS_DESC@1449..1460 + L_PAREN@1449..1450 "(" + PARAM@1450..1454 + DESTRUCT_FULL@1450..1454 + NAME@1450..1454 + IDENT@1450..1454 "func" + COMMA@1454..1455 "," + WHITESPACE@1455..1456 " " + PARAM@1456..1459 + DESTRUCT_FULL@1456..1459 + NAME@1456..1459 + IDENT@1456..1459 "obj" + R_PAREN@1459..1460 ")" + COLONCOLON@1460..1462 "::" + WHITESPACE@1462..1467 "\n " + EXPR_IF_THEN_ELSE@1467..1767 + IF_KW@1467..1469 "if" + WHITESPACE@1469..1470 " " + EXPR_UNARY@1470..1491 + NOT@1470..1471 "!" + EXPR_APPLY@1471..1491 + EXPR_INDEX@1471..1485 + EXPR_VAR@1471..1474 + NAME@1471..1474 + IDENT@1471..1474 "std" + DOT@1474..1475 "." + NAME@1475..1485 + IDENT@1475..1485 "isFunction" + ARGS_DESC@1485..1491 + L_PAREN@1485..1486 "(" + ARG@1486..1490 + EXPR_VAR@1486..1490 + NAME@1486..1490 + IDENT@1486..1490 "func" + R_PAREN@1490..1491 ")" + WHITESPACE@1491..1492 " " + THEN_KW@1492..1496 "then" + WHITESPACE@1496..1503 "\n " + TRUE_EXPR@1503..1579 + EXPR_ERROR@1503..1579 + ERROR_KW@1503..1508 "error" + WHITESPACE@1508..1509 " " + EXPR_PARENED@1509..1579 + L_PAREN@1509..1510 "(" + EXPR_BINARY@1510..1578 + LHS_EXPR@1510..1561 + EXPR_STRING@1510..1561 + STRING_SINGLE@1510..1561 "'std.mapWithKey first ..." + WHITESPACE@1561..1562 " " + PLUS@1562..1563 "+" + WHITESPACE@1563..1564 " " + EXPR_APPLY@1564..1578 + EXPR_INDEX@1564..1572 + EXPR_VAR@1564..1567 + NAME@1564..1567 + IDENT@1564..1567 "std" + DOT@1567..1568 "." + NAME@1568..1572 + IDENT@1568..1572 "type" + ARGS_DESC@1572..1578 + L_PAREN@1572..1573 "(" + ARG@1573..1577 + EXPR_VAR@1573..1577 + NAME@1573..1577 + IDENT@1573..1577 "func" + R_PAREN@1577..1578 ")" + R_PAREN@1578..1579 ")" + WHITESPACE@1579..1584 "\n " + ELSE_KW@1584..1588 "else" + WHITESPACE@1588..1589 " " + FALSE_EXPR@1589..1767 + EXPR_IF_THEN_ELSE@1589..1767 + IF_KW@1589..1591 "if" + WHITESPACE@1591..1592 " " + EXPR_UNARY@1592..1610 + NOT@1592..1593 "!" + EXPR_APPLY@1593..1610 + EXPR_INDEX@1593..1605 + EXPR_VAR@1593..1596 + NAME@1593..1596 + IDENT@1593..1596 "std" + DOT@1596..1597 "." + NAME@1597..1605 + IDENT@1597..1605 "isObject" + ARGS_DESC@1605..1610 + L_PAREN@1605..1606 "(" + ARG@1606..1609 + EXPR_VAR@1606..1609 + NAME@1606..1609 + IDENT@1606..1609 "obj" + R_PAREN@1609..1610 ")" + WHITESPACE@1610..1611 " " + THEN_KW@1611..1615 "then" + WHITESPACE@1615..1622 "\n " + TRUE_EXPR@1622..1696 + EXPR_ERROR@1622..1696 + ERROR_KW@1622..1627 "error" + WHITESPACE@1627..1628 " " + EXPR_PARENED@1628..1696 + L_PAREN@1628..1629 "(" + EXPR_BINARY@1629..1695 + LHS_EXPR@1629..1679 + EXPR_STRING@1629..1679 + STRING_SINGLE@1629..1679 "'std.mapWithKey secon ..." + WHITESPACE@1679..1680 " " + PLUS@1680..1681 "+" + WHITESPACE@1681..1682 " " + EXPR_APPLY@1682..1695 + EXPR_INDEX@1682..1690 + EXPR_VAR@1682..1685 + NAME@1682..1685 + IDENT@1682..1685 "std" + DOT@1685..1686 "." + NAME@1686..1690 + IDENT@1686..1690 "type" + ARGS_DESC@1690..1695 + L_PAREN@1690..1691 "(" + ARG@1691..1694 + EXPR_VAR@1691..1694 + NAME@1691..1694 + IDENT@1691..1694 "obj" + R_PAREN@1694..1695 ")" + R_PAREN@1695..1696 ")" + WHITESPACE@1696..1701 "\n " + ELSE_KW@1701..1705 "else" + WHITESPACE@1705..1712 "\n " + FALSE_EXPR@1712..1767 + EXPR_OBJECT@1712..1767 + OBJ_BODY_COMP@1712..1767 + L_BRACE@1712..1713 "{" + WHITESPACE@1713..1714 " " + MEMBER_FIELD_NORMAL@1714..1734 + FIELD_NAME_DYNAMIC@1714..1717 + L_BRACK@1714..1715 "[" + EXPR_VAR@1715..1716 + NAME@1715..1716 + IDENT@1715..1716 "k" + R_BRACK@1716..1717 "]" + COLON@1717..1718 ":" + WHITESPACE@1718..1719 " " + EXPR_APPLY@1719..1734 + EXPR_VAR@1719..1723 + NAME@1719..1723 + IDENT@1719..1723 "func" + ARGS_DESC@1723..1734 + L_PAREN@1723..1724 "(" + ARG@1724..1725 + EXPR_VAR@1724..1725 + NAME@1724..1725 + IDENT@1724..1725 "k" + COMMA@1725..1726 "," + WHITESPACE@1726..1727 " " + ARG@1727..1733 + EXPR_INDEX_EXPR@1727..1733 + LHS_EXPR@1727..1730 + EXPR_VAR@1727..1730 + NAME@1727..1730 + IDENT@1727..1730 "obj" + L_BRACK@1730..1731 "[" + EXPR_VAR@1731..1732 + NAME@1731..1732 + IDENT@1731..1732 "k" + R_BRACK@1732..1733 "]" + R_PAREN@1733..1734 ")" + WHITESPACE@1734..1735 " " + FOR_SPEC@1735..1765 + FOR_KW@1735..1738 "for" + WHITESPACE@1738..1739 " " + NAME@1739..1740 + IDENT@1739..1740 "k" + WHITESPACE@1740..1741 " " + IN_KW@1741..1743 "in" + WHITESPACE@1743..1744 " " + EXPR_APPLY@1744..1765 + EXPR_INDEX@1744..1760 + EXPR_VAR@1744..1747 + NAME@1744..1747 + IDENT@1744..1747 "std" + DOT@1747..1748 "." + NAME@1748..1760 + IDENT@1748..1760 "objectFields" + ARGS_DESC@1760..1765 + L_PAREN@1760..1761 "(" + ARG@1761..1764 + EXPR_VAR@1761..1764 + NAME@1761..1764 + IDENT@1761..1764 "obj" + R_PAREN@1764..1765 ")" + WHITESPACE@1765..1766 " " + R_BRACE@1766..1767 "}" COMMA@1767..1768 "," WHITESPACE@1768..1772 "\n\n " - MEMBER_FIELD@1772..1815 - FIELD_METHOD@1772..1815 - FIELD_NAME_FIXED@1772..1777 - NAME@1772..1777 - IDENT@1772..1777 "lines" - PARAMS_DESC@1777..1782 - L_PAREN@1777..1778 "(" - PARAM@1778..1781 - DESTRUCT_FULL@1778..1781 - NAME@1778..1781 - IDENT@1778..1781 "arr" - R_PAREN@1781..1782 ")" - COLONCOLON@1782..1784 "::" - WHITESPACE@1784..1789 "\n " - EXPR_APPLY@1789..1815 - EXPR_INDEX@1789..1797 - EXPR_VAR@1789..1792 - NAME@1789..1792 - IDENT@1789..1792 "std" - DOT@1792..1793 "." - NAME@1793..1797 - IDENT@1793..1797 "join" - ARGS_DESC@1797..1815 - L_PAREN@1797..1798 "(" - ARG@1798..1802 - EXPR_STRING@1798..1802 - STRING_SINGLE@1798..1802 "'\\n'" - COMMA@1802..1803 "," - WHITESPACE@1803..1804 " " - ARG@1804..1814 - EXPR_BINARY@1804..1814 - LHS_EXPR@1804..1807 - EXPR_VAR@1804..1807 - NAME@1804..1807 - IDENT@1804..1807 "arr" - WHITESPACE@1807..1808 " " - PLUS@1808..1809 "+" - WHITESPACE@1809..1810 " " - EXPR_ARRAY@1810..1814 - L_BRACK@1810..1811 "[" - EXPR_STRING@1811..1813 - STRING_SINGLE@1811..1813 "''" - R_BRACK@1813..1814 "]" - R_PAREN@1814..1815 ")" + MEMBER_FIELD_METHOD@1772..1815 + FIELD_NAME_FIXED@1772..1777 + NAME@1772..1777 + IDENT@1772..1777 "lines" + PARAMS_DESC@1777..1782 + L_PAREN@1777..1778 "(" + PARAM@1778..1781 + DESTRUCT_FULL@1778..1781 + NAME@1778..1781 + IDENT@1778..1781 "arr" + R_PAREN@1781..1782 ")" + COLONCOLON@1782..1784 "::" + WHITESPACE@1784..1789 "\n " + EXPR_APPLY@1789..1815 + EXPR_INDEX@1789..1797 + EXPR_VAR@1789..1792 + NAME@1789..1792 + IDENT@1789..1792 "std" + DOT@1792..1793 "." + NAME@1793..1797 + IDENT@1793..1797 "join" + ARGS_DESC@1797..1815 + L_PAREN@1797..1798 "(" + ARG@1798..1802 + EXPR_STRING@1798..1802 + STRING_SINGLE@1798..1802 "'\\n'" + COMMA@1802..1803 "," + WHITESPACE@1803..1804 " " + ARG@1804..1814 + EXPR_BINARY@1804..1814 + LHS_EXPR@1804..1807 + EXPR_VAR@1804..1807 + NAME@1804..1807 + IDENT@1804..1807 "arr" + WHITESPACE@1807..1808 " " + PLUS@1808..1809 "+" + WHITESPACE@1809..1810 " " + EXPR_ARRAY@1810..1814 + L_BRACK@1810..1811 "[" + EXPR_STRING@1811..1813 + STRING_SINGLE@1811..1813 "''" + R_BRACK@1813..1814 "]" + R_PAREN@1814..1815 ")" COMMA@1815..1816 "," WHITESPACE@1816..1820 "\n\n " - MEMBER_FIELD@1820..2032 - FIELD_METHOD@1820..2032 - FIELD_NAME_FIXED@1820..1828 - NAME@1820..1828 - IDENT@1820..1828 "deepJoin" - PARAMS_DESC@1828..1833 - L_PAREN@1828..1829 "(" - PARAM@1829..1832 - DESTRUCT_FULL@1829..1832 - NAME@1829..1832 - IDENT@1829..1832 "arr" - R_PAREN@1832..1833 ")" - COLONCOLON@1833..1835 "::" - WHITESPACE@1835..1840 "\n " - EXPR_IF_THEN_ELSE@1840..2032 - IF_KW@1840..1842 "if" - WHITESPACE@1842..1843 " " - EXPR_APPLY@1843..1860 - EXPR_INDEX@1843..1855 - EXPR_VAR@1843..1846 - NAME@1843..1846 - IDENT@1843..1846 "std" - DOT@1846..1847 "." - NAME@1847..1855 - IDENT@1847..1855 "isString" - ARGS_DESC@1855..1860 - L_PAREN@1855..1856 "(" - ARG@1856..1859 - EXPR_VAR@1856..1859 - NAME@1856..1859 - IDENT@1856..1859 "arr" - R_PAREN@1859..1860 ")" - WHITESPACE@1860..1861 " " - THEN_KW@1861..1865 "then" - WHITESPACE@1865..1872 "\n " - TRUE_EXPR@1872..1875 - EXPR_VAR@1872..1875 - NAME@1872..1875 - IDENT@1872..1875 "arr" - WHITESPACE@1875..1880 "\n " - ELSE_KW@1880..1884 "else" - WHITESPACE@1884..1885 " " - FALSE_EXPR@1885..2032 - EXPR_IF_THEN_ELSE@1885..2032 - IF_KW@1885..1887 "if" - WHITESPACE@1887..1888 " " - EXPR_APPLY@1888..1904 - EXPR_INDEX@1888..1899 - EXPR_VAR@1888..1891 - NAME@1888..1891 - IDENT@1888..1891 "std" - DOT@1891..1892 "." - NAME@1892..1899 - IDENT@1892..1899 "isArray" - ARGS_DESC@1899..1904 - L_PAREN@1899..1900 "(" - ARG@1900..1903 - EXPR_VAR@1900..1903 - NAME@1900..1903 - IDENT@1900..1903 "arr" - R_PAREN@1903..1904 ")" - WHITESPACE@1904..1905 " " - THEN_KW@1905..1909 "then" - WHITESPACE@1909..1916 "\n " - TRUE_EXPR@1916..1960 - EXPR_APPLY@1916..1960 - EXPR_INDEX@1916..1924 - EXPR_VAR@1916..1919 - NAME@1916..1919 - IDENT@1916..1919 "std" - DOT@1919..1920 "." - NAME@1920..1924 - IDENT@1920..1924 "join" - ARGS_DESC@1924..1960 - L_PAREN@1924..1925 "(" - ARG@1925..1927 - EXPR_STRING@1925..1927 - STRING_SINGLE@1925..1927 "''" - COMMA@1927..1928 "," - WHITESPACE@1928..1929 " " - ARG@1929..1959 - EXPR_ARRAY_COMP@1929..1959 - L_BRACK@1929..1930 "[" - EXPR_APPLY@1930..1945 - EXPR_INDEX@1930..1942 - EXPR_VAR@1930..1933 - NAME@1930..1933 - IDENT@1930..1933 "std" - DOT@1933..1934 "." - NAME@1934..1942 - IDENT@1934..1942 "deepJoin" - ARGS_DESC@1942..1945 - L_PAREN@1942..1943 "(" - ARG@1943..1944 - EXPR_VAR@1943..1944 - NAME@1943..1944 - IDENT@1943..1944 "x" - R_PAREN@1944..1945 ")" - WHITESPACE@1945..1946 " " - FOR_SPEC@1946..1958 - FOR_KW@1946..1949 "for" - WHITESPACE@1949..1950 " " - NAME@1950..1951 - IDENT@1950..1951 "x" - WHITESPACE@1951..1952 " " - IN_KW@1952..1954 "in" - WHITESPACE@1954..1955 " " - EXPR_VAR@1955..1958 - NAME@1955..1958 - IDENT@1955..1958 "arr" - R_BRACK@1958..1959 "]" - R_PAREN@1959..1960 ")" - WHITESPACE@1960..1965 "\n " - ELSE_KW@1965..1969 "else" - WHITESPACE@1969..1976 "\n " - FALSE_EXPR@1976..2032 - EXPR_ERROR@1976..2032 - ERROR_KW@1976..1981 "error" - WHITESPACE@1981..1982 " " - EXPR_BINARY@1982..2032 - LHS_EXPR@1982..2016 - EXPR_STRING@1982..2016 - STRING_SINGLE@1982..2016 "'Expected string or a ..." - WHITESPACE@2016..2017 " " - MODULO@2017..2018 "%" - WHITESPACE@2018..2019 " " - EXPR_APPLY@2019..2032 - EXPR_INDEX@2019..2027 - EXPR_VAR@2019..2022 - NAME@2019..2022 - IDENT@2019..2022 "std" - DOT@2022..2023 "." - NAME@2023..2027 - IDENT@2023..2027 "type" - ARGS_DESC@2027..2032 - L_PAREN@2027..2028 "(" - ARG@2028..2031 - EXPR_VAR@2028..2031 - NAME@2028..2031 - IDENT@2028..2031 "arr" - R_PAREN@2031..2032 ")" + MEMBER_FIELD_METHOD@1820..2032 + FIELD_NAME_FIXED@1820..1828 + NAME@1820..1828 + IDENT@1820..1828 "deepJoin" + PARAMS_DESC@1828..1833 + L_PAREN@1828..1829 "(" + PARAM@1829..1832 + DESTRUCT_FULL@1829..1832 + NAME@1829..1832 + IDENT@1829..1832 "arr" + R_PAREN@1832..1833 ")" + COLONCOLON@1833..1835 "::" + WHITESPACE@1835..1840 "\n " + EXPR_IF_THEN_ELSE@1840..2032 + IF_KW@1840..1842 "if" + WHITESPACE@1842..1843 " " + EXPR_APPLY@1843..1860 + EXPR_INDEX@1843..1855 + EXPR_VAR@1843..1846 + NAME@1843..1846 + IDENT@1843..1846 "std" + DOT@1846..1847 "." + NAME@1847..1855 + IDENT@1847..1855 "isString" + ARGS_DESC@1855..1860 + L_PAREN@1855..1856 "(" + ARG@1856..1859 + EXPR_VAR@1856..1859 + NAME@1856..1859 + IDENT@1856..1859 "arr" + R_PAREN@1859..1860 ")" + WHITESPACE@1860..1861 " " + THEN_KW@1861..1865 "then" + WHITESPACE@1865..1872 "\n " + TRUE_EXPR@1872..1875 + EXPR_VAR@1872..1875 + NAME@1872..1875 + IDENT@1872..1875 "arr" + WHITESPACE@1875..1880 "\n " + ELSE_KW@1880..1884 "else" + WHITESPACE@1884..1885 " " + FALSE_EXPR@1885..2032 + EXPR_IF_THEN_ELSE@1885..2032 + IF_KW@1885..1887 "if" + WHITESPACE@1887..1888 " " + EXPR_APPLY@1888..1904 + EXPR_INDEX@1888..1899 + EXPR_VAR@1888..1891 + NAME@1888..1891 + IDENT@1888..1891 "std" + DOT@1891..1892 "." + NAME@1892..1899 + IDENT@1892..1899 "isArray" + ARGS_DESC@1899..1904 + L_PAREN@1899..1900 "(" + ARG@1900..1903 + EXPR_VAR@1900..1903 + NAME@1900..1903 + IDENT@1900..1903 "arr" + R_PAREN@1903..1904 ")" + WHITESPACE@1904..1905 " " + THEN_KW@1905..1909 "then" + WHITESPACE@1909..1916 "\n " + TRUE_EXPR@1916..1960 + EXPR_APPLY@1916..1960 + EXPR_INDEX@1916..1924 + EXPR_VAR@1916..1919 + NAME@1916..1919 + IDENT@1916..1919 "std" + DOT@1919..1920 "." + NAME@1920..1924 + IDENT@1920..1924 "join" + ARGS_DESC@1924..1960 + L_PAREN@1924..1925 "(" + ARG@1925..1927 + EXPR_STRING@1925..1927 + STRING_SINGLE@1925..1927 "''" + COMMA@1927..1928 "," + WHITESPACE@1928..1929 " " + ARG@1929..1959 + EXPR_ARRAY_COMP@1929..1959 + L_BRACK@1929..1930 "[" + EXPR_APPLY@1930..1945 + EXPR_INDEX@1930..1942 + EXPR_VAR@1930..1933 + NAME@1930..1933 + IDENT@1930..1933 "std" + DOT@1933..1934 "." + NAME@1934..1942 + IDENT@1934..1942 "deepJoin" + ARGS_DESC@1942..1945 + L_PAREN@1942..1943 "(" + ARG@1943..1944 + EXPR_VAR@1943..1944 + NAME@1943..1944 + IDENT@1943..1944 "x" + R_PAREN@1944..1945 ")" + WHITESPACE@1945..1946 " " + FOR_SPEC@1946..1958 + FOR_KW@1946..1949 "for" + WHITESPACE@1949..1950 " " + NAME@1950..1951 + IDENT@1950..1951 "x" + WHITESPACE@1951..1952 " " + IN_KW@1952..1954 "in" + WHITESPACE@1954..1955 " " + EXPR_VAR@1955..1958 + NAME@1955..1958 + IDENT@1955..1958 "arr" + R_BRACK@1958..1959 "]" + R_PAREN@1959..1960 ")" + WHITESPACE@1960..1965 "\n " + ELSE_KW@1965..1969 "else" + WHITESPACE@1969..1976 "\n " + FALSE_EXPR@1976..2032 + EXPR_ERROR@1976..2032 + ERROR_KW@1976..1981 "error" + WHITESPACE@1981..1982 " " + EXPR_BINARY@1982..2032 + LHS_EXPR@1982..2016 + EXPR_STRING@1982..2016 + STRING_SINGLE@1982..2016 "'Expected string or a ..." + WHITESPACE@2016..2017 " " + MODULO@2017..2018 "%" + WHITESPACE@2018..2019 " " + EXPR_APPLY@2019..2032 + EXPR_INDEX@2019..2027 + EXPR_VAR@2019..2022 + NAME@2019..2022 + IDENT@2019..2022 "std" + DOT@2022..2023 "." + NAME@2023..2027 + IDENT@2023..2027 "type" + ARGS_DESC@2027..2032 + L_PAREN@2027..2028 "(" + ARG@2028..2031 + EXPR_VAR@2028..2031 + NAME@2028..2031 + IDENT@2028..2031 "arr" + R_PAREN@2031..2032 ")" COMMA@2032..2033 "," WHITESPACE@2033..2037 "\n\n " - MEMBER_FIELD@2037..2512 - FIELD_METHOD@2037..2512 - FIELD_NAME_FIXED@2037..2046 - NAME@2037..2046 - IDENT@2037..2046 "filterMap" - PARAMS_DESC@2046..2074 - L_PAREN@2046..2047 "(" - PARAM@2047..2058 - DESTRUCT_FULL@2047..2058 - NAME@2047..2058 - IDENT@2047..2058 "filter_func" - COMMA@2058..2059 "," - WHITESPACE@2059..2060 " " - PARAM@2060..2068 - DESTRUCT_FULL@2060..2068 - NAME@2060..2068 - IDENT@2060..2068 "map_func" - COMMA@2068..2069 "," - WHITESPACE@2069..2070 " " - PARAM@2070..2073 - DESTRUCT_FULL@2070..2073 - NAME@2070..2073 - IDENT@2070..2073 "arr" - R_PAREN@2073..2074 ")" - COLONCOLON@2074..2076 "::" - WHITESPACE@2076..2081 "\n " - EXPR_IF_THEN_ELSE@2081..2512 - IF_KW@2081..2083 "if" - WHITESPACE@2083..2084 " " - EXPR_UNARY@2084..2112 - NOT@2084..2085 "!" - EXPR_APPLY@2085..2112 - EXPR_INDEX@2085..2099 - EXPR_VAR@2085..2088 - NAME@2085..2088 - IDENT@2085..2088 "std" - DOT@2088..2089 "." - NAME@2089..2099 - IDENT@2089..2099 "isFunction" - ARGS_DESC@2099..2112 - L_PAREN@2099..2100 "(" - ARG@2100..2111 - EXPR_VAR@2100..2111 - NAME@2100..2111 - IDENT@2100..2111 "filter_func" - R_PAREN@2111..2112 ")" - WHITESPACE@2112..2113 " " - THEN_KW@2113..2117 "then" - WHITESPACE@2117..2124 "\n " - TRUE_EXPR@2124..2206 - EXPR_ERROR@2124..2206 - ERROR_KW@2124..2129 "error" - WHITESPACE@2129..2130 " " - EXPR_PARENED@2130..2206 - L_PAREN@2130..2131 "(" - EXPR_BINARY@2131..2205 - LHS_EXPR@2131..2181 - EXPR_STRING@2131..2181 - STRING_SINGLE@2131..2181 "'std.filterMap first ..." - WHITESPACE@2181..2182 " " - PLUS@2182..2183 "+" - WHITESPACE@2183..2184 " " - EXPR_APPLY@2184..2205 - EXPR_INDEX@2184..2192 - EXPR_VAR@2184..2187 - NAME@2184..2187 - IDENT@2184..2187 "std" - DOT@2187..2188 "." - NAME@2188..2192 - IDENT@2188..2192 "type" - ARGS_DESC@2192..2205 - L_PAREN@2192..2193 "(" - ARG@2193..2204 - EXPR_VAR@2193..2204 - NAME@2193..2204 - IDENT@2193..2204 "filter_func" - R_PAREN@2204..2205 ")" - R_PAREN@2205..2206 ")" - WHITESPACE@2206..2211 "\n " - ELSE_KW@2211..2215 "else" - WHITESPACE@2215..2216 " " - FALSE_EXPR@2216..2512 - EXPR_IF_THEN_ELSE@2216..2512 - IF_KW@2216..2218 "if" - WHITESPACE@2218..2219 " " - EXPR_UNARY@2219..2244 - NOT@2219..2220 "!" - EXPR_APPLY@2220..2244 - EXPR_INDEX@2220..2234 - EXPR_VAR@2220..2223 - NAME@2220..2223 - IDENT@2220..2223 "std" - DOT@2223..2224 "." - NAME@2224..2234 - IDENT@2224..2234 "isFunction" - ARGS_DESC@2234..2244 - L_PAREN@2234..2235 "(" - ARG@2235..2243 - EXPR_VAR@2235..2243 - NAME@2235..2243 - IDENT@2235..2243 "map_func" - R_PAREN@2243..2244 ")" - WHITESPACE@2244..2245 " " - THEN_KW@2245..2249 "then" - WHITESPACE@2249..2256 "\n " - TRUE_EXPR@2256..2336 - EXPR_ERROR@2256..2336 - ERROR_KW@2256..2261 "error" - WHITESPACE@2261..2262 " " - EXPR_PARENED@2262..2336 - L_PAREN@2262..2263 "(" - EXPR_BINARY@2263..2335 - LHS_EXPR@2263..2314 - EXPR_STRING@2263..2314 - STRING_SINGLE@2263..2314 "'std.filterMap second ..." - WHITESPACE@2314..2315 " " - PLUS@2315..2316 "+" - WHITESPACE@2316..2317 " " - EXPR_APPLY@2317..2335 - EXPR_INDEX@2317..2325 - EXPR_VAR@2317..2320 - NAME@2317..2320 - IDENT@2317..2320 "std" - DOT@2320..2321 "." - NAME@2321..2325 - IDENT@2321..2325 "type" - ARGS_DESC@2325..2335 - L_PAREN@2325..2326 "(" - ARG@2326..2334 - EXPR_VAR@2326..2334 - NAME@2326..2334 - IDENT@2326..2334 "map_func" - R_PAREN@2334..2335 ")" - R_PAREN@2335..2336 ")" - WHITESPACE@2336..2341 "\n " - ELSE_KW@2341..2345 "else" - WHITESPACE@2345..2346 " " - FALSE_EXPR@2346..2512 - EXPR_IF_THEN_ELSE@2346..2512 - IF_KW@2346..2348 "if" - WHITESPACE@2348..2349 " " - EXPR_UNARY@2349..2366 - NOT@2349..2350 "!" - EXPR_APPLY@2350..2366 - EXPR_INDEX@2350..2361 - EXPR_VAR@2350..2353 - NAME@2350..2353 - IDENT@2350..2353 "std" - DOT@2353..2354 "." - NAME@2354..2361 - IDENT@2354..2361 "isArray" - ARGS_DESC@2361..2366 - L_PAREN@2361..2362 "(" - ARG@2362..2365 - EXPR_VAR@2362..2365 - NAME@2362..2365 - IDENT@2362..2365 "arr" - R_PAREN@2365..2366 ")" - WHITESPACE@2366..2367 " " - THEN_KW@2367..2371 "then" - WHITESPACE@2371..2378 "\n " - TRUE_EXPR@2378..2449 - EXPR_ERROR@2378..2449 - ERROR_KW@2378..2383 "error" - WHITESPACE@2383..2384 " " - EXPR_PARENED@2384..2449 - L_PAREN@2384..2385 "(" - EXPR_BINARY@2385..2448 - LHS_EXPR@2385..2432 - EXPR_STRING@2385..2432 - STRING_SINGLE@2385..2432 "'std.filterMap third ..." - WHITESPACE@2432..2433 " " - PLUS@2433..2434 "+" - WHITESPACE@2434..2435 " " - EXPR_APPLY@2435..2448 - EXPR_INDEX@2435..2443 - EXPR_VAR@2435..2438 - NAME@2435..2438 - IDENT@2435..2438 "std" - DOT@2438..2439 "." - NAME@2439..2443 - IDENT@2439..2443 "type" - ARGS_DESC@2443..2448 - L_PAREN@2443..2444 "(" - ARG@2444..2447 - EXPR_VAR@2444..2447 - NAME@2444..2447 - IDENT@2444..2447 "arr" - R_PAREN@2447..2448 ")" - R_PAREN@2448..2449 ")" - WHITESPACE@2449..2454 "\n " - ELSE_KW@2454..2458 "else" - WHITESPACE@2458..2465 "\n " - FALSE_EXPR@2465..2512 - EXPR_APPLY@2465..2512 - EXPR_INDEX@2465..2472 - EXPR_VAR@2465..2468 - NAME@2465..2468 - IDENT@2465..2468 "std" - DOT@2468..2469 "." - NAME@2469..2472 - IDENT@2469..2472 "map" - ARGS_DESC@2472..2512 - L_PAREN@2472..2473 "(" - ARG@2473..2481 - EXPR_VAR@2473..2481 - NAME@2473..2481 - IDENT@2473..2481 "map_func" - COMMA@2481..2482 "," - WHITESPACE@2482..2483 " " - ARG@2483..2511 - EXPR_APPLY@2483..2511 - EXPR_INDEX@2483..2493 - EXPR_VAR@2483..2486 - NAME@2483..2486 - IDENT@2483..2486 "std" - DOT@2486..2487 "." - NAME@2487..2493 - IDENT@2487..2493 "filter" - ARGS_DESC@2493..2511 - L_PAREN@2493..2494 "(" - ARG@2494..2505 - EXPR_VAR@2494..2505 - NAME@2494..2505 - IDENT@2494..2505 "filter_func" - COMMA@2505..2506 "," - WHITESPACE@2506..2507 " " - ARG@2507..2510 - EXPR_VAR@2507..2510 - NAME@2507..2510 - IDENT@2507..2510 "arr" - R_PAREN@2510..2511 ")" - R_PAREN@2511..2512 ")" + MEMBER_FIELD_METHOD@2037..2512 + FIELD_NAME_FIXED@2037..2046 + NAME@2037..2046 + IDENT@2037..2046 "filterMap" + PARAMS_DESC@2046..2074 + L_PAREN@2046..2047 "(" + PARAM@2047..2058 + DESTRUCT_FULL@2047..2058 + NAME@2047..2058 + IDENT@2047..2058 "filter_func" + COMMA@2058..2059 "," + WHITESPACE@2059..2060 " " + PARAM@2060..2068 + DESTRUCT_FULL@2060..2068 + NAME@2060..2068 + IDENT@2060..2068 "map_func" + COMMA@2068..2069 "," + WHITESPACE@2069..2070 " " + PARAM@2070..2073 + DESTRUCT_FULL@2070..2073 + NAME@2070..2073 + IDENT@2070..2073 "arr" + R_PAREN@2073..2074 ")" + COLONCOLON@2074..2076 "::" + WHITESPACE@2076..2081 "\n " + EXPR_IF_THEN_ELSE@2081..2512 + IF_KW@2081..2083 "if" + WHITESPACE@2083..2084 " " + EXPR_UNARY@2084..2112 + NOT@2084..2085 "!" + EXPR_APPLY@2085..2112 + EXPR_INDEX@2085..2099 + EXPR_VAR@2085..2088 + NAME@2085..2088 + IDENT@2085..2088 "std" + DOT@2088..2089 "." + NAME@2089..2099 + IDENT@2089..2099 "isFunction" + ARGS_DESC@2099..2112 + L_PAREN@2099..2100 "(" + ARG@2100..2111 + EXPR_VAR@2100..2111 + NAME@2100..2111 + IDENT@2100..2111 "filter_func" + R_PAREN@2111..2112 ")" + WHITESPACE@2112..2113 " " + THEN_KW@2113..2117 "then" + WHITESPACE@2117..2124 "\n " + TRUE_EXPR@2124..2206 + EXPR_ERROR@2124..2206 + ERROR_KW@2124..2129 "error" + WHITESPACE@2129..2130 " " + EXPR_PARENED@2130..2206 + L_PAREN@2130..2131 "(" + EXPR_BINARY@2131..2205 + LHS_EXPR@2131..2181 + EXPR_STRING@2131..2181 + STRING_SINGLE@2131..2181 "'std.filterMap first ..." + WHITESPACE@2181..2182 " " + PLUS@2182..2183 "+" + WHITESPACE@2183..2184 " " + EXPR_APPLY@2184..2205 + EXPR_INDEX@2184..2192 + EXPR_VAR@2184..2187 + NAME@2184..2187 + IDENT@2184..2187 "std" + DOT@2187..2188 "." + NAME@2188..2192 + IDENT@2188..2192 "type" + ARGS_DESC@2192..2205 + L_PAREN@2192..2193 "(" + ARG@2193..2204 + EXPR_VAR@2193..2204 + NAME@2193..2204 + IDENT@2193..2204 "filter_func" + R_PAREN@2204..2205 ")" + R_PAREN@2205..2206 ")" + WHITESPACE@2206..2211 "\n " + ELSE_KW@2211..2215 "else" + WHITESPACE@2215..2216 " " + FALSE_EXPR@2216..2512 + EXPR_IF_THEN_ELSE@2216..2512 + IF_KW@2216..2218 "if" + WHITESPACE@2218..2219 " " + EXPR_UNARY@2219..2244 + NOT@2219..2220 "!" + EXPR_APPLY@2220..2244 + EXPR_INDEX@2220..2234 + EXPR_VAR@2220..2223 + NAME@2220..2223 + IDENT@2220..2223 "std" + DOT@2223..2224 "." + NAME@2224..2234 + IDENT@2224..2234 "isFunction" + ARGS_DESC@2234..2244 + L_PAREN@2234..2235 "(" + ARG@2235..2243 + EXPR_VAR@2235..2243 + NAME@2235..2243 + IDENT@2235..2243 "map_func" + R_PAREN@2243..2244 ")" + WHITESPACE@2244..2245 " " + THEN_KW@2245..2249 "then" + WHITESPACE@2249..2256 "\n " + TRUE_EXPR@2256..2336 + EXPR_ERROR@2256..2336 + ERROR_KW@2256..2261 "error" + WHITESPACE@2261..2262 " " + EXPR_PARENED@2262..2336 + L_PAREN@2262..2263 "(" + EXPR_BINARY@2263..2335 + LHS_EXPR@2263..2314 + EXPR_STRING@2263..2314 + STRING_SINGLE@2263..2314 "'std.filterMap second ..." + WHITESPACE@2314..2315 " " + PLUS@2315..2316 "+" + WHITESPACE@2316..2317 " " + EXPR_APPLY@2317..2335 + EXPR_INDEX@2317..2325 + EXPR_VAR@2317..2320 + NAME@2317..2320 + IDENT@2317..2320 "std" + DOT@2320..2321 "." + NAME@2321..2325 + IDENT@2321..2325 "type" + ARGS_DESC@2325..2335 + L_PAREN@2325..2326 "(" + ARG@2326..2334 + EXPR_VAR@2326..2334 + NAME@2326..2334 + IDENT@2326..2334 "map_func" + R_PAREN@2334..2335 ")" + R_PAREN@2335..2336 ")" + WHITESPACE@2336..2341 "\n " + ELSE_KW@2341..2345 "else" + WHITESPACE@2345..2346 " " + FALSE_EXPR@2346..2512 + EXPR_IF_THEN_ELSE@2346..2512 + IF_KW@2346..2348 "if" + WHITESPACE@2348..2349 " " + EXPR_UNARY@2349..2366 + NOT@2349..2350 "!" + EXPR_APPLY@2350..2366 + EXPR_INDEX@2350..2361 + EXPR_VAR@2350..2353 + NAME@2350..2353 + IDENT@2350..2353 "std" + DOT@2353..2354 "." + NAME@2354..2361 + IDENT@2354..2361 "isArray" + ARGS_DESC@2361..2366 + L_PAREN@2361..2362 "(" + ARG@2362..2365 + EXPR_VAR@2362..2365 + NAME@2362..2365 + IDENT@2362..2365 "arr" + R_PAREN@2365..2366 ")" + WHITESPACE@2366..2367 " " + THEN_KW@2367..2371 "then" + WHITESPACE@2371..2378 "\n " + TRUE_EXPR@2378..2449 + EXPR_ERROR@2378..2449 + ERROR_KW@2378..2383 "error" + WHITESPACE@2383..2384 " " + EXPR_PARENED@2384..2449 + L_PAREN@2384..2385 "(" + EXPR_BINARY@2385..2448 + LHS_EXPR@2385..2432 + EXPR_STRING@2385..2432 + STRING_SINGLE@2385..2432 "'std.filterMap third ..." + WHITESPACE@2432..2433 " " + PLUS@2433..2434 "+" + WHITESPACE@2434..2435 " " + EXPR_APPLY@2435..2448 + EXPR_INDEX@2435..2443 + EXPR_VAR@2435..2438 + NAME@2435..2438 + IDENT@2435..2438 "std" + DOT@2438..2439 "." + NAME@2439..2443 + IDENT@2439..2443 "type" + ARGS_DESC@2443..2448 + L_PAREN@2443..2444 "(" + ARG@2444..2447 + EXPR_VAR@2444..2447 + NAME@2444..2447 + IDENT@2444..2447 "arr" + R_PAREN@2447..2448 ")" + R_PAREN@2448..2449 ")" + WHITESPACE@2449..2454 "\n " + ELSE_KW@2454..2458 "else" + WHITESPACE@2458..2465 "\n " + FALSE_EXPR@2465..2512 + EXPR_APPLY@2465..2512 + EXPR_INDEX@2465..2472 + EXPR_VAR@2465..2468 + NAME@2465..2468 + IDENT@2465..2468 "std" + DOT@2468..2469 "." + NAME@2469..2472 + IDENT@2469..2472 "map" + ARGS_DESC@2472..2512 + L_PAREN@2472..2473 "(" + ARG@2473..2481 + EXPR_VAR@2473..2481 + NAME@2473..2481 + IDENT@2473..2481 "map_func" + COMMA@2481..2482 "," + WHITESPACE@2482..2483 " " + ARG@2483..2511 + EXPR_APPLY@2483..2511 + EXPR_INDEX@2483..2493 + EXPR_VAR@2483..2486 + NAME@2483..2486 + IDENT@2483..2486 "std" + DOT@2486..2487 "." + NAME@2487..2493 + IDENT@2487..2493 "filter" + ARGS_DESC@2493..2511 + L_PAREN@2493..2494 "(" + ARG@2494..2505 + EXPR_VAR@2494..2505 + NAME@2494..2505 + IDENT@2494..2505 "filter_func" + COMMA@2505..2506 "," + WHITESPACE@2506..2507 " " + ARG@2507..2510 + EXPR_VAR@2507..2510 + NAME@2507..2510 + IDENT@2507..2510 "arr" + R_PAREN@2510..2511 ")" + R_PAREN@2511..2512 ")" COMMA@2512..2513 "," WHITESPACE@2513..2517 "\n\n " - MEMBER_FIELD@2517..2625 - FIELD_METHOD@2517..2625 - FIELD_NAME_FIXED@2517..2528 - NAME@2517..2528 - IDENT@2517..2528 "assertEqual" - PARAMS_DESC@2528..2534 - L_PAREN@2528..2529 "(" - PARAM@2529..2530 - DESTRUCT_FULL@2529..2530 - NAME@2529..2530 - IDENT@2529..2530 "a" - COMMA@2530..2531 "," - WHITESPACE@2531..2532 " " - PARAM@2532..2533 - DESTRUCT_FULL@2532..2533 - NAME@2532..2533 - IDENT@2532..2533 "b" - R_PAREN@2533..2534 ")" - COLONCOLON@2534..2536 "::" - WHITESPACE@2536..2541 "\n " - EXPR_IF_THEN_ELSE@2541..2625 - IF_KW@2541..2543 "if" - WHITESPACE@2543..2544 " " - EXPR_BINARY@2544..2550 - LHS_EXPR@2544..2545 - EXPR_VAR@2544..2545 - NAME@2544..2545 - IDENT@2544..2545 "a" - WHITESPACE@2545..2546 " " - EQ@2546..2548 "==" - WHITESPACE@2548..2549 " " - EXPR_VAR@2549..2550 - NAME@2549..2550 - IDENT@2549..2550 "b" - WHITESPACE@2550..2551 " " - THEN_KW@2551..2555 "then" - WHITESPACE@2555..2562 "\n " - TRUE_EXPR@2562..2566 - EXPR_LITERAL@2562..2566 - TRUE_KW@2562..2566 "true" - WHITESPACE@2566..2571 "\n " - ELSE_KW@2571..2575 "else" - WHITESPACE@2575..2582 "\n " - FALSE_EXPR@2582..2625 - EXPR_ERROR@2582..2625 - ERROR_KW@2582..2587 "error" - WHITESPACE@2587..2588 " " - EXPR_BINARY@2588..2625 - LHS_EXPR@2588..2621 - EXPR_BINARY@2588..2621 - LHS_EXPR@2588..2612 - EXPR_BINARY@2588..2612 - LHS_EXPR@2588..2608 - EXPR_STRING@2588..2608 - STRING_SINGLE@2588..2608 "'Assertion failed. '" - WHITESPACE@2608..2609 " " - PLUS@2609..2610 "+" - WHITESPACE@2610..2611 " " - EXPR_VAR@2611..2612 - NAME@2611..2612 - IDENT@2611..2612 "a" - WHITESPACE@2612..2613 " " - PLUS@2613..2614 "+" - WHITESPACE@2614..2615 " " - EXPR_STRING@2615..2621 - STRING_SINGLE@2615..2621 "' != '" - WHITESPACE@2621..2622 " " - PLUS@2622..2623 "+" - WHITESPACE@2623..2624 " " - EXPR_VAR@2624..2625 - NAME@2624..2625 - IDENT@2624..2625 "b" + MEMBER_FIELD_METHOD@2517..2625 + FIELD_NAME_FIXED@2517..2528 + NAME@2517..2528 + IDENT@2517..2528 "assertEqual" + PARAMS_DESC@2528..2534 + L_PAREN@2528..2529 "(" + PARAM@2529..2530 + DESTRUCT_FULL@2529..2530 + NAME@2529..2530 + IDENT@2529..2530 "a" + COMMA@2530..2531 "," + WHITESPACE@2531..2532 " " + PARAM@2532..2533 + DESTRUCT_FULL@2532..2533 + NAME@2532..2533 + IDENT@2532..2533 "b" + R_PAREN@2533..2534 ")" + COLONCOLON@2534..2536 "::" + WHITESPACE@2536..2541 "\n " + EXPR_IF_THEN_ELSE@2541..2625 + IF_KW@2541..2543 "if" + WHITESPACE@2543..2544 " " + EXPR_BINARY@2544..2550 + LHS_EXPR@2544..2545 + EXPR_VAR@2544..2545 + NAME@2544..2545 + IDENT@2544..2545 "a" + WHITESPACE@2545..2546 " " + EQ@2546..2548 "==" + WHITESPACE@2548..2549 " " + EXPR_VAR@2549..2550 + NAME@2549..2550 + IDENT@2549..2550 "b" + WHITESPACE@2550..2551 " " + THEN_KW@2551..2555 "then" + WHITESPACE@2555..2562 "\n " + TRUE_EXPR@2562..2566 + EXPR_LITERAL@2562..2566 + TRUE_KW@2562..2566 "true" + WHITESPACE@2566..2571 "\n " + ELSE_KW@2571..2575 "else" + WHITESPACE@2575..2582 "\n " + FALSE_EXPR@2582..2625 + EXPR_ERROR@2582..2625 + ERROR_KW@2582..2587 "error" + WHITESPACE@2587..2588 " " + EXPR_BINARY@2588..2625 + LHS_EXPR@2588..2621 + EXPR_BINARY@2588..2621 + LHS_EXPR@2588..2612 + EXPR_BINARY@2588..2612 + LHS_EXPR@2588..2608 + EXPR_STRING@2588..2608 + STRING_SINGLE@2588..2608 "'Assertion failed. '" + WHITESPACE@2608..2609 " " + PLUS@2609..2610 "+" + WHITESPACE@2610..2611 " " + EXPR_VAR@2611..2612 + NAME@2611..2612 + IDENT@2611..2612 "a" + WHITESPACE@2612..2613 " " + PLUS@2613..2614 "+" + WHITESPACE@2614..2615 " " + EXPR_STRING@2615..2621 + STRING_SINGLE@2615..2621 "' != '" + WHITESPACE@2621..2622 " " + PLUS@2622..2623 "+" + WHITESPACE@2623..2624 " " + EXPR_VAR@2624..2625 + NAME@2624..2625 + IDENT@2624..2625 "b" COMMA@2625..2626 "," WHITESPACE@2626..2630 "\n\n " - MEMBER_FIELD@2630..2732 - FIELD_METHOD@2630..2732 - FIELD_NAME_FIXED@2630..2635 - NAME@2630..2635 - IDENT@2630..2635 "clamp" - PARAMS_DESC@2635..2654 - L_PAREN@2635..2636 "(" - PARAM@2636..2637 - DESTRUCT_FULL@2636..2637 - NAME@2636..2637 - IDENT@2636..2637 "x" - COMMA@2637..2638 "," - WHITESPACE@2638..2639 " " - PARAM@2639..2645 - DESTRUCT_FULL@2639..2645 - NAME@2639..2645 - IDENT@2639..2645 "minVal" - COMMA@2645..2646 "," - WHITESPACE@2646..2647 " " - PARAM@2647..2653 - DESTRUCT_FULL@2647..2653 - NAME@2647..2653 - IDENT@2647..2653 "maxVal" - R_PAREN@2653..2654 ")" - COLONCOLON@2654..2656 "::" - WHITESPACE@2656..2661 "\n " - EXPR_IF_THEN_ELSE@2661..2732 - IF_KW@2661..2663 "if" - WHITESPACE@2663..2664 " " - EXPR_BINARY@2664..2674 - LHS_EXPR@2664..2665 - EXPR_VAR@2664..2665 - NAME@2664..2665 - IDENT@2664..2665 "x" - WHITESPACE@2665..2666 " " - LT@2666..2667 "<" - WHITESPACE@2667..2668 " " - EXPR_VAR@2668..2674 - NAME@2668..2674 - IDENT@2668..2674 "minVal" - WHITESPACE@2674..2675 " " - THEN_KW@2675..2679 "then" - WHITESPACE@2679..2680 " " - TRUE_EXPR@2680..2686 - EXPR_VAR@2680..2686 - NAME@2680..2686 - IDENT@2680..2686 "minVal" - WHITESPACE@2686..2691 "\n " - ELSE_KW@2691..2695 "else" - WHITESPACE@2695..2696 " " - FALSE_EXPR@2696..2732 - EXPR_IF_THEN_ELSE@2696..2732 - IF_KW@2696..2698 "if" - WHITESPACE@2698..2699 " " - EXPR_BINARY@2699..2709 - LHS_EXPR@2699..2700 - EXPR_VAR@2699..2700 - NAME@2699..2700 - IDENT@2699..2700 "x" - WHITESPACE@2700..2701 " " - GT@2701..2702 ">" - WHITESPACE@2702..2703 " " - EXPR_VAR@2703..2709 - NAME@2703..2709 - IDENT@2703..2709 "maxVal" - WHITESPACE@2709..2710 " " - THEN_KW@2710..2714 "then" - WHITESPACE@2714..2715 " " - TRUE_EXPR@2715..2721 - EXPR_VAR@2715..2721 - NAME@2715..2721 - IDENT@2715..2721 "maxVal" - WHITESPACE@2721..2726 "\n " - ELSE_KW@2726..2730 "else" - WHITESPACE@2730..2731 " " - FALSE_EXPR@2731..2732 - EXPR_VAR@2731..2732 - NAME@2731..2732 - IDENT@2731..2732 "x" + MEMBER_FIELD_METHOD@2630..2732 + FIELD_NAME_FIXED@2630..2635 + NAME@2630..2635 + IDENT@2630..2635 "clamp" + PARAMS_DESC@2635..2654 + L_PAREN@2635..2636 "(" + PARAM@2636..2637 + DESTRUCT_FULL@2636..2637 + NAME@2636..2637 + IDENT@2636..2637 "x" + COMMA@2637..2638 "," + WHITESPACE@2638..2639 " " + PARAM@2639..2645 + DESTRUCT_FULL@2639..2645 + NAME@2639..2645 + IDENT@2639..2645 "minVal" + COMMA@2645..2646 "," + WHITESPACE@2646..2647 " " + PARAM@2647..2653 + DESTRUCT_FULL@2647..2653 + NAME@2647..2653 + IDENT@2647..2653 "maxVal" + R_PAREN@2653..2654 ")" + COLONCOLON@2654..2656 "::" + WHITESPACE@2656..2661 "\n " + EXPR_IF_THEN_ELSE@2661..2732 + IF_KW@2661..2663 "if" + WHITESPACE@2663..2664 " " + EXPR_BINARY@2664..2674 + LHS_EXPR@2664..2665 + EXPR_VAR@2664..2665 + NAME@2664..2665 + IDENT@2664..2665 "x" + WHITESPACE@2665..2666 " " + LT@2666..2667 "<" + WHITESPACE@2667..2668 " " + EXPR_VAR@2668..2674 + NAME@2668..2674 + IDENT@2668..2674 "minVal" + WHITESPACE@2674..2675 " " + THEN_KW@2675..2679 "then" + WHITESPACE@2679..2680 " " + TRUE_EXPR@2680..2686 + EXPR_VAR@2680..2686 + NAME@2680..2686 + IDENT@2680..2686 "minVal" + WHITESPACE@2686..2691 "\n " + ELSE_KW@2691..2695 "else" + WHITESPACE@2695..2696 " " + FALSE_EXPR@2696..2732 + EXPR_IF_THEN_ELSE@2696..2732 + IF_KW@2696..2698 "if" + WHITESPACE@2698..2699 " " + EXPR_BINARY@2699..2709 + LHS_EXPR@2699..2700 + EXPR_VAR@2699..2700 + NAME@2699..2700 + IDENT@2699..2700 "x" + WHITESPACE@2700..2701 " " + GT@2701..2702 ">" + WHITESPACE@2702..2703 " " + EXPR_VAR@2703..2709 + NAME@2703..2709 + IDENT@2703..2709 "maxVal" + WHITESPACE@2709..2710 " " + THEN_KW@2710..2714 "then" + WHITESPACE@2714..2715 " " + TRUE_EXPR@2715..2721 + EXPR_VAR@2715..2721 + NAME@2715..2721 + IDENT@2715..2721 "maxVal" + WHITESPACE@2721..2726 "\n " + ELSE_KW@2726..2730 "else" + WHITESPACE@2730..2731 " " + FALSE_EXPR@2731..2732 + EXPR_VAR@2731..2732 + NAME@2731..2732 + IDENT@2731..2732 "x" COMMA@2732..2733 "," WHITESPACE@2733..2737 "\n\n " - MEMBER_FIELD@2737..2804 - FIELD_METHOD@2737..2804 - FIELD_NAME_FIXED@2737..2750 - NAME@2737..2750 - IDENT@2737..2750 "flattenArrays" - PARAMS_DESC@2750..2756 - L_PAREN@2750..2751 "(" - PARAM@2751..2755 - DESTRUCT_FULL@2751..2755 - NAME@2751..2755 - IDENT@2751..2755 "arrs" - R_PAREN@2755..2756 ")" - COLONCOLON@2756..2758 "::" - WHITESPACE@2758..2763 "\n " - EXPR_APPLY@2763..2804 - EXPR_INDEX@2763..2772 - EXPR_VAR@2763..2766 - NAME@2763..2766 - IDENT@2763..2766 "std" - DOT@2766..2767 "." - NAME@2767..2772 - IDENT@2767..2772 "foldl" - ARGS_DESC@2772..2804 - L_PAREN@2772..2773 "(" - ARG@2773..2793 - EXPR_FUNCTION@2773..2793 - FUNCTION_KW@2773..2781 "function" - PARAMS_DESC@2781..2787 - L_PAREN@2781..2782 "(" - PARAM@2782..2783 - DESTRUCT_FULL@2782..2783 - NAME@2782..2783 - IDENT@2782..2783 "a" - COMMA@2783..2784 "," - WHITESPACE@2784..2785 " " - PARAM@2785..2786 - DESTRUCT_FULL@2785..2786 - NAME@2785..2786 - IDENT@2785..2786 "b" - R_PAREN@2786..2787 ")" - WHITESPACE@2787..2788 " " - EXPR_BINARY@2788..2793 - LHS_EXPR@2788..2789 - EXPR_VAR@2788..2789 - NAME@2788..2789 - IDENT@2788..2789 "a" - WHITESPACE@2789..2790 " " - PLUS@2790..2791 "+" - WHITESPACE@2791..2792 " " - EXPR_VAR@2792..2793 - NAME@2792..2793 - IDENT@2792..2793 "b" - COMMA@2793..2794 "," - WHITESPACE@2794..2795 " " - ARG@2795..2799 - EXPR_VAR@2795..2799 - NAME@2795..2799 - IDENT@2795..2799 "arrs" - COMMA@2799..2800 "," - WHITESPACE@2800..2801 " " - ARG@2801..2803 - EXPR_ARRAY@2801..2803 - L_BRACK@2801..2802 "[" - R_BRACK@2802..2803 "]" - R_PAREN@2803..2804 ")" + MEMBER_FIELD_METHOD@2737..2804 + FIELD_NAME_FIXED@2737..2750 + NAME@2737..2750 + IDENT@2737..2750 "flattenArrays" + PARAMS_DESC@2750..2756 + L_PAREN@2750..2751 "(" + PARAM@2751..2755 + DESTRUCT_FULL@2751..2755 + NAME@2751..2755 + IDENT@2751..2755 "arrs" + R_PAREN@2755..2756 ")" + COLONCOLON@2756..2758 "::" + WHITESPACE@2758..2763 "\n " + EXPR_APPLY@2763..2804 + EXPR_INDEX@2763..2772 + EXPR_VAR@2763..2766 + NAME@2763..2766 + IDENT@2763..2766 "std" + DOT@2766..2767 "." + NAME@2767..2772 + IDENT@2767..2772 "foldl" + ARGS_DESC@2772..2804 + L_PAREN@2772..2773 "(" + ARG@2773..2793 + EXPR_FUNCTION@2773..2793 + FUNCTION_KW@2773..2781 "function" + PARAMS_DESC@2781..2787 + L_PAREN@2781..2782 "(" + PARAM@2782..2783 + DESTRUCT_FULL@2782..2783 + NAME@2782..2783 + IDENT@2782..2783 "a" + COMMA@2783..2784 "," + WHITESPACE@2784..2785 " " + PARAM@2785..2786 + DESTRUCT_FULL@2785..2786 + NAME@2785..2786 + IDENT@2785..2786 "b" + R_PAREN@2786..2787 ")" + WHITESPACE@2787..2788 " " + EXPR_BINARY@2788..2793 + LHS_EXPR@2788..2789 + EXPR_VAR@2788..2789 + NAME@2788..2789 + IDENT@2788..2789 "a" + WHITESPACE@2789..2790 " " + PLUS@2790..2791 "+" + WHITESPACE@2791..2792 " " + EXPR_VAR@2792..2793 + NAME@2792..2793 + IDENT@2792..2793 "b" + COMMA@2793..2794 "," + WHITESPACE@2794..2795 " " + ARG@2795..2799 + EXPR_VAR@2795..2799 + NAME@2795..2799 + IDENT@2795..2799 "arrs" + COMMA@2799..2800 "," + WHITESPACE@2800..2801 " " + ARG@2801..2803 + EXPR_ARRAY@2801..2803 + L_BRACK@2801..2802 "[" + R_BRACK@2802..2803 "]" + R_PAREN@2803..2804 ")" COMMA@2804..2805 "," WHITESPACE@2805..2809 "\n\n " - MEMBER_FIELD@2809..3495 - FIELD_METHOD@2809..3495 - FIELD_NAME_FIXED@2809..2820 - NAME@2809..2820 - IDENT@2809..2820 "manifestIni" - PARAMS_DESC@2820..2825 - L_PAREN@2820..2821 "(" - PARAM@2821..2824 - DESTRUCT_FULL@2821..2824 - NAME@2821..2824 - IDENT@2821..2824 "ini" - R_PAREN@2824..2825 ")" - COLONCOLON@2825..2827 "::" - WHITESPACE@2827..2832 "\n " - EXPR_LOCAL@2832..3495 - LOCAL_KW@2832..2837 "local" - WHITESPACE@2837..2838 " " - BIND_FUNCTION@2838..3135 - NAME@2838..2848 - IDENT@2838..2848 "body_lines" - PARAMS_DESC@2848..2854 - L_PAREN@2848..2849 "(" - PARAM@2849..2853 - DESTRUCT_FULL@2849..2853 - NAME@2849..2853 - IDENT@2849..2853 "body" - R_PAREN@2853..2854 ")" - WHITESPACE@2854..2855 " " - ASSIGN@2855..2856 "=" - WHITESPACE@2856..2863 "\n " - EXPR_APPLY@2863..3135 - EXPR_INDEX@2863..2871 - EXPR_VAR@2863..2866 - NAME@2863..2866 - IDENT@2863..2866 "std" - DOT@2866..2867 "." - NAME@2867..2871 - IDENT@2867..2871 "join" - ARGS_DESC@2871..3135 - L_PAREN@2871..2872 "(" - ARG@2872..2874 - EXPR_ARRAY@2872..2874 - L_BRACK@2872..2873 "[" - R_BRACK@2873..2874 "]" - COMMA@2874..2875 "," - WHITESPACE@2875..2876 " " - ARG@2876..3134 - EXPR_ARRAY_COMP@2876..3134 - L_BRACK@2876..2877 "[" - WHITESPACE@2877..2886 "\n " - EXPR_LOCAL@2886..3085 - LOCAL_KW@2886..2891 "local" - WHITESPACE@2891..2892 " " - BIND_DESTRUCT@2892..2917 - DESTRUCT_FULL@2892..2907 - NAME@2892..2907 - IDENT@2892..2907 "value_or_values" - WHITESPACE@2907..2908 " " - ASSIGN@2908..2909 "=" - WHITESPACE@2909..2910 " " - EXPR_INDEX_EXPR@2910..2917 - LHS_EXPR@2910..2914 - EXPR_VAR@2910..2914 - NAME@2910..2914 - IDENT@2910..2914 "body" - L_BRACK@2914..2915 "[" - EXPR_VAR@2915..2916 - NAME@2915..2916 - IDENT@2915..2916 "k" - R_BRACK@2916..2917 "]" - SEMI@2917..2918 ";" - WHITESPACE@2918..2927 "\n " - EXPR_IF_THEN_ELSE@2927..3085 - IF_KW@2927..2929 "if" - WHITESPACE@2929..2930 " " - EXPR_APPLY@2930..2958 - EXPR_INDEX@2930..2941 - EXPR_VAR@2930..2933 - NAME@2930..2933 - IDENT@2930..2933 "std" - DOT@2933..2934 "." - NAME@2934..2941 - IDENT@2934..2941 "isArray" - ARGS_DESC@2941..2958 - L_PAREN@2941..2942 "(" - ARG@2942..2957 - EXPR_VAR@2942..2957 - NAME@2942..2957 - IDENT@2942..2957 "value_or_values" - R_PAREN@2957..2958 ")" - WHITESPACE@2958..2959 " " - THEN_KW@2959..2963 "then" - WHITESPACE@2963..2974 "\n " - TRUE_EXPR@2974..3027 - EXPR_ARRAY_COMP@2974..3027 - L_BRACK@2974..2975 "[" - EXPR_BINARY@2975..2997 - LHS_EXPR@2975..2984 - EXPR_STRING@2975..2984 - STRING_SINGLE@2975..2984 "'%s = %s'" - WHITESPACE@2984..2985 " " - MODULO@2985..2986 "%" - WHITESPACE@2986..2987 " " - EXPR_ARRAY@2987..2997 - L_BRACK@2987..2988 "[" - EXPR_VAR@2988..2989 - NAME@2988..2989 - IDENT@2988..2989 "k" - COMMA@2989..2990 "," - WHITESPACE@2990..2991 " " - EXPR_VAR@2991..2996 - NAME@2991..2996 - IDENT@2991..2996 "value" - R_BRACK@2996..2997 "]" - WHITESPACE@2997..2998 " " - FOR_SPEC@2998..3026 - FOR_KW@2998..3001 "for" - WHITESPACE@3001..3002 " " - NAME@3002..3007 - IDENT@3002..3007 "value" - WHITESPACE@3007..3008 " " - IN_KW@3008..3010 "in" - WHITESPACE@3010..3011 " " - EXPR_VAR@3011..3026 - NAME@3011..3026 - IDENT@3011..3026 "value_or_values" - R_BRACK@3026..3027 "]" - WHITESPACE@3027..3036 "\n " - ELSE_KW@3036..3040 "else" - WHITESPACE@3040..3051 "\n " - FALSE_EXPR@3051..3085 - EXPR_ARRAY@3051..3085 - L_BRACK@3051..3052 "[" - EXPR_BINARY@3052..3084 - LHS_EXPR@3052..3061 - EXPR_STRING@3052..3061 - STRING_SINGLE@3052..3061 "'%s = %s'" - WHITESPACE@3061..3062 " " - MODULO@3062..3063 "%" - WHITESPACE@3063..3064 " " - EXPR_ARRAY@3064..3084 - L_BRACK@3064..3065 "[" - EXPR_VAR@3065..3066 - NAME@3065..3066 - IDENT@3065..3066 "k" - COMMA@3066..3067 "," - WHITESPACE@3067..3068 " " - EXPR_VAR@3068..3083 - NAME@3068..3083 - IDENT@3068..3083 "value_or_values" - R_BRACK@3083..3084 "]" - R_BRACK@3084..3085 "]" - WHITESPACE@3085..3095 "\n\n " - FOR_SPEC@3095..3126 - FOR_KW@3095..3098 "for" - WHITESPACE@3098..3099 " " - NAME@3099..3100 - IDENT@3099..3100 "k" - WHITESPACE@3100..3101 " " - IN_KW@3101..3103 "in" - WHITESPACE@3103..3104 " " - EXPR_APPLY@3104..3126 - EXPR_INDEX@3104..3120 - EXPR_VAR@3104..3107 - NAME@3104..3107 - IDENT@3104..3107 "std" - DOT@3107..3108 "." - NAME@3108..3120 - IDENT@3108..3120 "objectFields" - ARGS_DESC@3120..3126 - L_PAREN@3120..3121 "(" - ARG@3121..3125 - EXPR_VAR@3121..3125 - NAME@3121..3125 - IDENT@3121..3125 "body" - R_PAREN@3125..3126 ")" - WHITESPACE@3126..3133 "\n " - R_BRACK@3133..3134 "]" - R_PAREN@3134..3135 ")" - SEMI@3135..3136 ";" - WHITESPACE@3136..3142 "\n\n " - EXPR_LOCAL@3142..3495 - LOCAL_KW@3142..3147 "local" - WHITESPACE@3147..3148 " " - BIND_FUNCTION@3148..3216 - NAME@3148..3161 - IDENT@3148..3161 "section_lines" - PARAMS_DESC@3161..3175 - L_PAREN@3161..3162 "(" - PARAM@3162..3167 - DESTRUCT_FULL@3162..3167 - NAME@3162..3167 - IDENT@3162..3167 "sname" - COMMA@3167..3168 "," - WHITESPACE@3168..3169 " " - PARAM@3169..3174 - DESTRUCT_FULL@3169..3174 - NAME@3169..3174 - IDENT@3169..3174 "sbody" - R_PAREN@3174..3175 ")" - WHITESPACE@3175..3176 " " - ASSIGN@3176..3177 "=" - WHITESPACE@3177..3178 " " - EXPR_BINARY@3178..3216 - LHS_EXPR@3178..3196 - EXPR_ARRAY@3178..3196 - L_BRACK@3178..3179 "[" - EXPR_BINARY@3179..3195 - LHS_EXPR@3179..3185 - EXPR_STRING@3179..3185 - STRING_SINGLE@3179..3185 "'[%s]'" - WHITESPACE@3185..3186 " " - MODULO@3186..3187 "%" - WHITESPACE@3187..3188 " " - EXPR_ARRAY@3188..3195 - L_BRACK@3188..3189 "[" - EXPR_VAR@3189..3194 - NAME@3189..3194 - IDENT@3189..3194 "sname" - R_BRACK@3194..3195 "]" - R_BRACK@3195..3196 "]" - WHITESPACE@3196..3197 " " - PLUS@3197..3198 "+" - WHITESPACE@3198..3199 " " - EXPR_APPLY@3199..3216 - EXPR_VAR@3199..3209 - NAME@3199..3209 - IDENT@3199..3209 "body_lines" - ARGS_DESC@3209..3216 - L_PAREN@3209..3210 "(" - ARG@3210..3215 - EXPR_VAR@3210..3215 - NAME@3210..3215 - IDENT@3210..3215 "sbody" - R_PAREN@3215..3216 ")" - COMMA@3216..3217 "," - WHITESPACE@3217..3228 "\n " - BIND_DESTRUCT@3228..3303 - DESTRUCT_FULL@3228..3237 - NAME@3228..3237 - IDENT@3228..3237 "main_body" - WHITESPACE@3237..3238 " " - ASSIGN@3238..3239 "=" - WHITESPACE@3239..3240 " " - EXPR_IF_THEN_ELSE@3240..3303 - IF_KW@3240..3242 "if" - WHITESPACE@3242..3243 " " - EXPR_APPLY@3243..3269 - EXPR_INDEX@3243..3256 - EXPR_VAR@3243..3246 - NAME@3243..3246 - IDENT@3243..3246 "std" - DOT@3246..3247 "." - NAME@3247..3256 - IDENT@3247..3256 "objectHas" - ARGS_DESC@3256..3269 - L_PAREN@3256..3257 "(" - ARG@3257..3260 - EXPR_VAR@3257..3260 - NAME@3257..3260 - IDENT@3257..3260 "ini" - COMMA@3260..3261 "," - WHITESPACE@3261..3262 " " - ARG@3262..3268 - EXPR_STRING@3262..3268 - STRING_SINGLE@3262..3268 "'main'" - R_PAREN@3268..3269 ")" - WHITESPACE@3269..3270 " " - THEN_KW@3270..3274 "then" - WHITESPACE@3274..3275 " " - TRUE_EXPR@3275..3295 - EXPR_APPLY@3275..3295 - EXPR_VAR@3275..3285 - NAME@3275..3285 - IDENT@3275..3285 "body_lines" - ARGS_DESC@3285..3295 - L_PAREN@3285..3286 "(" - ARG@3286..3294 - EXPR_INDEX@3286..3294 - EXPR_VAR@3286..3289 - NAME@3286..3289 - IDENT@3286..3289 "ini" - DOT@3289..3290 "." - NAME@3290..3294 - IDENT@3290..3294 "main" - R_PAREN@3294..3295 ")" - WHITESPACE@3295..3296 " " - ELSE_KW@3296..3300 "else" - WHITESPACE@3300..3301 " " - FALSE_EXPR@3301..3303 - EXPR_ARRAY@3301..3303 - L_BRACK@3301..3302 "[" - R_BRACK@3302..3303 "]" - COMMA@3303..3304 "," - WHITESPACE@3304..3315 "\n " - BIND_DESTRUCT@3315..3423 - DESTRUCT_FULL@3315..3327 - NAME@3315..3327 - IDENT@3315..3327 "all_sections" - WHITESPACE@3327..3328 " " - ASSIGN@3328..3329 "=" - WHITESPACE@3329..3330 " " - EXPR_ARRAY_COMP@3330..3423 - L_BRACK@3330..3331 "[" - WHITESPACE@3331..3338 "\n " - EXPR_APPLY@3338..3371 - EXPR_VAR@3338..3351 - NAME@3338..3351 - IDENT@3338..3351 "section_lines" - ARGS_DESC@3351..3371 - L_PAREN@3351..3352 "(" - ARG@3352..3353 - EXPR_VAR@3352..3353 - NAME@3352..3353 - IDENT@3352..3353 "k" - COMMA@3353..3354 "," - WHITESPACE@3354..3355 " " - ARG@3355..3370 - EXPR_INDEX_EXPR@3355..3370 - LHS_EXPR@3355..3367 - EXPR_INDEX@3355..3367 - EXPR_VAR@3355..3358 - NAME@3355..3358 - IDENT@3355..3358 "ini" - DOT@3358..3359 "." - NAME@3359..3367 - IDENT@3359..3367 "sections" - L_BRACK@3367..3368 "[" - EXPR_VAR@3368..3369 - NAME@3368..3369 - IDENT@3368..3369 "k" - R_BRACK@3369..3370 "]" - R_PAREN@3370..3371 ")" - WHITESPACE@3371..3378 "\n " - FOR_SPEC@3378..3417 - FOR_KW@3378..3381 "for" - WHITESPACE@3381..3382 " " - NAME@3382..3383 - IDENT@3382..3383 "k" - WHITESPACE@3383..3384 " " - IN_KW@3384..3386 "in" - WHITESPACE@3386..3387 " " - EXPR_APPLY@3387..3417 - EXPR_INDEX@3387..3403 - EXPR_VAR@3387..3390 - NAME@3387..3390 - IDENT@3387..3390 "std" - DOT@3390..3391 "." - NAME@3391..3403 - IDENT@3391..3403 "objectFields" - ARGS_DESC@3403..3417 - L_PAREN@3403..3404 "(" - ARG@3404..3416 - EXPR_INDEX@3404..3416 - EXPR_VAR@3404..3407 - NAME@3404..3407 - IDENT@3404..3407 "ini" - DOT@3407..3408 "." - NAME@3408..3416 - IDENT@3408..3416 "sections" - R_PAREN@3416..3417 ")" - WHITESPACE@3417..3422 "\n " - R_BRACK@3422..3423 "]" - SEMI@3423..3424 ";" - WHITESPACE@3424..3429 "\n " - EXPR_APPLY@3429..3495 - EXPR_INDEX@3429..3437 - EXPR_VAR@3429..3432 - NAME@3429..3432 - IDENT@3429..3432 "std" - DOT@3432..3433 "." - NAME@3433..3437 - IDENT@3433..3437 "join" - ARGS_DESC@3437..3495 - L_PAREN@3437..3438 "(" - ARG@3438..3442 - EXPR_STRING@3438..3442 - STRING_SINGLE@3438..3442 "'\\n'" - COMMA@3442..3443 "," - WHITESPACE@3443..3444 " " - ARG@3444..3494 - EXPR_BINARY@3444..3494 - LHS_EXPR@3444..3487 - EXPR_BINARY@3444..3487 - LHS_EXPR@3444..3453 - EXPR_VAR@3444..3453 - NAME@3444..3453 - IDENT@3444..3453 "main_body" - WHITESPACE@3453..3454 " " - PLUS@3454..3455 "+" - WHITESPACE@3455..3456 " " - EXPR_APPLY@3456..3487 - EXPR_INDEX@3456..3473 - EXPR_VAR@3456..3459 - NAME@3456..3459 - IDENT@3456..3459 "std" - DOT@3459..3460 "." - NAME@3460..3473 - IDENT@3460..3473 "flattenArrays" - ARGS_DESC@3473..3487 - L_PAREN@3473..3474 "(" - ARG@3474..3486 - EXPR_VAR@3474..3486 - NAME@3474..3486 - IDENT@3474..3486 "all_sections" - R_PAREN@3486..3487 ")" - WHITESPACE@3487..3488 " " - PLUS@3488..3489 "+" - WHITESPACE@3489..3490 " " - EXPR_ARRAY@3490..3494 - L_BRACK@3490..3491 "[" - EXPR_STRING@3491..3493 - STRING_SINGLE@3491..3493 "''" - R_BRACK@3493..3494 "]" - R_PAREN@3494..3495 ")" + MEMBER_FIELD_METHOD@2809..3495 + FIELD_NAME_FIXED@2809..2820 + NAME@2809..2820 + IDENT@2809..2820 "manifestIni" + PARAMS_DESC@2820..2825 + L_PAREN@2820..2821 "(" + PARAM@2821..2824 + DESTRUCT_FULL@2821..2824 + NAME@2821..2824 + IDENT@2821..2824 "ini" + R_PAREN@2824..2825 ")" + COLONCOLON@2825..2827 "::" + WHITESPACE@2827..2832 "\n " + EXPR_LOCAL@2832..3495 + LOCAL_KW@2832..2837 "local" + WHITESPACE@2837..2838 " " + BIND_FUNCTION@2838..3135 + NAME@2838..2848 + IDENT@2838..2848 "body_lines" + PARAMS_DESC@2848..2854 + L_PAREN@2848..2849 "(" + PARAM@2849..2853 + DESTRUCT_FULL@2849..2853 + NAME@2849..2853 + IDENT@2849..2853 "body" + R_PAREN@2853..2854 ")" + WHITESPACE@2854..2855 " " + ASSIGN@2855..2856 "=" + WHITESPACE@2856..2863 "\n " + EXPR_APPLY@2863..3135 + EXPR_INDEX@2863..2871 + EXPR_VAR@2863..2866 + NAME@2863..2866 + IDENT@2863..2866 "std" + DOT@2866..2867 "." + NAME@2867..2871 + IDENT@2867..2871 "join" + ARGS_DESC@2871..3135 + L_PAREN@2871..2872 "(" + ARG@2872..2874 + EXPR_ARRAY@2872..2874 + L_BRACK@2872..2873 "[" + R_BRACK@2873..2874 "]" + COMMA@2874..2875 "," + WHITESPACE@2875..2876 " " + ARG@2876..3134 + EXPR_ARRAY_COMP@2876..3134 + L_BRACK@2876..2877 "[" + WHITESPACE@2877..2886 "\n " + EXPR_LOCAL@2886..3085 + LOCAL_KW@2886..2891 "local" + WHITESPACE@2891..2892 " " + BIND_DESTRUCT@2892..2917 + DESTRUCT_FULL@2892..2907 + NAME@2892..2907 + IDENT@2892..2907 "value_or_values" + WHITESPACE@2907..2908 " " + ASSIGN@2908..2909 "=" + WHITESPACE@2909..2910 " " + EXPR_INDEX_EXPR@2910..2917 + LHS_EXPR@2910..2914 + EXPR_VAR@2910..2914 + NAME@2910..2914 + IDENT@2910..2914 "body" + L_BRACK@2914..2915 "[" + EXPR_VAR@2915..2916 + NAME@2915..2916 + IDENT@2915..2916 "k" + R_BRACK@2916..2917 "]" + SEMI@2917..2918 ";" + WHITESPACE@2918..2927 "\n " + EXPR_IF_THEN_ELSE@2927..3085 + IF_KW@2927..2929 "if" + WHITESPACE@2929..2930 " " + EXPR_APPLY@2930..2958 + EXPR_INDEX@2930..2941 + EXPR_VAR@2930..2933 + NAME@2930..2933 + IDENT@2930..2933 "std" + DOT@2933..2934 "." + NAME@2934..2941 + IDENT@2934..2941 "isArray" + ARGS_DESC@2941..2958 + L_PAREN@2941..2942 "(" + ARG@2942..2957 + EXPR_VAR@2942..2957 + NAME@2942..2957 + IDENT@2942..2957 "value_or_values" + R_PAREN@2957..2958 ")" + WHITESPACE@2958..2959 " " + THEN_KW@2959..2963 "then" + WHITESPACE@2963..2974 "\n " + TRUE_EXPR@2974..3027 + EXPR_ARRAY_COMP@2974..3027 + L_BRACK@2974..2975 "[" + EXPR_BINARY@2975..2997 + LHS_EXPR@2975..2984 + EXPR_STRING@2975..2984 + STRING_SINGLE@2975..2984 "'%s = %s'" + WHITESPACE@2984..2985 " " + MODULO@2985..2986 "%" + WHITESPACE@2986..2987 " " + EXPR_ARRAY@2987..2997 + L_BRACK@2987..2988 "[" + EXPR_VAR@2988..2989 + NAME@2988..2989 + IDENT@2988..2989 "k" + COMMA@2989..2990 "," + WHITESPACE@2990..2991 " " + EXPR_VAR@2991..2996 + NAME@2991..2996 + IDENT@2991..2996 "value" + R_BRACK@2996..2997 "]" + WHITESPACE@2997..2998 " " + FOR_SPEC@2998..3026 + FOR_KW@2998..3001 "for" + WHITESPACE@3001..3002 " " + NAME@3002..3007 + IDENT@3002..3007 "value" + WHITESPACE@3007..3008 " " + IN_KW@3008..3010 "in" + WHITESPACE@3010..3011 " " + EXPR_VAR@3011..3026 + NAME@3011..3026 + IDENT@3011..3026 "value_or_values" + R_BRACK@3026..3027 "]" + WHITESPACE@3027..3036 "\n " + ELSE_KW@3036..3040 "else" + WHITESPACE@3040..3051 "\n " + FALSE_EXPR@3051..3085 + EXPR_ARRAY@3051..3085 + L_BRACK@3051..3052 "[" + EXPR_BINARY@3052..3084 + LHS_EXPR@3052..3061 + EXPR_STRING@3052..3061 + STRING_SINGLE@3052..3061 "'%s = %s'" + WHITESPACE@3061..3062 " " + MODULO@3062..3063 "%" + WHITESPACE@3063..3064 " " + EXPR_ARRAY@3064..3084 + L_BRACK@3064..3065 "[" + EXPR_VAR@3065..3066 + NAME@3065..3066 + IDENT@3065..3066 "k" + COMMA@3066..3067 "," + WHITESPACE@3067..3068 " " + EXPR_VAR@3068..3083 + NAME@3068..3083 + IDENT@3068..3083 "value_or_values" + R_BRACK@3083..3084 "]" + R_BRACK@3084..3085 "]" + WHITESPACE@3085..3095 "\n\n " + FOR_SPEC@3095..3126 + FOR_KW@3095..3098 "for" + WHITESPACE@3098..3099 " " + NAME@3099..3100 + IDENT@3099..3100 "k" + WHITESPACE@3100..3101 " " + IN_KW@3101..3103 "in" + WHITESPACE@3103..3104 " " + EXPR_APPLY@3104..3126 + EXPR_INDEX@3104..3120 + EXPR_VAR@3104..3107 + NAME@3104..3107 + IDENT@3104..3107 "std" + DOT@3107..3108 "." + NAME@3108..3120 + IDENT@3108..3120 "objectFields" + ARGS_DESC@3120..3126 + L_PAREN@3120..3121 "(" + ARG@3121..3125 + EXPR_VAR@3121..3125 + NAME@3121..3125 + IDENT@3121..3125 "body" + R_PAREN@3125..3126 ")" + WHITESPACE@3126..3133 "\n " + R_BRACK@3133..3134 "]" + R_PAREN@3134..3135 ")" + SEMI@3135..3136 ";" + WHITESPACE@3136..3142 "\n\n " + EXPR_LOCAL@3142..3495 + LOCAL_KW@3142..3147 "local" + WHITESPACE@3147..3148 " " + BIND_FUNCTION@3148..3216 + NAME@3148..3161 + IDENT@3148..3161 "section_lines" + PARAMS_DESC@3161..3175 + L_PAREN@3161..3162 "(" + PARAM@3162..3167 + DESTRUCT_FULL@3162..3167 + NAME@3162..3167 + IDENT@3162..3167 "sname" + COMMA@3167..3168 "," + WHITESPACE@3168..3169 " " + PARAM@3169..3174 + DESTRUCT_FULL@3169..3174 + NAME@3169..3174 + IDENT@3169..3174 "sbody" + R_PAREN@3174..3175 ")" + WHITESPACE@3175..3176 " " + ASSIGN@3176..3177 "=" + WHITESPACE@3177..3178 " " + EXPR_BINARY@3178..3216 + LHS_EXPR@3178..3196 + EXPR_ARRAY@3178..3196 + L_BRACK@3178..3179 "[" + EXPR_BINARY@3179..3195 + LHS_EXPR@3179..3185 + EXPR_STRING@3179..3185 + STRING_SINGLE@3179..3185 "'[%s]'" + WHITESPACE@3185..3186 " " + MODULO@3186..3187 "%" + WHITESPACE@3187..3188 " " + EXPR_ARRAY@3188..3195 + L_BRACK@3188..3189 "[" + EXPR_VAR@3189..3194 + NAME@3189..3194 + IDENT@3189..3194 "sname" + R_BRACK@3194..3195 "]" + R_BRACK@3195..3196 "]" + WHITESPACE@3196..3197 " " + PLUS@3197..3198 "+" + WHITESPACE@3198..3199 " " + EXPR_APPLY@3199..3216 + EXPR_VAR@3199..3209 + NAME@3199..3209 + IDENT@3199..3209 "body_lines" + ARGS_DESC@3209..3216 + L_PAREN@3209..3210 "(" + ARG@3210..3215 + EXPR_VAR@3210..3215 + NAME@3210..3215 + IDENT@3210..3215 "sbody" + R_PAREN@3215..3216 ")" + COMMA@3216..3217 "," + WHITESPACE@3217..3228 "\n " + BIND_DESTRUCT@3228..3303 + DESTRUCT_FULL@3228..3237 + NAME@3228..3237 + IDENT@3228..3237 "main_body" + WHITESPACE@3237..3238 " " + ASSIGN@3238..3239 "=" + WHITESPACE@3239..3240 " " + EXPR_IF_THEN_ELSE@3240..3303 + IF_KW@3240..3242 "if" + WHITESPACE@3242..3243 " " + EXPR_APPLY@3243..3269 + EXPR_INDEX@3243..3256 + EXPR_VAR@3243..3246 + NAME@3243..3246 + IDENT@3243..3246 "std" + DOT@3246..3247 "." + NAME@3247..3256 + IDENT@3247..3256 "objectHas" + ARGS_DESC@3256..3269 + L_PAREN@3256..3257 "(" + ARG@3257..3260 + EXPR_VAR@3257..3260 + NAME@3257..3260 + IDENT@3257..3260 "ini" + COMMA@3260..3261 "," + WHITESPACE@3261..3262 " " + ARG@3262..3268 + EXPR_STRING@3262..3268 + STRING_SINGLE@3262..3268 "'main'" + R_PAREN@3268..3269 ")" + WHITESPACE@3269..3270 " " + THEN_KW@3270..3274 "then" + WHITESPACE@3274..3275 " " + TRUE_EXPR@3275..3295 + EXPR_APPLY@3275..3295 + EXPR_VAR@3275..3285 + NAME@3275..3285 + IDENT@3275..3285 "body_lines" + ARGS_DESC@3285..3295 + L_PAREN@3285..3286 "(" + ARG@3286..3294 + EXPR_INDEX@3286..3294 + EXPR_VAR@3286..3289 + NAME@3286..3289 + IDENT@3286..3289 "ini" + DOT@3289..3290 "." + NAME@3290..3294 + IDENT@3290..3294 "main" + R_PAREN@3294..3295 ")" + WHITESPACE@3295..3296 " " + ELSE_KW@3296..3300 "else" + WHITESPACE@3300..3301 " " + FALSE_EXPR@3301..3303 + EXPR_ARRAY@3301..3303 + L_BRACK@3301..3302 "[" + R_BRACK@3302..3303 "]" + COMMA@3303..3304 "," + WHITESPACE@3304..3315 "\n " + BIND_DESTRUCT@3315..3423 + DESTRUCT_FULL@3315..3327 + NAME@3315..3327 + IDENT@3315..3327 "all_sections" + WHITESPACE@3327..3328 " " + ASSIGN@3328..3329 "=" + WHITESPACE@3329..3330 " " + EXPR_ARRAY_COMP@3330..3423 + L_BRACK@3330..3331 "[" + WHITESPACE@3331..3338 "\n " + EXPR_APPLY@3338..3371 + EXPR_VAR@3338..3351 + NAME@3338..3351 + IDENT@3338..3351 "section_lines" + ARGS_DESC@3351..3371 + L_PAREN@3351..3352 "(" + ARG@3352..3353 + EXPR_VAR@3352..3353 + NAME@3352..3353 + IDENT@3352..3353 "k" + COMMA@3353..3354 "," + WHITESPACE@3354..3355 " " + ARG@3355..3370 + EXPR_INDEX_EXPR@3355..3370 + LHS_EXPR@3355..3367 + EXPR_INDEX@3355..3367 + EXPR_VAR@3355..3358 + NAME@3355..3358 + IDENT@3355..3358 "ini" + DOT@3358..3359 "." + NAME@3359..3367 + IDENT@3359..3367 "sections" + L_BRACK@3367..3368 "[" + EXPR_VAR@3368..3369 + NAME@3368..3369 + IDENT@3368..3369 "k" + R_BRACK@3369..3370 "]" + R_PAREN@3370..3371 ")" + WHITESPACE@3371..3378 "\n " + FOR_SPEC@3378..3417 + FOR_KW@3378..3381 "for" + WHITESPACE@3381..3382 " " + NAME@3382..3383 + IDENT@3382..3383 "k" + WHITESPACE@3383..3384 " " + IN_KW@3384..3386 "in" + WHITESPACE@3386..3387 " " + EXPR_APPLY@3387..3417 + EXPR_INDEX@3387..3403 + EXPR_VAR@3387..3390 + NAME@3387..3390 + IDENT@3387..3390 "std" + DOT@3390..3391 "." + NAME@3391..3403 + IDENT@3391..3403 "objectFields" + ARGS_DESC@3403..3417 + L_PAREN@3403..3404 "(" + ARG@3404..3416 + EXPR_INDEX@3404..3416 + EXPR_VAR@3404..3407 + NAME@3404..3407 + IDENT@3404..3407 "ini" + DOT@3407..3408 "." + NAME@3408..3416 + IDENT@3408..3416 "sections" + R_PAREN@3416..3417 ")" + WHITESPACE@3417..3422 "\n " + R_BRACK@3422..3423 "]" + SEMI@3423..3424 ";" + WHITESPACE@3424..3429 "\n " + EXPR_APPLY@3429..3495 + EXPR_INDEX@3429..3437 + EXPR_VAR@3429..3432 + NAME@3429..3432 + IDENT@3429..3432 "std" + DOT@3432..3433 "." + NAME@3433..3437 + IDENT@3433..3437 "join" + ARGS_DESC@3437..3495 + L_PAREN@3437..3438 "(" + ARG@3438..3442 + EXPR_STRING@3438..3442 + STRING_SINGLE@3438..3442 "'\\n'" + COMMA@3442..3443 "," + WHITESPACE@3443..3444 " " + ARG@3444..3494 + EXPR_BINARY@3444..3494 + LHS_EXPR@3444..3487 + EXPR_BINARY@3444..3487 + LHS_EXPR@3444..3453 + EXPR_VAR@3444..3453 + NAME@3444..3453 + IDENT@3444..3453 "main_body" + WHITESPACE@3453..3454 " " + PLUS@3454..3455 "+" + WHITESPACE@3455..3456 " " + EXPR_APPLY@3456..3487 + EXPR_INDEX@3456..3473 + EXPR_VAR@3456..3459 + NAME@3456..3459 + IDENT@3456..3459 "std" + DOT@3459..3460 "." + NAME@3460..3473 + IDENT@3460..3473 "flattenArrays" + ARGS_DESC@3473..3487 + L_PAREN@3473..3474 "(" + ARG@3474..3486 + EXPR_VAR@3474..3486 + NAME@3474..3486 + IDENT@3474..3486 "all_sections" + R_PAREN@3486..3487 ")" + WHITESPACE@3487..3488 " " + PLUS@3488..3489 "+" + WHITESPACE@3489..3490 " " + EXPR_ARRAY@3490..3494 + L_BRACK@3490..3491 "[" + EXPR_STRING@3491..3493 + STRING_SINGLE@3491..3493 "''" + R_BRACK@3493..3494 "]" + R_PAREN@3494..3495 ")" COMMA@3495..3496 "," WHITESPACE@3496..3500 "\n\n " - MEMBER_FIELD@3500..3553 - FIELD_METHOD@3500..3553 - FIELD_NAME_FIXED@3500..3512 - NAME@3500..3512 - IDENT@3500..3512 "manifestToml" - PARAMS_DESC@3512..3519 - L_PAREN@3512..3513 "(" - PARAM@3513..3518 - DESTRUCT_FULL@3513..3518 - NAME@3513..3518 - IDENT@3513..3518 "value" - R_PAREN@3518..3519 ")" - COLONCOLON@3519..3521 "::" - WHITESPACE@3521..3522 " " - EXPR_APPLY@3522..3553 - EXPR_INDEX@3522..3540 - EXPR_VAR@3522..3525 - NAME@3522..3525 - IDENT@3522..3525 "std" - DOT@3525..3526 "." - NAME@3526..3540 - IDENT@3526..3540 "manifestTomlEx" - ARGS_DESC@3540..3553 - L_PAREN@3540..3541 "(" - ARG@3541..3546 - EXPR_VAR@3541..3546 - NAME@3541..3546 - IDENT@3541..3546 "value" - COMMA@3546..3547 "," - WHITESPACE@3547..3548 " " - ARG@3548..3552 - EXPR_STRING@3548..3552 - STRING_SINGLE@3548..3552 "' '" - R_PAREN@3552..3553 ")" + MEMBER_FIELD_METHOD@3500..3553 + FIELD_NAME_FIXED@3500..3512 + NAME@3500..3512 + IDENT@3500..3512 "manifestToml" + PARAMS_DESC@3512..3519 + L_PAREN@3512..3513 "(" + PARAM@3513..3518 + DESTRUCT_FULL@3513..3518 + NAME@3513..3518 + IDENT@3513..3518 "value" + R_PAREN@3518..3519 ")" + COLONCOLON@3519..3521 "::" + WHITESPACE@3521..3522 " " + EXPR_APPLY@3522..3553 + EXPR_INDEX@3522..3540 + EXPR_VAR@3522..3525 + NAME@3522..3525 + IDENT@3522..3525 "std" + DOT@3525..3526 "." + NAME@3526..3540 + IDENT@3526..3540 "manifestTomlEx" + ARGS_DESC@3540..3553 + L_PAREN@3540..3541 "(" + ARG@3541..3546 + EXPR_VAR@3541..3546 + NAME@3541..3546 + IDENT@3541..3546 "value" + COMMA@3546..3547 "," + WHITESPACE@3547..3548 " " + ARG@3548..3552 + EXPR_STRING@3548..3552 + STRING_SINGLE@3548..3552 "' '" + R_PAREN@3552..3553 ")" COMMA@3553..3554 "," WHITESPACE@3554..3558 "\n\n " - MEMBER_FIELD@3558..3613 - FIELD_METHOD@3558..3613 - FIELD_NAME_FIXED@3558..3576 - NAME@3558..3576 - IDENT@3558..3576 "escapeStringPython" - PARAMS_DESC@3576..3581 - L_PAREN@3576..3577 "(" - PARAM@3577..3580 - DESTRUCT_FULL@3577..3580 - NAME@3577..3580 - IDENT@3577..3580 "str" - R_PAREN@3580..3581 ")" - COLONCOLON@3581..3583 "::" - WHITESPACE@3583..3588 "\n " - EXPR_APPLY@3588..3613 - EXPR_INDEX@3588..3608 - EXPR_VAR@3588..3591 - NAME@3588..3591 - IDENT@3588..3591 "std" - DOT@3591..3592 "." - NAME@3592..3608 - IDENT@3592..3608 "escapeStringJson" - ARGS_DESC@3608..3613 - L_PAREN@3608..3609 "(" - ARG@3609..3612 - EXPR_VAR@3609..3612 - NAME@3609..3612 - IDENT@3609..3612 "str" - R_PAREN@3612..3613 ")" + MEMBER_FIELD_METHOD@3558..3613 + FIELD_NAME_FIXED@3558..3576 + NAME@3558..3576 + IDENT@3558..3576 "escapeStringPython" + PARAMS_DESC@3576..3581 + L_PAREN@3576..3577 "(" + PARAM@3577..3580 + DESTRUCT_FULL@3577..3580 + NAME@3577..3580 + IDENT@3577..3580 "str" + R_PAREN@3580..3581 ")" + COLONCOLON@3581..3583 "::" + WHITESPACE@3583..3588 "\n " + EXPR_APPLY@3588..3613 + EXPR_INDEX@3588..3608 + EXPR_VAR@3588..3591 + NAME@3588..3591 + IDENT@3588..3591 "std" + DOT@3591..3592 "." + NAME@3592..3608 + IDENT@3592..3608 "escapeStringJson" + ARGS_DESC@3608..3613 + L_PAREN@3608..3609 "(" + ARG@3609..3612 + EXPR_VAR@3609..3612 + NAME@3609..3612 + IDENT@3609..3612 "str" + R_PAREN@3612..3613 ")" COMMA@3613..3614 "," WHITESPACE@3614..3618 "\n\n " - MEMBER_FIELD@3618..3835 - FIELD_METHOD@3618..3835 - FIELD_NAME_FIXED@3618..3634 - NAME@3618..3634 - IDENT@3618..3634 "escapeStringBash" - PARAMS_DESC@3634..3640 - L_PAREN@3634..3635 "(" - PARAM@3635..3639 - DESTRUCT_FULL@3635..3639 - NAME@3635..3639 - IDENT@3635..3639 "str_" - R_PAREN@3639..3640 ")" - COLONCOLON@3640..3642 "::" - WHITESPACE@3642..3647 "\n " - EXPR_LOCAL@3647..3835 - LOCAL_KW@3647..3652 "local" - WHITESPACE@3652..3653 " " - BIND_DESTRUCT@3653..3677 - DESTRUCT_FULL@3653..3656 - NAME@3653..3656 - IDENT@3653..3656 "str" - WHITESPACE@3656..3657 " " - ASSIGN@3657..3658 "=" - WHITESPACE@3658..3659 " " - EXPR_APPLY@3659..3677 - EXPR_INDEX@3659..3671 - EXPR_VAR@3659..3662 - NAME@3659..3662 - IDENT@3659..3662 "std" - DOT@3662..3663 "." - NAME@3663..3671 - IDENT@3663..3671 "toString" - ARGS_DESC@3671..3677 - L_PAREN@3671..3672 "(" - ARG@3672..3676 - EXPR_VAR@3672..3676 - NAME@3672..3676 - IDENT@3672..3676 "str_" - R_PAREN@3676..3677 ")" - SEMI@3677..3678 ";" - WHITESPACE@3678..3683 "\n " - EXPR_LOCAL@3683..3835 - LOCAL_KW@3683..3688 "local" - WHITESPACE@3688..3689 " " - BIND_FUNCTION@3689..3764 - NAME@3689..3694 - IDENT@3689..3694 "trans" - PARAMS_DESC@3694..3698 - L_PAREN@3694..3695 "(" - PARAM@3695..3697 - DESTRUCT_FULL@3695..3697 - NAME@3695..3697 - IDENT@3695..3697 "ch" - R_PAREN@3697..3698 ")" - WHITESPACE@3698..3699 " " - ASSIGN@3699..3700 "=" - WHITESPACE@3700..3707 "\n " - EXPR_IF_THEN_ELSE@3707..3764 - IF_KW@3707..3709 "if" - WHITESPACE@3709..3710 " " - EXPR_BINARY@3710..3719 - LHS_EXPR@3710..3712 - EXPR_VAR@3710..3712 - NAME@3710..3712 - IDENT@3710..3712 "ch" - WHITESPACE@3712..3713 " " - EQ@3713..3715 "==" - WHITESPACE@3715..3716 " " - EXPR_STRING@3716..3719 - STRING_DOUBLE@3716..3719 "\"'\"" - WHITESPACE@3719..3720 " " - THEN_KW@3720..3724 "then" - WHITESPACE@3724..3733 "\n " - TRUE_EXPR@3733..3742 - EXPR_STRING@3733..3742 - STRING_DOUBLE@3733..3742 "\"'\\\"'\\\"'\"" - WHITESPACE@3742..3749 "\n " - ELSE_KW@3749..3753 "else" - WHITESPACE@3753..3762 "\n " - FALSE_EXPR@3762..3764 - EXPR_VAR@3762..3764 - NAME@3762..3764 - IDENT@3762..3764 "ch" - SEMI@3764..3765 ";" - WHITESPACE@3765..3770 "\n " - EXPR_BINARY@3770..3835 - LHS_EXPR@3770..3776 - EXPR_STRING@3770..3776 - STRING_DOUBLE@3770..3776 "\"'%s'\"" - WHITESPACE@3776..3777 " " - MODULO@3777..3778 "%" - WHITESPACE@3778..3779 " " - EXPR_APPLY@3779..3835 - EXPR_INDEX@3779..3787 - EXPR_VAR@3779..3782 - NAME@3779..3782 - IDENT@3779..3782 "std" - DOT@3782..3783 "." - NAME@3783..3787 - IDENT@3783..3787 "join" - ARGS_DESC@3787..3835 - L_PAREN@3787..3788 "(" - ARG@3788..3790 - EXPR_STRING@3788..3790 - STRING_SINGLE@3788..3790 "''" - COMMA@3790..3791 "," - WHITESPACE@3791..3792 " " - ARG@3792..3834 - EXPR_ARRAY_COMP@3792..3834 - L_BRACK@3792..3793 "[" - EXPR_APPLY@3793..3802 - EXPR_VAR@3793..3798 - NAME@3793..3798 - IDENT@3793..3798 "trans" - ARGS_DESC@3798..3802 - L_PAREN@3798..3799 "(" - ARG@3799..3801 - EXPR_VAR@3799..3801 - NAME@3799..3801 - IDENT@3799..3801 "ch" - R_PAREN@3801..3802 ")" - WHITESPACE@3802..3803 " " - FOR_SPEC@3803..3833 - FOR_KW@3803..3806 "for" - WHITESPACE@3806..3807 " " - NAME@3807..3809 - IDENT@3807..3809 "ch" - WHITESPACE@3809..3810 " " - IN_KW@3810..3812 "in" - WHITESPACE@3812..3813 " " - EXPR_APPLY@3813..3833 - EXPR_INDEX@3813..3828 - EXPR_VAR@3813..3816 - NAME@3813..3816 - IDENT@3813..3816 "std" - DOT@3816..3817 "." - NAME@3817..3828 - IDENT@3817..3828 "stringChars" - ARGS_DESC@3828..3833 - L_PAREN@3828..3829 "(" - ARG@3829..3832 - EXPR_VAR@3829..3832 - NAME@3829..3832 - IDENT@3829..3832 "str" - R_PAREN@3832..3833 ")" - R_BRACK@3833..3834 "]" - R_PAREN@3834..3835 ")" + MEMBER_FIELD_METHOD@3618..3835 + FIELD_NAME_FIXED@3618..3634 + NAME@3618..3634 + IDENT@3618..3634 "escapeStringBash" + PARAMS_DESC@3634..3640 + L_PAREN@3634..3635 "(" + PARAM@3635..3639 + DESTRUCT_FULL@3635..3639 + NAME@3635..3639 + IDENT@3635..3639 "str_" + R_PAREN@3639..3640 ")" + COLONCOLON@3640..3642 "::" + WHITESPACE@3642..3647 "\n " + EXPR_LOCAL@3647..3835 + LOCAL_KW@3647..3652 "local" + WHITESPACE@3652..3653 " " + BIND_DESTRUCT@3653..3677 + DESTRUCT_FULL@3653..3656 + NAME@3653..3656 + IDENT@3653..3656 "str" + WHITESPACE@3656..3657 " " + ASSIGN@3657..3658 "=" + WHITESPACE@3658..3659 " " + EXPR_APPLY@3659..3677 + EXPR_INDEX@3659..3671 + EXPR_VAR@3659..3662 + NAME@3659..3662 + IDENT@3659..3662 "std" + DOT@3662..3663 "." + NAME@3663..3671 + IDENT@3663..3671 "toString" + ARGS_DESC@3671..3677 + L_PAREN@3671..3672 "(" + ARG@3672..3676 + EXPR_VAR@3672..3676 + NAME@3672..3676 + IDENT@3672..3676 "str_" + R_PAREN@3676..3677 ")" + SEMI@3677..3678 ";" + WHITESPACE@3678..3683 "\n " + EXPR_LOCAL@3683..3835 + LOCAL_KW@3683..3688 "local" + WHITESPACE@3688..3689 " " + BIND_FUNCTION@3689..3764 + NAME@3689..3694 + IDENT@3689..3694 "trans" + PARAMS_DESC@3694..3698 + L_PAREN@3694..3695 "(" + PARAM@3695..3697 + DESTRUCT_FULL@3695..3697 + NAME@3695..3697 + IDENT@3695..3697 "ch" + R_PAREN@3697..3698 ")" + WHITESPACE@3698..3699 " " + ASSIGN@3699..3700 "=" + WHITESPACE@3700..3707 "\n " + EXPR_IF_THEN_ELSE@3707..3764 + IF_KW@3707..3709 "if" + WHITESPACE@3709..3710 " " + EXPR_BINARY@3710..3719 + LHS_EXPR@3710..3712 + EXPR_VAR@3710..3712 + NAME@3710..3712 + IDENT@3710..3712 "ch" + WHITESPACE@3712..3713 " " + EQ@3713..3715 "==" + WHITESPACE@3715..3716 " " + EXPR_STRING@3716..3719 + STRING_DOUBLE@3716..3719 "\"'\"" + WHITESPACE@3719..3720 " " + THEN_KW@3720..3724 "then" + WHITESPACE@3724..3733 "\n " + TRUE_EXPR@3733..3742 + EXPR_STRING@3733..3742 + STRING_DOUBLE@3733..3742 "\"'\\\"'\\\"'\"" + WHITESPACE@3742..3749 "\n " + ELSE_KW@3749..3753 "else" + WHITESPACE@3753..3762 "\n " + FALSE_EXPR@3762..3764 + EXPR_VAR@3762..3764 + NAME@3762..3764 + IDENT@3762..3764 "ch" + SEMI@3764..3765 ";" + WHITESPACE@3765..3770 "\n " + EXPR_BINARY@3770..3835 + LHS_EXPR@3770..3776 + EXPR_STRING@3770..3776 + STRING_DOUBLE@3770..3776 "\"'%s'\"" + WHITESPACE@3776..3777 " " + MODULO@3777..3778 "%" + WHITESPACE@3778..3779 " " + EXPR_APPLY@3779..3835 + EXPR_INDEX@3779..3787 + EXPR_VAR@3779..3782 + NAME@3779..3782 + IDENT@3779..3782 "std" + DOT@3782..3783 "." + NAME@3783..3787 + IDENT@3783..3787 "join" + ARGS_DESC@3787..3835 + L_PAREN@3787..3788 "(" + ARG@3788..3790 + EXPR_STRING@3788..3790 + STRING_SINGLE@3788..3790 "''" + COMMA@3790..3791 "," + WHITESPACE@3791..3792 " " + ARG@3792..3834 + EXPR_ARRAY_COMP@3792..3834 + L_BRACK@3792..3793 "[" + EXPR_APPLY@3793..3802 + EXPR_VAR@3793..3798 + NAME@3793..3798 + IDENT@3793..3798 "trans" + ARGS_DESC@3798..3802 + L_PAREN@3798..3799 "(" + ARG@3799..3801 + EXPR_VAR@3799..3801 + NAME@3799..3801 + IDENT@3799..3801 "ch" + R_PAREN@3801..3802 ")" + WHITESPACE@3802..3803 " " + FOR_SPEC@3803..3833 + FOR_KW@3803..3806 "for" + WHITESPACE@3806..3807 " " + NAME@3807..3809 + IDENT@3807..3809 "ch" + WHITESPACE@3809..3810 " " + IN_KW@3810..3812 "in" + WHITESPACE@3812..3813 " " + EXPR_APPLY@3813..3833 + EXPR_INDEX@3813..3828 + EXPR_VAR@3813..3816 + NAME@3813..3816 + IDENT@3813..3816 "std" + DOT@3816..3817 "." + NAME@3817..3828 + IDENT@3817..3828 "stringChars" + ARGS_DESC@3828..3833 + L_PAREN@3828..3829 "(" + ARG@3829..3832 + EXPR_VAR@3829..3832 + NAME@3829..3832 + IDENT@3829..3832 "str" + R_PAREN@3832..3833 ")" + R_BRACK@3833..3834 "]" + R_PAREN@3834..3835 ")" COMMA@3835..3836 "," WHITESPACE@3836..3840 "\n\n " - MEMBER_FIELD@3840..4054 - FIELD_METHOD@3840..4054 - FIELD_NAME_FIXED@3840..3859 - NAME@3840..3859 - IDENT@3840..3859 "escapeStringDollars" - PARAMS_DESC@3859..3865 - L_PAREN@3859..3860 "(" - PARAM@3860..3864 - DESTRUCT_FULL@3860..3864 - NAME@3860..3864 - IDENT@3860..3864 "str_" - R_PAREN@3864..3865 ")" - COLONCOLON@3865..3867 "::" - WHITESPACE@3867..3872 "\n " - EXPR_LOCAL@3872..4054 - LOCAL_KW@3872..3877 "local" - WHITESPACE@3877..3878 " " - BIND_DESTRUCT@3878..3902 - DESTRUCT_FULL@3878..3881 - NAME@3878..3881 - IDENT@3878..3881 "str" - WHITESPACE@3881..3882 " " - ASSIGN@3882..3883 "=" - WHITESPACE@3883..3884 " " - EXPR_APPLY@3884..3902 - EXPR_INDEX@3884..3896 - EXPR_VAR@3884..3887 - NAME@3884..3887 - IDENT@3884..3887 "std" - DOT@3887..3888 "." - NAME@3888..3896 - IDENT@3888..3896 "toString" - ARGS_DESC@3896..3902 - L_PAREN@3896..3897 "(" - ARG@3897..3901 - EXPR_VAR@3897..3901 - NAME@3897..3901 - IDENT@3897..3901 "str_" - R_PAREN@3901..3902 ")" - SEMI@3902..3903 ";" - WHITESPACE@3903..3908 "\n " - EXPR_LOCAL@3908..4054 - LOCAL_KW@3908..3913 "local" - WHITESPACE@3913..3914 " " - BIND_FUNCTION@3914..3984 - NAME@3914..3919 - IDENT@3914..3919 "trans" - PARAMS_DESC@3919..3923 - L_PAREN@3919..3920 "(" - PARAM@3920..3922 - DESTRUCT_FULL@3920..3922 - NAME@3920..3922 - IDENT@3920..3922 "ch" - R_PAREN@3922..3923 ")" - WHITESPACE@3923..3924 " " - ASSIGN@3924..3925 "=" - WHITESPACE@3925..3932 "\n " - EXPR_IF_THEN_ELSE@3932..3984 - IF_KW@3932..3934 "if" - WHITESPACE@3934..3935 " " - EXPR_BINARY@3935..3944 - LHS_EXPR@3935..3937 - EXPR_VAR@3935..3937 - NAME@3935..3937 - IDENT@3935..3937 "ch" - WHITESPACE@3937..3938 " " - EQ@3938..3940 "==" - WHITESPACE@3940..3941 " " - EXPR_STRING@3941..3944 - STRING_SINGLE@3941..3944 "'$'" - WHITESPACE@3944..3945 " " - THEN_KW@3945..3949 "then" - WHITESPACE@3949..3958 "\n " - TRUE_EXPR@3958..3962 - EXPR_STRING@3958..3962 - STRING_SINGLE@3958..3962 "'$$'" - WHITESPACE@3962..3969 "\n " - ELSE_KW@3969..3973 "else" - WHITESPACE@3973..3982 "\n " - FALSE_EXPR@3982..3984 - EXPR_VAR@3982..3984 - NAME@3982..3984 - IDENT@3982..3984 "ch" - SEMI@3984..3985 ";" - WHITESPACE@3985..3990 "\n " - EXPR_APPLY@3990..4054 - EXPR_INDEX@3990..3999 - EXPR_VAR@3990..3993 - NAME@3990..3993 - IDENT@3990..3993 "std" - DOT@3993..3994 "." - NAME@3994..3999 - IDENT@3994..3999 "foldl" - ARGS_DESC@3999..4054 - L_PAREN@3999..4000 "(" - ARG@4000..4027 - EXPR_FUNCTION@4000..4027 - FUNCTION_KW@4000..4008 "function" - PARAMS_DESC@4008..4014 - L_PAREN@4008..4009 "(" - PARAM@4009..4010 - DESTRUCT_FULL@4009..4010 - NAME@4009..4010 - IDENT@4009..4010 "a" - COMMA@4010..4011 "," - WHITESPACE@4011..4012 " " - PARAM@4012..4013 - DESTRUCT_FULL@4012..4013 - NAME@4012..4013 - IDENT@4012..4013 "b" - R_PAREN@4013..4014 ")" - WHITESPACE@4014..4015 " " - EXPR_BINARY@4015..4027 - LHS_EXPR@4015..4016 - EXPR_VAR@4015..4016 - NAME@4015..4016 - IDENT@4015..4016 "a" - WHITESPACE@4016..4017 " " - PLUS@4017..4018 "+" - WHITESPACE@4018..4019 " " - EXPR_APPLY@4019..4027 - EXPR_VAR@4019..4024 - NAME@4019..4024 - IDENT@4019..4024 "trans" - ARGS_DESC@4024..4027 - L_PAREN@4024..4025 "(" - ARG@4025..4026 - EXPR_VAR@4025..4026 - NAME@4025..4026 - IDENT@4025..4026 "b" - R_PAREN@4026..4027 ")" - COMMA@4027..4028 "," - WHITESPACE@4028..4029 " " - ARG@4029..4049 - EXPR_APPLY@4029..4049 - EXPR_INDEX@4029..4044 - EXPR_VAR@4029..4032 - NAME@4029..4032 - IDENT@4029..4032 "std" - DOT@4032..4033 "." - NAME@4033..4044 - IDENT@4033..4044 "stringChars" - ARGS_DESC@4044..4049 - L_PAREN@4044..4045 "(" - ARG@4045..4048 - EXPR_VAR@4045..4048 - NAME@4045..4048 - IDENT@4045..4048 "str" - R_PAREN@4048..4049 ")" - COMMA@4049..4050 "," - WHITESPACE@4050..4051 " " - ARG@4051..4053 - EXPR_STRING@4051..4053 - STRING_SINGLE@4051..4053 "''" - R_PAREN@4053..4054 ")" + MEMBER_FIELD_METHOD@3840..4054 + FIELD_NAME_FIXED@3840..3859 + NAME@3840..3859 + IDENT@3840..3859 "escapeStringDollars" + PARAMS_DESC@3859..3865 + L_PAREN@3859..3860 "(" + PARAM@3860..3864 + DESTRUCT_FULL@3860..3864 + NAME@3860..3864 + IDENT@3860..3864 "str_" + R_PAREN@3864..3865 ")" + COLONCOLON@3865..3867 "::" + WHITESPACE@3867..3872 "\n " + EXPR_LOCAL@3872..4054 + LOCAL_KW@3872..3877 "local" + WHITESPACE@3877..3878 " " + BIND_DESTRUCT@3878..3902 + DESTRUCT_FULL@3878..3881 + NAME@3878..3881 + IDENT@3878..3881 "str" + WHITESPACE@3881..3882 " " + ASSIGN@3882..3883 "=" + WHITESPACE@3883..3884 " " + EXPR_APPLY@3884..3902 + EXPR_INDEX@3884..3896 + EXPR_VAR@3884..3887 + NAME@3884..3887 + IDENT@3884..3887 "std" + DOT@3887..3888 "." + NAME@3888..3896 + IDENT@3888..3896 "toString" + ARGS_DESC@3896..3902 + L_PAREN@3896..3897 "(" + ARG@3897..3901 + EXPR_VAR@3897..3901 + NAME@3897..3901 + IDENT@3897..3901 "str_" + R_PAREN@3901..3902 ")" + SEMI@3902..3903 ";" + WHITESPACE@3903..3908 "\n " + EXPR_LOCAL@3908..4054 + LOCAL_KW@3908..3913 "local" + WHITESPACE@3913..3914 " " + BIND_FUNCTION@3914..3984 + NAME@3914..3919 + IDENT@3914..3919 "trans" + PARAMS_DESC@3919..3923 + L_PAREN@3919..3920 "(" + PARAM@3920..3922 + DESTRUCT_FULL@3920..3922 + NAME@3920..3922 + IDENT@3920..3922 "ch" + R_PAREN@3922..3923 ")" + WHITESPACE@3923..3924 " " + ASSIGN@3924..3925 "=" + WHITESPACE@3925..3932 "\n " + EXPR_IF_THEN_ELSE@3932..3984 + IF_KW@3932..3934 "if" + WHITESPACE@3934..3935 " " + EXPR_BINARY@3935..3944 + LHS_EXPR@3935..3937 + EXPR_VAR@3935..3937 + NAME@3935..3937 + IDENT@3935..3937 "ch" + WHITESPACE@3937..3938 " " + EQ@3938..3940 "==" + WHITESPACE@3940..3941 " " + EXPR_STRING@3941..3944 + STRING_SINGLE@3941..3944 "'$'" + WHITESPACE@3944..3945 " " + THEN_KW@3945..3949 "then" + WHITESPACE@3949..3958 "\n " + TRUE_EXPR@3958..3962 + EXPR_STRING@3958..3962 + STRING_SINGLE@3958..3962 "'$$'" + WHITESPACE@3962..3969 "\n " + ELSE_KW@3969..3973 "else" + WHITESPACE@3973..3982 "\n " + FALSE_EXPR@3982..3984 + EXPR_VAR@3982..3984 + NAME@3982..3984 + IDENT@3982..3984 "ch" + SEMI@3984..3985 ";" + WHITESPACE@3985..3990 "\n " + EXPR_APPLY@3990..4054 + EXPR_INDEX@3990..3999 + EXPR_VAR@3990..3993 + NAME@3990..3993 + IDENT@3990..3993 "std" + DOT@3993..3994 "." + NAME@3994..3999 + IDENT@3994..3999 "foldl" + ARGS_DESC@3999..4054 + L_PAREN@3999..4000 "(" + ARG@4000..4027 + EXPR_FUNCTION@4000..4027 + FUNCTION_KW@4000..4008 "function" + PARAMS_DESC@4008..4014 + L_PAREN@4008..4009 "(" + PARAM@4009..4010 + DESTRUCT_FULL@4009..4010 + NAME@4009..4010 + IDENT@4009..4010 "a" + COMMA@4010..4011 "," + WHITESPACE@4011..4012 " " + PARAM@4012..4013 + DESTRUCT_FULL@4012..4013 + NAME@4012..4013 + IDENT@4012..4013 "b" + R_PAREN@4013..4014 ")" + WHITESPACE@4014..4015 " " + EXPR_BINARY@4015..4027 + LHS_EXPR@4015..4016 + EXPR_VAR@4015..4016 + NAME@4015..4016 + IDENT@4015..4016 "a" + WHITESPACE@4016..4017 " " + PLUS@4017..4018 "+" + WHITESPACE@4018..4019 " " + EXPR_APPLY@4019..4027 + EXPR_VAR@4019..4024 + NAME@4019..4024 + IDENT@4019..4024 "trans" + ARGS_DESC@4024..4027 + L_PAREN@4024..4025 "(" + ARG@4025..4026 + EXPR_VAR@4025..4026 + NAME@4025..4026 + IDENT@4025..4026 "b" + R_PAREN@4026..4027 ")" + COMMA@4027..4028 "," + WHITESPACE@4028..4029 " " + ARG@4029..4049 + EXPR_APPLY@4029..4049 + EXPR_INDEX@4029..4044 + EXPR_VAR@4029..4032 + NAME@4029..4032 + IDENT@4029..4032 "std" + DOT@4032..4033 "." + NAME@4033..4044 + IDENT@4033..4044 "stringChars" + ARGS_DESC@4044..4049 + L_PAREN@4044..4045 "(" + ARG@4045..4048 + EXPR_VAR@4045..4048 + NAME@4045..4048 + IDENT@4045..4048 "str" + R_PAREN@4048..4049 ")" + COMMA@4049..4050 "," + WHITESPACE@4050..4051 " " + ARG@4051..4053 + EXPR_STRING@4051..4053 + STRING_SINGLE@4051..4053 "''" + R_PAREN@4053..4054 ")" COMMA@4054..4055 "," WHITESPACE@4055..4059 "\n\n " MEMBER_BIND_STMT@4059..4174 @@ -2628,4667 +2606,4636 @@ OBJ_BODY_MEMBER_LIST@4079..4174 L_BRACE@4079..4080 "{" WHITESPACE@4080..4085 "\n " - MEMBER_FIELD@4085..4096 - FIELD_NORMAL@4085..4096 - FIELD_NAME_FIXED@4085..4088 - STRING_SINGLE@4085..4088 "'<'" - COLON@4088..4089 ":" - WHITESPACE@4089..4090 " " - EXPR_STRING@4090..4096 - STRING_SINGLE@4090..4096 "'<'" + MEMBER_FIELD_NORMAL@4085..4096 + FIELD_NAME_FIXED@4085..4088 + STRING_SINGLE@4085..4088 "'<'" + COLON@4088..4089 ":" + WHITESPACE@4089..4090 " " + EXPR_STRING@4090..4096 + STRING_SINGLE@4090..4096 "'<'" COMMA@4096..4097 "," WHITESPACE@4097..4102 "\n " - MEMBER_FIELD@4102..4113 - FIELD_NORMAL@4102..4113 - FIELD_NAME_FIXED@4102..4105 - STRING_SINGLE@4102..4105 "'>'" - COLON@4105..4106 ":" - WHITESPACE@4106..4107 " " - EXPR_STRING@4107..4113 - STRING_SINGLE@4107..4113 "'>'" + MEMBER_FIELD_NORMAL@4102..4113 + FIELD_NAME_FIXED@4102..4105 + STRING_SINGLE@4102..4105 "'>'" + COLON@4105..4106 ":" + WHITESPACE@4106..4107 " " + EXPR_STRING@4107..4113 + STRING_SINGLE@4107..4113 "'>'" COMMA@4113..4114 "," WHITESPACE@4114..4119 "\n " - MEMBER_FIELD@4119..4131 - FIELD_NORMAL@4119..4131 - FIELD_NAME_FIXED@4119..4122 - STRING_SINGLE@4119..4122 "'&'" - COLON@4122..4123 ":" - WHITESPACE@4123..4124 " " - EXPR_STRING@4124..4131 - STRING_SINGLE@4124..4131 "'&'" + MEMBER_FIELD_NORMAL@4119..4131 + FIELD_NAME_FIXED@4119..4122 + STRING_SINGLE@4119..4122 "'&'" + COLON@4122..4123 ":" + WHITESPACE@4123..4124 " " + EXPR_STRING@4124..4131 + STRING_SINGLE@4124..4131 "'&'" COMMA@4131..4132 "," WHITESPACE@4132..4137 "\n " - MEMBER_FIELD@4137..4150 - FIELD_NORMAL@4137..4150 - FIELD_NAME_FIXED@4137..4140 - STRING_SINGLE@4137..4140 "'\"'" - COLON@4140..4141 ":" - WHITESPACE@4141..4142 " " - EXPR_STRING@4142..4150 - STRING_SINGLE@4142..4150 "'"'" + MEMBER_FIELD_NORMAL@4137..4150 + FIELD_NAME_FIXED@4137..4140 + STRING_SINGLE@4137..4140 "'\"'" + COLON@4140..4141 ":" + WHITESPACE@4141..4142 " " + EXPR_STRING@4142..4150 + STRING_SINGLE@4142..4150 "'"'" COMMA@4150..4151 "," WHITESPACE@4151..4156 "\n " - MEMBER_FIELD@4156..4169 - FIELD_NORMAL@4156..4169 - FIELD_NAME_FIXED@4156..4159 - STRING_DOUBLE@4156..4159 "\"'\"" - COLON@4159..4160 ":" - WHITESPACE@4160..4161 " " - EXPR_STRING@4161..4169 - STRING_SINGLE@4161..4169 "'''" + MEMBER_FIELD_NORMAL@4156..4169 + FIELD_NAME_FIXED@4156..4159 + STRING_DOUBLE@4156..4159 "\"'\"" + COLON@4159..4160 ":" + WHITESPACE@4160..4161 " " + EXPR_STRING@4161..4169 + STRING_SINGLE@4161..4169 "'''" COMMA@4169..4170 "," WHITESPACE@4170..4173 "\n " R_BRACE@4173..4174 "}" COMMA@4174..4175 "," WHITESPACE@4175..4179 "\n\n " - MEMBER_FIELD@4179..4318 - FIELD_METHOD@4179..4318 - FIELD_NAME_FIXED@4179..4194 - NAME@4179..4194 - IDENT@4179..4194 "escapeStringXML" - PARAMS_DESC@4194..4200 - L_PAREN@4194..4195 "(" - PARAM@4195..4199 - DESTRUCT_FULL@4195..4199 - NAME@4195..4199 - IDENT@4195..4199 "str_" - R_PAREN@4199..4200 ")" - COLONCOLON@4200..4202 "::" - WHITESPACE@4202..4207 "\n " - EXPR_LOCAL@4207..4318 - LOCAL_KW@4207..4212 "local" - WHITESPACE@4212..4213 " " - BIND_DESTRUCT@4213..4237 - DESTRUCT_FULL@4213..4216 - NAME@4213..4216 - IDENT@4213..4216 "str" - WHITESPACE@4216..4217 " " - ASSIGN@4217..4218 "=" - WHITESPACE@4218..4219 " " - EXPR_APPLY@4219..4237 - EXPR_INDEX@4219..4231 - EXPR_VAR@4219..4222 - NAME@4219..4222 - IDENT@4219..4222 "std" - DOT@4222..4223 "." - NAME@4223..4231 - IDENT@4223..4231 "toString" - ARGS_DESC@4231..4237 - L_PAREN@4231..4232 "(" - ARG@4232..4236 - EXPR_VAR@4232..4236 - NAME@4232..4236 - IDENT@4232..4236 "str_" - R_PAREN@4236..4237 ")" - SEMI@4237..4238 ";" - WHITESPACE@4238..4243 "\n " - EXPR_APPLY@4243..4318 - EXPR_INDEX@4243..4251 - EXPR_VAR@4243..4246 - NAME@4243..4246 - IDENT@4243..4246 "std" - DOT@4246..4247 "." - NAME@4247..4251 - IDENT@4247..4251 "join" - ARGS_DESC@4251..4318 - L_PAREN@4251..4252 "(" - ARG@4252..4254 - EXPR_STRING@4252..4254 - STRING_SINGLE@4252..4254 "''" - COMMA@4254..4255 "," - WHITESPACE@4255..4256 " " - ARG@4256..4317 - EXPR_ARRAY_COMP@4256..4317 - L_BRACK@4256..4257 "[" - EXPR_APPLY@4257..4285 - EXPR_INDEX@4257..4264 - EXPR_VAR@4257..4260 - NAME@4257..4260 - IDENT@4257..4260 "std" - DOT@4260..4261 "." - NAME@4261..4264 - IDENT@4261..4264 "get" - ARGS_DESC@4264..4285 - L_PAREN@4264..4265 "(" - ARG@4265..4276 - EXPR_VAR@4265..4276 - NAME@4265..4276 - IDENT@4265..4276 "xml_escapes" - COMMA@4276..4277 "," - WHITESPACE@4277..4278 " " - ARG@4278..4280 - EXPR_VAR@4278..4280 - NAME@4278..4280 - IDENT@4278..4280 "ch" - COMMA@4280..4281 "," - WHITESPACE@4281..4282 " " - ARG@4282..4284 - EXPR_VAR@4282..4284 - NAME@4282..4284 - IDENT@4282..4284 "ch" - R_PAREN@4284..4285 ")" - WHITESPACE@4285..4286 " " - FOR_SPEC@4286..4316 - FOR_KW@4286..4289 "for" - WHITESPACE@4289..4290 " " - NAME@4290..4292 - IDENT@4290..4292 "ch" - WHITESPACE@4292..4293 " " - IN_KW@4293..4295 "in" - WHITESPACE@4295..4296 " " - EXPR_APPLY@4296..4316 - EXPR_INDEX@4296..4311 - EXPR_VAR@4296..4299 - NAME@4296..4299 - IDENT@4296..4299 "std" - DOT@4299..4300 "." - NAME@4300..4311 - IDENT@4300..4311 "stringChars" - ARGS_DESC@4311..4316 - L_PAREN@4311..4312 "(" - ARG@4312..4315 - EXPR_VAR@4312..4315 - NAME@4312..4315 - IDENT@4312..4315 "str" - R_PAREN@4315..4316 ")" - R_BRACK@4316..4317 "]" - R_PAREN@4317..4318 ")" + MEMBER_FIELD_METHOD@4179..4318 + FIELD_NAME_FIXED@4179..4194 + NAME@4179..4194 + IDENT@4179..4194 "escapeStringXML" + PARAMS_DESC@4194..4200 + L_PAREN@4194..4195 "(" + PARAM@4195..4199 + DESTRUCT_FULL@4195..4199 + NAME@4195..4199 + IDENT@4195..4199 "str_" + R_PAREN@4199..4200 ")" + COLONCOLON@4200..4202 "::" + WHITESPACE@4202..4207 "\n " + EXPR_LOCAL@4207..4318 + LOCAL_KW@4207..4212 "local" + WHITESPACE@4212..4213 " " + BIND_DESTRUCT@4213..4237 + DESTRUCT_FULL@4213..4216 + NAME@4213..4216 + IDENT@4213..4216 "str" + WHITESPACE@4216..4217 " " + ASSIGN@4217..4218 "=" + WHITESPACE@4218..4219 " " + EXPR_APPLY@4219..4237 + EXPR_INDEX@4219..4231 + EXPR_VAR@4219..4222 + NAME@4219..4222 + IDENT@4219..4222 "std" + DOT@4222..4223 "." + NAME@4223..4231 + IDENT@4223..4231 "toString" + ARGS_DESC@4231..4237 + L_PAREN@4231..4232 "(" + ARG@4232..4236 + EXPR_VAR@4232..4236 + NAME@4232..4236 + IDENT@4232..4236 "str_" + R_PAREN@4236..4237 ")" + SEMI@4237..4238 ";" + WHITESPACE@4238..4243 "\n " + EXPR_APPLY@4243..4318 + EXPR_INDEX@4243..4251 + EXPR_VAR@4243..4246 + NAME@4243..4246 + IDENT@4243..4246 "std" + DOT@4246..4247 "." + NAME@4247..4251 + IDENT@4247..4251 "join" + ARGS_DESC@4251..4318 + L_PAREN@4251..4252 "(" + ARG@4252..4254 + EXPR_STRING@4252..4254 + STRING_SINGLE@4252..4254 "''" + COMMA@4254..4255 "," + WHITESPACE@4255..4256 " " + ARG@4256..4317 + EXPR_ARRAY_COMP@4256..4317 + L_BRACK@4256..4257 "[" + EXPR_APPLY@4257..4285 + EXPR_INDEX@4257..4264 + EXPR_VAR@4257..4260 + NAME@4257..4260 + IDENT@4257..4260 "std" + DOT@4260..4261 "." + NAME@4261..4264 + IDENT@4261..4264 "get" + ARGS_DESC@4264..4285 + L_PAREN@4264..4265 "(" + ARG@4265..4276 + EXPR_VAR@4265..4276 + NAME@4265..4276 + IDENT@4265..4276 "xml_escapes" + COMMA@4276..4277 "," + WHITESPACE@4277..4278 " " + ARG@4278..4280 + EXPR_VAR@4278..4280 + NAME@4278..4280 + IDENT@4278..4280 "ch" + COMMA@4280..4281 "," + WHITESPACE@4281..4282 " " + ARG@4282..4284 + EXPR_VAR@4282..4284 + NAME@4282..4284 + IDENT@4282..4284 "ch" + R_PAREN@4284..4285 ")" + WHITESPACE@4285..4286 " " + FOR_SPEC@4286..4316 + FOR_KW@4286..4289 "for" + WHITESPACE@4289..4290 " " + NAME@4290..4292 + IDENT@4290..4292 "ch" + WHITESPACE@4292..4293 " " + IN_KW@4293..4295 "in" + WHITESPACE@4295..4296 " " + EXPR_APPLY@4296..4316 + EXPR_INDEX@4296..4311 + EXPR_VAR@4296..4299 + NAME@4296..4299 + IDENT@4296..4299 "std" + DOT@4299..4300 "." + NAME@4300..4311 + IDENT@4300..4311 "stringChars" + ARGS_DESC@4311..4316 + L_PAREN@4311..4312 "(" + ARG@4312..4315 + EXPR_VAR@4312..4315 + NAME@4312..4315 + IDENT@4312..4315 "str" + R_PAREN@4315..4316 ")" + R_BRACK@4316..4317 "]" + R_PAREN@4317..4318 ")" COMMA@4318..4319 "," WHITESPACE@4319..4323 "\n\n " - MEMBER_FIELD@4323..4389 - FIELD_METHOD@4323..4389 - FIELD_NAME_FIXED@4323..4335 - NAME@4323..4335 - IDENT@4323..4335 "manifestJson" - PARAMS_DESC@4335..4342 - L_PAREN@4335..4336 "(" - PARAM@4336..4341 - DESTRUCT_FULL@4336..4341 - NAME@4336..4341 - IDENT@4336..4341 "value" - R_PAREN@4341..4342 ")" - COLONCOLON@4342..4344 "::" - WHITESPACE@4344..4345 " " - EXPR_APPLY@4345..4389 - EXPR_INDEX@4345..4363 - EXPR_VAR@4345..4348 - NAME@4345..4348 - IDENT@4345..4348 "std" - DOT@4348..4349 "." - NAME@4349..4363 - IDENT@4349..4363 "manifestJsonEx" - ARGS_DESC@4363..4389 - L_PAREN@4363..4364 "(" - ARG@4364..4369 - EXPR_VAR@4364..4369 - NAME@4364..4369 - IDENT@4364..4369 "value" - COMMA@4369..4370 "," - WHITESPACE@4370..4371 " " - ARG@4371..4377 - EXPR_STRING@4371..4377 - STRING_SINGLE@4371..4377 "' '" - R_PAREN@4377..4378 ")" - WHITESPACE@4378..4379 " " - TAILSTRICT_KW@4379..4389 "tailstrict" + MEMBER_FIELD_METHOD@4323..4389 + FIELD_NAME_FIXED@4323..4335 + NAME@4323..4335 + IDENT@4323..4335 "manifestJson" + PARAMS_DESC@4335..4342 + L_PAREN@4335..4336 "(" + PARAM@4336..4341 + DESTRUCT_FULL@4336..4341 + NAME@4336..4341 + IDENT@4336..4341 "value" + R_PAREN@4341..4342 ")" + COLONCOLON@4342..4344 "::" + WHITESPACE@4344..4345 " " + EXPR_APPLY@4345..4389 + EXPR_INDEX@4345..4363 + EXPR_VAR@4345..4348 + NAME@4345..4348 + IDENT@4345..4348 "std" + DOT@4348..4349 "." + NAME@4349..4363 + IDENT@4349..4363 "manifestJsonEx" + ARGS_DESC@4363..4389 + L_PAREN@4363..4364 "(" + ARG@4364..4369 + EXPR_VAR@4364..4369 + NAME@4364..4369 + IDENT@4364..4369 "value" + COMMA@4369..4370 "," + WHITESPACE@4370..4371 " " + ARG@4371..4377 + EXPR_STRING@4371..4377 + STRING_SINGLE@4371..4377 "' '" + R_PAREN@4377..4378 ")" + WHITESPACE@4378..4379 " " + TAILSTRICT_KW@4379..4389 "tailstrict" COMMA@4389..4390 "," WHITESPACE@4390..4394 "\n\n " - MEMBER_FIELD@4394..4462 - FIELD_METHOD@4394..4462 - FIELD_NAME_FIXED@4394..4414 - NAME@4394..4414 - IDENT@4394..4414 "manifestJsonMinified" - PARAMS_DESC@4414..4421 - L_PAREN@4414..4415 "(" - PARAM@4415..4420 - DESTRUCT_FULL@4415..4420 - NAME@4415..4420 - IDENT@4415..4420 "value" - R_PAREN@4420..4421 ")" - COLONCOLON@4421..4423 "::" - WHITESPACE@4423..4424 " " - EXPR_APPLY@4424..4462 - EXPR_INDEX@4424..4442 - EXPR_VAR@4424..4427 - NAME@4424..4427 - IDENT@4424..4427 "std" - DOT@4427..4428 "." - NAME@4428..4442 - IDENT@4428..4442 "manifestJsonEx" - ARGS_DESC@4442..4462 - L_PAREN@4442..4443 "(" - ARG@4443..4448 - EXPR_VAR@4443..4448 - NAME@4443..4448 - IDENT@4443..4448 "value" - COMMA@4448..4449 "," - WHITESPACE@4449..4450 " " - ARG@4450..4452 - EXPR_STRING@4450..4452 - STRING_SINGLE@4450..4452 "''" - COMMA@4452..4453 "," - WHITESPACE@4453..4454 " " - ARG@4454..4456 - EXPR_STRING@4454..4456 - STRING_SINGLE@4454..4456 "''" - COMMA@4456..4457 "," - WHITESPACE@4457..4458 " " - ARG@4458..4461 - EXPR_STRING@4458..4461 - STRING_SINGLE@4458..4461 "':'" - R_PAREN@4461..4462 ")" + MEMBER_FIELD_METHOD@4394..4462 + FIELD_NAME_FIXED@4394..4414 + NAME@4394..4414 + IDENT@4394..4414 "manifestJsonMinified" + PARAMS_DESC@4414..4421 + L_PAREN@4414..4415 "(" + PARAM@4415..4420 + DESTRUCT_FULL@4415..4420 + NAME@4415..4420 + IDENT@4415..4420 "value" + R_PAREN@4420..4421 ")" + COLONCOLON@4421..4423 "::" + WHITESPACE@4423..4424 " " + EXPR_APPLY@4424..4462 + EXPR_INDEX@4424..4442 + EXPR_VAR@4424..4427 + NAME@4424..4427 + IDENT@4424..4427 "std" + DOT@4427..4428 "." + NAME@4428..4442 + IDENT@4428..4442 "manifestJsonEx" + ARGS_DESC@4442..4462 + L_PAREN@4442..4443 "(" + ARG@4443..4448 + EXPR_VAR@4443..4448 + NAME@4443..4448 + IDENT@4443..4448 "value" + COMMA@4448..4449 "," + WHITESPACE@4449..4450 " " + ARG@4450..4452 + EXPR_STRING@4450..4452 + STRING_SINGLE@4450..4452 "''" + COMMA@4452..4453 "," + WHITESPACE@4453..4454 " " + ARG@4454..4456 + EXPR_STRING@4454..4456 + STRING_SINGLE@4454..4456 "''" + COMMA@4456..4457 "," + WHITESPACE@4457..4458 " " + ARG@4458..4461 + EXPR_STRING@4458..4461 + STRING_SINGLE@4458..4461 "':'" + R_PAREN@4461..4462 ")" COMMA@4462..4463 "," WHITESPACE@4463..4467 "\n\n " - MEMBER_FIELD@4467..4852 - FIELD_METHOD@4467..4852 - FIELD_NAME_FIXED@4467..4485 - NAME@4467..4485 - IDENT@4467..4485 "manifestYamlStream" - PARAMS_DESC@4485..4560 - L_PAREN@4485..4486 "(" - PARAM@4486..4491 - DESTRUCT_FULL@4486..4491 - NAME@4486..4491 - IDENT@4486..4491 "value" - COMMA@4491..4492 "," - WHITESPACE@4492..4493 " " - PARAM@4493..4521 - DESTRUCT_FULL@4493..4515 - NAME@4493..4515 - IDENT@4493..4515 "indent_array_in_object" - ASSIGN@4515..4516 "=" - EXPR_LITERAL@4516..4521 - FALSE_KW@4516..4521 "false" - COMMA@4521..4522 "," - WHITESPACE@4522..4523 " " - PARAM@4523..4542 - DESTRUCT_FULL@4523..4537 - NAME@4523..4537 - IDENT@4523..4537 "c_document_end" - ASSIGN@4537..4538 "=" - EXPR_LITERAL@4538..4542 - TRUE_KW@4538..4542 "true" - COMMA@4542..4543 "," - WHITESPACE@4543..4544 " " - PARAM@4544..4559 - DESTRUCT_FULL@4544..4554 - NAME@4544..4554 - IDENT@4544..4554 "quote_keys" - ASSIGN@4554..4555 "=" - EXPR_LITERAL@4555..4559 - TRUE_KW@4555..4559 "true" - R_PAREN@4559..4560 ")" - COLONCOLON@4560..4562 "::" - WHITESPACE@4562..4567 "\n " - EXPR_IF_THEN_ELSE@4567..4852 - IF_KW@4567..4569 "if" - WHITESPACE@4569..4570 " " - EXPR_UNARY@4570..4589 - NOT@4570..4571 "!" - EXPR_APPLY@4571..4589 - EXPR_INDEX@4571..4582 - EXPR_VAR@4571..4574 - NAME@4571..4574 - IDENT@4571..4574 "std" - DOT@4574..4575 "." - NAME@4575..4582 - IDENT@4575..4582 "isArray" - ARGS_DESC@4582..4589 - L_PAREN@4582..4583 "(" - ARG@4583..4588 - EXPR_VAR@4583..4588 - NAME@4583..4588 - IDENT@4583..4588 "value" - R_PAREN@4588..4589 ")" - WHITESPACE@4589..4590 " " - THEN_KW@4590..4594 "then" - WHITESPACE@4594..4601 "\n " - TRUE_EXPR@4601..4669 - EXPR_ERROR@4601..4669 - ERROR_KW@4601..4606 "error" - WHITESPACE@4606..4607 " " - EXPR_BINARY@4607..4669 - LHS_EXPR@4607..4651 - EXPR_STRING@4607..4651 - STRING_SINGLE@4607..4651 "'manifestYamlStream o ..." - WHITESPACE@4651..4652 " " - PLUS@4652..4653 "+" - WHITESPACE@4653..4654 " " - EXPR_APPLY@4654..4669 - EXPR_INDEX@4654..4662 - EXPR_VAR@4654..4657 - NAME@4654..4657 - IDENT@4654..4657 "std" - DOT@4657..4658 "." - NAME@4658..4662 - IDENT@4658..4662 "type" - ARGS_DESC@4662..4669 - L_PAREN@4662..4663 "(" - ARG@4663..4668 - EXPR_VAR@4663..4668 - NAME@4663..4668 - IDENT@4663..4668 "value" - R_PAREN@4668..4669 ")" - WHITESPACE@4669..4674 "\n " - ELSE_KW@4674..4678 "else" - WHITESPACE@4678..4685 "\n " - FALSE_EXPR@4685..4852 - EXPR_BINARY@4685..4852 - LHS_EXPR@4685..4807 - EXPR_BINARY@4685..4807 - LHS_EXPR@4685..4692 - EXPR_STRING@4685..4692 - STRING_SINGLE@4685..4692 "'---\\n'" - WHITESPACE@4692..4693 " " - PLUS@4693..4694 "+" - WHITESPACE@4694..4695 " " - EXPR_APPLY@4695..4807 - EXPR_INDEX@4695..4703 - EXPR_VAR@4695..4698 - NAME@4695..4698 - IDENT@4695..4698 "std" - DOT@4698..4699 "." - NAME@4699..4703 - IDENT@4699..4703 "join" - ARGS_DESC@4703..4807 - L_PAREN@4703..4704 "(" - WHITESPACE@4704..4713 "\n " - ARG@4713..4722 - EXPR_STRING@4713..4722 - STRING_SINGLE@4713..4722 "'\\n---\\n'" - COMMA@4722..4723 "," - WHITESPACE@4723..4724 " " - ARG@4724..4799 - EXPR_ARRAY_COMP@4724..4799 - L_BRACK@4724..4725 "[" - EXPR_APPLY@4725..4783 - EXPR_INDEX@4725..4744 - EXPR_VAR@4725..4728 - NAME@4725..4728 - IDENT@4725..4728 "std" - DOT@4728..4729 "." - NAME@4729..4744 - IDENT@4729..4744 "manifestYamlDoc" - ARGS_DESC@4744..4783 - L_PAREN@4744..4745 "(" - ARG@4745..4746 - EXPR_VAR@4745..4746 - NAME@4745..4746 - IDENT@4745..4746 "e" - COMMA@4746..4747 "," - WHITESPACE@4747..4748 " " - ARG@4748..4770 - EXPR_VAR@4748..4770 - NAME@4748..4770 - IDENT@4748..4770 "indent_array_in_object" - COMMA@4770..4771 "," - WHITESPACE@4771..4772 " " - ARG@4772..4782 - EXPR_VAR@4772..4782 - NAME@4772..4782 - IDENT@4772..4782 "quote_keys" - R_PAREN@4782..4783 ")" - WHITESPACE@4783..4784 " " - FOR_SPEC@4784..4798 - FOR_KW@4784..4787 "for" - WHITESPACE@4787..4788 " " - NAME@4788..4789 - IDENT@4788..4789 "e" - WHITESPACE@4789..4790 " " - IN_KW@4790..4792 "in" - WHITESPACE@4792..4793 " " - EXPR_VAR@4793..4798 - NAME@4793..4798 - IDENT@4793..4798 "value" - R_BRACK@4798..4799 "]" - WHITESPACE@4799..4806 "\n " - R_PAREN@4806..4807 ")" - WHITESPACE@4807..4808 " " - PLUS@4808..4809 "+" - WHITESPACE@4809..4810 " " - EXPR_IF_THEN_ELSE@4810..4852 - IF_KW@4810..4812 "if" - WHITESPACE@4812..4813 " " - EXPR_VAR@4813..4827 - NAME@4813..4827 - IDENT@4813..4827 "c_document_end" - WHITESPACE@4827..4828 " " - THEN_KW@4828..4832 "then" - WHITESPACE@4832..4833 " " - TRUE_EXPR@4833..4842 - EXPR_STRING@4833..4842 - STRING_SINGLE@4833..4842 "'\\n...\\n'" - WHITESPACE@4842..4843 " " - ELSE_KW@4843..4847 "else" - WHITESPACE@4847..4848 " " - FALSE_EXPR@4848..4852 - EXPR_STRING@4848..4852 - STRING_SINGLE@4848..4852 "'\\n'" + MEMBER_FIELD_METHOD@4467..4852 + FIELD_NAME_FIXED@4467..4485 + NAME@4467..4485 + IDENT@4467..4485 "manifestYamlStream" + PARAMS_DESC@4485..4560 + L_PAREN@4485..4486 "(" + PARAM@4486..4491 + DESTRUCT_FULL@4486..4491 + NAME@4486..4491 + IDENT@4486..4491 "value" + COMMA@4491..4492 "," + WHITESPACE@4492..4493 " " + PARAM@4493..4521 + DESTRUCT_FULL@4493..4515 + NAME@4493..4515 + IDENT@4493..4515 "indent_array_in_object" + ASSIGN@4515..4516 "=" + EXPR_LITERAL@4516..4521 + FALSE_KW@4516..4521 "false" + COMMA@4521..4522 "," + WHITESPACE@4522..4523 " " + PARAM@4523..4542 + DESTRUCT_FULL@4523..4537 + NAME@4523..4537 + IDENT@4523..4537 "c_document_end" + ASSIGN@4537..4538 "=" + EXPR_LITERAL@4538..4542 + TRUE_KW@4538..4542 "true" + COMMA@4542..4543 "," + WHITESPACE@4543..4544 " " + PARAM@4544..4559 + DESTRUCT_FULL@4544..4554 + NAME@4544..4554 + IDENT@4544..4554 "quote_keys" + ASSIGN@4554..4555 "=" + EXPR_LITERAL@4555..4559 + TRUE_KW@4555..4559 "true" + R_PAREN@4559..4560 ")" + COLONCOLON@4560..4562 "::" + WHITESPACE@4562..4567 "\n " + EXPR_IF_THEN_ELSE@4567..4852 + IF_KW@4567..4569 "if" + WHITESPACE@4569..4570 " " + EXPR_UNARY@4570..4589 + NOT@4570..4571 "!" + EXPR_APPLY@4571..4589 + EXPR_INDEX@4571..4582 + EXPR_VAR@4571..4574 + NAME@4571..4574 + IDENT@4571..4574 "std" + DOT@4574..4575 "." + NAME@4575..4582 + IDENT@4575..4582 "isArray" + ARGS_DESC@4582..4589 + L_PAREN@4582..4583 "(" + ARG@4583..4588 + EXPR_VAR@4583..4588 + NAME@4583..4588 + IDENT@4583..4588 "value" + R_PAREN@4588..4589 ")" + WHITESPACE@4589..4590 " " + THEN_KW@4590..4594 "then" + WHITESPACE@4594..4601 "\n " + TRUE_EXPR@4601..4669 + EXPR_ERROR@4601..4669 + ERROR_KW@4601..4606 "error" + WHITESPACE@4606..4607 " " + EXPR_BINARY@4607..4669 + LHS_EXPR@4607..4651 + EXPR_STRING@4607..4651 + STRING_SINGLE@4607..4651 "'manifestYamlStream o ..." + WHITESPACE@4651..4652 " " + PLUS@4652..4653 "+" + WHITESPACE@4653..4654 " " + EXPR_APPLY@4654..4669 + EXPR_INDEX@4654..4662 + EXPR_VAR@4654..4657 + NAME@4654..4657 + IDENT@4654..4657 "std" + DOT@4657..4658 "." + NAME@4658..4662 + IDENT@4658..4662 "type" + ARGS_DESC@4662..4669 + L_PAREN@4662..4663 "(" + ARG@4663..4668 + EXPR_VAR@4663..4668 + NAME@4663..4668 + IDENT@4663..4668 "value" + R_PAREN@4668..4669 ")" + WHITESPACE@4669..4674 "\n " + ELSE_KW@4674..4678 "else" + WHITESPACE@4678..4685 "\n " + FALSE_EXPR@4685..4852 + EXPR_BINARY@4685..4852 + LHS_EXPR@4685..4807 + EXPR_BINARY@4685..4807 + LHS_EXPR@4685..4692 + EXPR_STRING@4685..4692 + STRING_SINGLE@4685..4692 "'---\\n'" + WHITESPACE@4692..4693 " " + PLUS@4693..4694 "+" + WHITESPACE@4694..4695 " " + EXPR_APPLY@4695..4807 + EXPR_INDEX@4695..4703 + EXPR_VAR@4695..4698 + NAME@4695..4698 + IDENT@4695..4698 "std" + DOT@4698..4699 "." + NAME@4699..4703 + IDENT@4699..4703 "join" + ARGS_DESC@4703..4807 + L_PAREN@4703..4704 "(" + WHITESPACE@4704..4713 "\n " + ARG@4713..4722 + EXPR_STRING@4713..4722 + STRING_SINGLE@4713..4722 "'\\n---\\n'" + COMMA@4722..4723 "," + WHITESPACE@4723..4724 " " + ARG@4724..4799 + EXPR_ARRAY_COMP@4724..4799 + L_BRACK@4724..4725 "[" + EXPR_APPLY@4725..4783 + EXPR_INDEX@4725..4744 + EXPR_VAR@4725..4728 + NAME@4725..4728 + IDENT@4725..4728 "std" + DOT@4728..4729 "." + NAME@4729..4744 + IDENT@4729..4744 "manifestYamlDoc" + ARGS_DESC@4744..4783 + L_PAREN@4744..4745 "(" + ARG@4745..4746 + EXPR_VAR@4745..4746 + NAME@4745..4746 + IDENT@4745..4746 "e" + COMMA@4746..4747 "," + WHITESPACE@4747..4748 " " + ARG@4748..4770 + EXPR_VAR@4748..4770 + NAME@4748..4770 + IDENT@4748..4770 "indent_array_in_object" + COMMA@4770..4771 "," + WHITESPACE@4771..4772 " " + ARG@4772..4782 + EXPR_VAR@4772..4782 + NAME@4772..4782 + IDENT@4772..4782 "quote_keys" + R_PAREN@4782..4783 ")" + WHITESPACE@4783..4784 " " + FOR_SPEC@4784..4798 + FOR_KW@4784..4787 "for" + WHITESPACE@4787..4788 " " + NAME@4788..4789 + IDENT@4788..4789 "e" + WHITESPACE@4789..4790 " " + IN_KW@4790..4792 "in" + WHITESPACE@4792..4793 " " + EXPR_VAR@4793..4798 + NAME@4793..4798 + IDENT@4793..4798 "value" + R_BRACK@4798..4799 "]" + WHITESPACE@4799..4806 "\n " + R_PAREN@4806..4807 ")" + WHITESPACE@4807..4808 " " + PLUS@4808..4809 "+" + WHITESPACE@4809..4810 " " + EXPR_IF_THEN_ELSE@4810..4852 + IF_KW@4810..4812 "if" + WHITESPACE@4812..4813 " " + EXPR_VAR@4813..4827 + NAME@4813..4827 + IDENT@4813..4827 "c_document_end" + WHITESPACE@4827..4828 " " + THEN_KW@4828..4832 "then" + WHITESPACE@4832..4833 " " + TRUE_EXPR@4833..4842 + EXPR_STRING@4833..4842 + STRING_SINGLE@4833..4842 "'\\n...\\n'" + WHITESPACE@4842..4843 " " + ELSE_KW@4843..4847 "else" + WHITESPACE@4847..4848 " " + FALSE_EXPR@4848..4852 + EXPR_STRING@4848..4852 + STRING_SINGLE@4848..4852 "'\\n'" COMMA@4852..4853 "," WHITESPACE@4853..4857 "\n\n " - MEMBER_FIELD@4857..5513 - FIELD_METHOD@4857..5513 - FIELD_NAME_FIXED@4857..4871 - NAME@4857..4871 - IDENT@4857..4871 "manifestPython" - PARAMS_DESC@4871..4874 - L_PAREN@4871..4872 "(" - PARAM@4872..4873 - DESTRUCT_FULL@4872..4873 - NAME@4872..4873 - IDENT@4872..4873 "v" - R_PAREN@4873..4874 ")" - COLONCOLON@4874..4876 "::" - WHITESPACE@4876..4881 "\n " - EXPR_IF_THEN_ELSE@4881..5513 - IF_KW@4881..4883 "if" - WHITESPACE@4883..4884 " " - EXPR_APPLY@4884..4899 - EXPR_INDEX@4884..4896 - EXPR_VAR@4884..4887 - NAME@4884..4887 - IDENT@4884..4887 "std" - DOT@4887..4888 "." - NAME@4888..4896 - IDENT@4888..4896 "isObject" - ARGS_DESC@4896..4899 - L_PAREN@4896..4897 "(" - ARG@4897..4898 - EXPR_VAR@4897..4898 - NAME@4897..4898 - IDENT@4897..4898 "v" - R_PAREN@4898..4899 ")" - WHITESPACE@4899..4900 " " - THEN_KW@4900..4904 "then" - WHITESPACE@4904..4911 "\n " - TRUE_EXPR@4911..5086 - EXPR_LOCAL@4911..5086 - LOCAL_KW@4911..4916 "local" - WHITESPACE@4916..4917 " " - BIND_DESTRUCT@4917..5045 - DESTRUCT_FULL@4917..4923 - NAME@4917..4923 - IDENT@4917..4923 "fields" - WHITESPACE@4923..4924 " " - ASSIGN@4924..4925 "=" - WHITESPACE@4925..4926 " " - EXPR_ARRAY_COMP@4926..5045 - L_BRACK@4926..4927 "[" - WHITESPACE@4927..4936 "\n " - EXPR_BINARY@4936..5000 - LHS_EXPR@4936..4944 - EXPR_STRING@4936..4944 - STRING_SINGLE@4936..4944 "'%s: %s'" - WHITESPACE@4944..4945 " " - MODULO@4945..4946 "%" - WHITESPACE@4946..4947 " " - EXPR_ARRAY@4947..5000 - L_BRACK@4947..4948 "[" - EXPR_APPLY@4948..4973 - EXPR_INDEX@4948..4970 - EXPR_VAR@4948..4951 - NAME@4948..4951 - IDENT@4948..4951 "std" - DOT@4951..4952 "." - NAME@4952..4970 - IDENT@4952..4970 "escapeStringPython" - ARGS_DESC@4970..4973 - L_PAREN@4970..4971 "(" - ARG@4971..4972 - EXPR_VAR@4971..4972 - NAME@4971..4972 - IDENT@4971..4972 "k" - R_PAREN@4972..4973 ")" - COMMA@4973..4974 "," - WHITESPACE@4974..4975 " " - EXPR_APPLY@4975..4999 - EXPR_INDEX@4975..4993 - EXPR_VAR@4975..4978 - NAME@4975..4978 - IDENT@4975..4978 "std" - DOT@4978..4979 "." - NAME@4979..4993 - IDENT@4979..4993 "manifestPython" - ARGS_DESC@4993..4999 - L_PAREN@4993..4994 "(" - ARG@4994..4998 - EXPR_INDEX_EXPR@4994..4998 - LHS_EXPR@4994..4995 - EXPR_VAR@4994..4995 - NAME@4994..4995 - IDENT@4994..4995 "v" - L_BRACK@4995..4996 "[" - EXPR_VAR@4996..4997 - NAME@4996..4997 - IDENT@4996..4997 "k" - R_BRACK@4997..4998 "]" - R_PAREN@4998..4999 ")" - R_BRACK@4999..5000 "]" - WHITESPACE@5000..5009 "\n " - FOR_SPEC@5009..5037 - FOR_KW@5009..5012 "for" - WHITESPACE@5012..5013 " " - NAME@5013..5014 - IDENT@5013..5014 "k" - WHITESPACE@5014..5015 " " - IN_KW@5015..5017 "in" - WHITESPACE@5017..5018 " " - EXPR_APPLY@5018..5037 - EXPR_INDEX@5018..5034 - EXPR_VAR@5018..5021 - NAME@5018..5021 - IDENT@5018..5021 "std" - DOT@5021..5022 "." - NAME@5022..5034 - IDENT@5022..5034 "objectFields" - ARGS_DESC@5034..5037 - L_PAREN@5034..5035 "(" - ARG@5035..5036 - EXPR_VAR@5035..5036 - NAME@5035..5036 - IDENT@5035..5036 "v" - R_PAREN@5036..5037 ")" - WHITESPACE@5037..5044 "\n " - R_BRACK@5044..5045 "]" - SEMI@5045..5046 ";" - WHITESPACE@5046..5053 "\n " - EXPR_BINARY@5053..5086 - LHS_EXPR@5053..5059 - EXPR_STRING@5053..5059 - STRING_SINGLE@5053..5059 "'{%s}'" - WHITESPACE@5059..5060 " " - MODULO@5060..5061 "%" - WHITESPACE@5061..5062 " " - EXPR_ARRAY@5062..5086 - L_BRACK@5062..5063 "[" - EXPR_APPLY@5063..5085 - EXPR_INDEX@5063..5071 - EXPR_VAR@5063..5066 - NAME@5063..5066 - IDENT@5063..5066 "std" - DOT@5066..5067 "." - NAME@5067..5071 - IDENT@5067..5071 "join" - ARGS_DESC@5071..5085 - L_PAREN@5071..5072 "(" - ARG@5072..5076 - EXPR_STRING@5072..5076 - STRING_SINGLE@5072..5076 "', '" - COMMA@5076..5077 "," - WHITESPACE@5077..5078 " " - ARG@5078..5084 - EXPR_VAR@5078..5084 - NAME@5078..5084 - IDENT@5078..5084 "fields" - R_PAREN@5084..5085 ")" - R_BRACK@5085..5086 "]" - WHITESPACE@5086..5091 "\n " - ELSE_KW@5091..5095 "else" - WHITESPACE@5095..5096 " " - FALSE_EXPR@5096..5513 - EXPR_IF_THEN_ELSE@5096..5513 - IF_KW@5096..5098 "if" - WHITESPACE@5098..5099 " " - EXPR_APPLY@5099..5113 - EXPR_INDEX@5099..5110 - EXPR_VAR@5099..5102 - NAME@5099..5102 - IDENT@5099..5102 "std" - DOT@5102..5103 "." - NAME@5103..5110 - IDENT@5103..5110 "isArray" - ARGS_DESC@5110..5113 - L_PAREN@5110..5111 "(" - ARG@5111..5112 - EXPR_VAR@5111..5112 - NAME@5111..5112 - IDENT@5111..5112 "v" - R_PAREN@5112..5113 ")" - WHITESPACE@5113..5114 " " - THEN_KW@5114..5118 "then" - WHITESPACE@5118..5125 "\n " - TRUE_EXPR@5125..5188 - EXPR_BINARY@5125..5188 - LHS_EXPR@5125..5131 - EXPR_STRING@5125..5131 - STRING_SINGLE@5125..5131 "'[%s]'" - WHITESPACE@5131..5132 " " - MODULO@5132..5133 "%" - WHITESPACE@5133..5134 " " - EXPR_ARRAY@5134..5188 - L_BRACK@5134..5135 "[" - EXPR_APPLY@5135..5187 - EXPR_INDEX@5135..5143 - EXPR_VAR@5135..5138 - NAME@5135..5138 - IDENT@5135..5138 "std" - DOT@5138..5139 "." - NAME@5139..5143 - IDENT@5139..5143 "join" - ARGS_DESC@5143..5187 - L_PAREN@5143..5144 "(" - ARG@5144..5148 - EXPR_STRING@5144..5148 - STRING_SINGLE@5144..5148 "', '" - COMMA@5148..5149 "," - WHITESPACE@5149..5150 " " - ARG@5150..5186 - EXPR_ARRAY_COMP@5150..5186 - L_BRACK@5150..5151 "[" - EXPR_APPLY@5151..5173 - EXPR_INDEX@5151..5169 - EXPR_VAR@5151..5154 - NAME@5151..5154 - IDENT@5151..5154 "std" - DOT@5154..5155 "." - NAME@5155..5169 - IDENT@5155..5169 "manifestPython" - ARGS_DESC@5169..5173 - L_PAREN@5169..5170 "(" - ARG@5170..5172 - EXPR_VAR@5170..5172 - NAME@5170..5172 - IDENT@5170..5172 "v2" - R_PAREN@5172..5173 ")" - WHITESPACE@5173..5174 " " - FOR_SPEC@5174..5185 - FOR_KW@5174..5177 "for" - WHITESPACE@5177..5178 " " - NAME@5178..5180 - IDENT@5178..5180 "v2" - WHITESPACE@5180..5181 " " - IN_KW@5181..5183 "in" - WHITESPACE@5183..5184 " " - EXPR_VAR@5184..5185 - NAME@5184..5185 - IDENT@5184..5185 "v" - R_BRACK@5185..5186 "]" - R_PAREN@5186..5187 ")" - R_BRACK@5187..5188 "]" - WHITESPACE@5188..5193 "\n " - ELSE_KW@5193..5197 "else" - WHITESPACE@5197..5198 " " - FALSE_EXPR@5198..5513 - EXPR_IF_THEN_ELSE@5198..5513 - IF_KW@5198..5200 "if" - WHITESPACE@5200..5201 " " - EXPR_APPLY@5201..5216 - EXPR_INDEX@5201..5213 - EXPR_VAR@5201..5204 - NAME@5201..5204 - IDENT@5201..5204 "std" - DOT@5204..5205 "." - NAME@5205..5213 - IDENT@5205..5213 "isString" - ARGS_DESC@5213..5216 - L_PAREN@5213..5214 "(" - ARG@5214..5215 - EXPR_VAR@5214..5215 - NAME@5214..5215 - IDENT@5214..5215 "v" - R_PAREN@5215..5216 ")" - WHITESPACE@5216..5217 " " - THEN_KW@5217..5221 "then" - WHITESPACE@5221..5228 "\n " - TRUE_EXPR@5228..5262 - EXPR_BINARY@5228..5262 - LHS_EXPR@5228..5232 - EXPR_STRING@5228..5232 - STRING_SINGLE@5228..5232 "'%s'" - WHITESPACE@5232..5233 " " - MODULO@5233..5234 "%" - WHITESPACE@5234..5235 " " - EXPR_ARRAY@5235..5262 - L_BRACK@5235..5236 "[" - EXPR_APPLY@5236..5261 - EXPR_INDEX@5236..5258 - EXPR_VAR@5236..5239 - NAME@5236..5239 - IDENT@5236..5239 "std" - DOT@5239..5240 "." - NAME@5240..5258 - IDENT@5240..5258 "escapeStringPython" - ARGS_DESC@5258..5261 - L_PAREN@5258..5259 "(" - ARG@5259..5260 - EXPR_VAR@5259..5260 - NAME@5259..5260 - IDENT@5259..5260 "v" - R_PAREN@5260..5261 ")" - R_BRACK@5261..5262 "]" - WHITESPACE@5262..5267 "\n " - ELSE_KW@5267..5271 "else" - WHITESPACE@5271..5272 " " - FALSE_EXPR@5272..5513 - EXPR_IF_THEN_ELSE@5272..5513 - IF_KW@5272..5274 "if" - WHITESPACE@5274..5275 " " - EXPR_APPLY@5275..5292 - EXPR_INDEX@5275..5289 - EXPR_VAR@5275..5278 - NAME@5275..5278 - IDENT@5275..5278 "std" - DOT@5278..5279 "." - NAME@5279..5289 - IDENT@5279..5289 "isFunction" - ARGS_DESC@5289..5292 - L_PAREN@5289..5290 "(" - ARG@5290..5291 - EXPR_VAR@5290..5291 - NAME@5290..5291 - IDENT@5290..5291 "v" - R_PAREN@5291..5292 ")" - WHITESPACE@5292..5293 " " - THEN_KW@5293..5297 "then" - WHITESPACE@5297..5304 "\n " - TRUE_EXPR@5304..5336 - EXPR_ERROR@5304..5336 - ERROR_KW@5304..5309 "error" - WHITESPACE@5309..5310 " " - EXPR_STRING@5310..5336 - STRING_SINGLE@5310..5336 "'cannot manifest func ..." - WHITESPACE@5336..5341 "\n " - ELSE_KW@5341..5345 "else" - WHITESPACE@5345..5346 " " - FALSE_EXPR@5346..5513 - EXPR_IF_THEN_ELSE@5346..5513 - IF_KW@5346..5348 "if" - WHITESPACE@5348..5349 " " - EXPR_APPLY@5349..5364 - EXPR_INDEX@5349..5361 - EXPR_VAR@5349..5352 - NAME@5349..5352 - IDENT@5349..5352 "std" - DOT@5352..5353 "." - NAME@5353..5361 - IDENT@5353..5361 "isNumber" - ARGS_DESC@5361..5364 - L_PAREN@5361..5362 "(" - ARG@5362..5363 - EXPR_VAR@5362..5363 - NAME@5362..5363 - IDENT@5362..5363 "v" - R_PAREN@5363..5364 ")" - WHITESPACE@5364..5365 " " - THEN_KW@5365..5369 "then" - WHITESPACE@5369..5376 "\n " - TRUE_EXPR@5376..5391 - EXPR_APPLY@5376..5391 - EXPR_INDEX@5376..5388 - EXPR_VAR@5376..5379 - NAME@5376..5379 - IDENT@5376..5379 "std" - DOT@5379..5380 "." - NAME@5380..5388 - IDENT@5380..5388 "toString" - ARGS_DESC@5388..5391 - L_PAREN@5388..5389 "(" - ARG@5389..5390 - EXPR_VAR@5389..5390 - NAME@5389..5390 - IDENT@5389..5390 "v" - R_PAREN@5390..5391 ")" - WHITESPACE@5391..5396 "\n " - ELSE_KW@5396..5400 "else" - WHITESPACE@5400..5401 " " - FALSE_EXPR@5401..5513 - EXPR_IF_THEN_ELSE@5401..5513 - IF_KW@5401..5403 "if" - WHITESPACE@5403..5404 " " - EXPR_BINARY@5404..5413 - LHS_EXPR@5404..5405 - EXPR_VAR@5404..5405 - NAME@5404..5405 - IDENT@5404..5405 "v" - WHITESPACE@5405..5406 " " - EQ@5406..5408 "==" - WHITESPACE@5408..5409 " " - EXPR_LITERAL@5409..5413 - TRUE_KW@5409..5413 "true" - WHITESPACE@5413..5414 " " - THEN_KW@5414..5418 "then" - WHITESPACE@5418..5425 "\n " - TRUE_EXPR@5425..5431 - EXPR_STRING@5425..5431 - STRING_SINGLE@5425..5431 "'True'" - WHITESPACE@5431..5436 "\n " - ELSE_KW@5436..5440 "else" - WHITESPACE@5440..5441 " " - FALSE_EXPR@5441..5513 - EXPR_IF_THEN_ELSE@5441..5513 - IF_KW@5441..5443 "if" - WHITESPACE@5443..5444 " " - EXPR_BINARY@5444..5454 - LHS_EXPR@5444..5445 - EXPR_VAR@5444..5445 - NAME@5444..5445 - IDENT@5444..5445 "v" - WHITESPACE@5445..5446 " " - EQ@5446..5448 "==" - WHITESPACE@5448..5449 " " - EXPR_LITERAL@5449..5454 - FALSE_KW@5449..5454 "false" - WHITESPACE@5454..5455 " " - THEN_KW@5455..5459 "then" - WHITESPACE@5459..5466 "\n " - TRUE_EXPR@5466..5473 - EXPR_STRING@5466..5473 - STRING_SINGLE@5466..5473 "'False'" - WHITESPACE@5473..5478 "\n " - ELSE_KW@5478..5482 "else" - WHITESPACE@5482..5483 " " - FALSE_EXPR@5483..5513 - EXPR_IF_THEN_ELSE@5483..5513 - IF_KW@5483..5485 "if" - WHITESPACE@5485..5486 " " - EXPR_BINARY@5486..5495 - LHS_EXPR@5486..5487 - EXPR_VAR@5486..5487 - NAME@5486..5487 - IDENT@5486..5487 "v" - WHITESPACE@5487..5488 " " - EQ@5488..5490 "==" - WHITESPACE@5490..5491 " " - EXPR_LITERAL@5491..5495 - NULL_KW@5491..5495 "null" - WHITESPACE@5495..5496 " " - THEN_KW@5496..5500 "then" - WHITESPACE@5500..5507 "\n " - TRUE_EXPR@5507..5513 - EXPR_STRING@5507..5513 - STRING_SINGLE@5507..5513 "'None'" + MEMBER_FIELD_METHOD@4857..5513 + FIELD_NAME_FIXED@4857..4871 + NAME@4857..4871 + IDENT@4857..4871 "manifestPython" + PARAMS_DESC@4871..4874 + L_PAREN@4871..4872 "(" + PARAM@4872..4873 + DESTRUCT_FULL@4872..4873 + NAME@4872..4873 + IDENT@4872..4873 "v" + R_PAREN@4873..4874 ")" + COLONCOLON@4874..4876 "::" + WHITESPACE@4876..4881 "\n " + EXPR_IF_THEN_ELSE@4881..5513 + IF_KW@4881..4883 "if" + WHITESPACE@4883..4884 " " + EXPR_APPLY@4884..4899 + EXPR_INDEX@4884..4896 + EXPR_VAR@4884..4887 + NAME@4884..4887 + IDENT@4884..4887 "std" + DOT@4887..4888 "." + NAME@4888..4896 + IDENT@4888..4896 "isObject" + ARGS_DESC@4896..4899 + L_PAREN@4896..4897 "(" + ARG@4897..4898 + EXPR_VAR@4897..4898 + NAME@4897..4898 + IDENT@4897..4898 "v" + R_PAREN@4898..4899 ")" + WHITESPACE@4899..4900 " " + THEN_KW@4900..4904 "then" + WHITESPACE@4904..4911 "\n " + TRUE_EXPR@4911..5086 + EXPR_LOCAL@4911..5086 + LOCAL_KW@4911..4916 "local" + WHITESPACE@4916..4917 " " + BIND_DESTRUCT@4917..5045 + DESTRUCT_FULL@4917..4923 + NAME@4917..4923 + IDENT@4917..4923 "fields" + WHITESPACE@4923..4924 " " + ASSIGN@4924..4925 "=" + WHITESPACE@4925..4926 " " + EXPR_ARRAY_COMP@4926..5045 + L_BRACK@4926..4927 "[" + WHITESPACE@4927..4936 "\n " + EXPR_BINARY@4936..5000 + LHS_EXPR@4936..4944 + EXPR_STRING@4936..4944 + STRING_SINGLE@4936..4944 "'%s: %s'" + WHITESPACE@4944..4945 " " + MODULO@4945..4946 "%" + WHITESPACE@4946..4947 " " + EXPR_ARRAY@4947..5000 + L_BRACK@4947..4948 "[" + EXPR_APPLY@4948..4973 + EXPR_INDEX@4948..4970 + EXPR_VAR@4948..4951 + NAME@4948..4951 + IDENT@4948..4951 "std" + DOT@4951..4952 "." + NAME@4952..4970 + IDENT@4952..4970 "escapeStringPython" + ARGS_DESC@4970..4973 + L_PAREN@4970..4971 "(" + ARG@4971..4972 + EXPR_VAR@4971..4972 + NAME@4971..4972 + IDENT@4971..4972 "k" + R_PAREN@4972..4973 ")" + COMMA@4973..4974 "," + WHITESPACE@4974..4975 " " + EXPR_APPLY@4975..4999 + EXPR_INDEX@4975..4993 + EXPR_VAR@4975..4978 + NAME@4975..4978 + IDENT@4975..4978 "std" + DOT@4978..4979 "." + NAME@4979..4993 + IDENT@4979..4993 "manifestPython" + ARGS_DESC@4993..4999 + L_PAREN@4993..4994 "(" + ARG@4994..4998 + EXPR_INDEX_EXPR@4994..4998 + LHS_EXPR@4994..4995 + EXPR_VAR@4994..4995 + NAME@4994..4995 + IDENT@4994..4995 "v" + L_BRACK@4995..4996 "[" + EXPR_VAR@4996..4997 + NAME@4996..4997 + IDENT@4996..4997 "k" + R_BRACK@4997..4998 "]" + R_PAREN@4998..4999 ")" + R_BRACK@4999..5000 "]" + WHITESPACE@5000..5009 "\n " + FOR_SPEC@5009..5037 + FOR_KW@5009..5012 "for" + WHITESPACE@5012..5013 " " + NAME@5013..5014 + IDENT@5013..5014 "k" + WHITESPACE@5014..5015 " " + IN_KW@5015..5017 "in" + WHITESPACE@5017..5018 " " + EXPR_APPLY@5018..5037 + EXPR_INDEX@5018..5034 + EXPR_VAR@5018..5021 + NAME@5018..5021 + IDENT@5018..5021 "std" + DOT@5021..5022 "." + NAME@5022..5034 + IDENT@5022..5034 "objectFields" + ARGS_DESC@5034..5037 + L_PAREN@5034..5035 "(" + ARG@5035..5036 + EXPR_VAR@5035..5036 + NAME@5035..5036 + IDENT@5035..5036 "v" + R_PAREN@5036..5037 ")" + WHITESPACE@5037..5044 "\n " + R_BRACK@5044..5045 "]" + SEMI@5045..5046 ";" + WHITESPACE@5046..5053 "\n " + EXPR_BINARY@5053..5086 + LHS_EXPR@5053..5059 + EXPR_STRING@5053..5059 + STRING_SINGLE@5053..5059 "'{%s}'" + WHITESPACE@5059..5060 " " + MODULO@5060..5061 "%" + WHITESPACE@5061..5062 " " + EXPR_ARRAY@5062..5086 + L_BRACK@5062..5063 "[" + EXPR_APPLY@5063..5085 + EXPR_INDEX@5063..5071 + EXPR_VAR@5063..5066 + NAME@5063..5066 + IDENT@5063..5066 "std" + DOT@5066..5067 "." + NAME@5067..5071 + IDENT@5067..5071 "join" + ARGS_DESC@5071..5085 + L_PAREN@5071..5072 "(" + ARG@5072..5076 + EXPR_STRING@5072..5076 + STRING_SINGLE@5072..5076 "', '" + COMMA@5076..5077 "," + WHITESPACE@5077..5078 " " + ARG@5078..5084 + EXPR_VAR@5078..5084 + NAME@5078..5084 + IDENT@5078..5084 "fields" + R_PAREN@5084..5085 ")" + R_BRACK@5085..5086 "]" + WHITESPACE@5086..5091 "\n " + ELSE_KW@5091..5095 "else" + WHITESPACE@5095..5096 " " + FALSE_EXPR@5096..5513 + EXPR_IF_THEN_ELSE@5096..5513 + IF_KW@5096..5098 "if" + WHITESPACE@5098..5099 " " + EXPR_APPLY@5099..5113 + EXPR_INDEX@5099..5110 + EXPR_VAR@5099..5102 + NAME@5099..5102 + IDENT@5099..5102 "std" + DOT@5102..5103 "." + NAME@5103..5110 + IDENT@5103..5110 "isArray" + ARGS_DESC@5110..5113 + L_PAREN@5110..5111 "(" + ARG@5111..5112 + EXPR_VAR@5111..5112 + NAME@5111..5112 + IDENT@5111..5112 "v" + R_PAREN@5112..5113 ")" + WHITESPACE@5113..5114 " " + THEN_KW@5114..5118 "then" + WHITESPACE@5118..5125 "\n " + TRUE_EXPR@5125..5188 + EXPR_BINARY@5125..5188 + LHS_EXPR@5125..5131 + EXPR_STRING@5125..5131 + STRING_SINGLE@5125..5131 "'[%s]'" + WHITESPACE@5131..5132 " " + MODULO@5132..5133 "%" + WHITESPACE@5133..5134 " " + EXPR_ARRAY@5134..5188 + L_BRACK@5134..5135 "[" + EXPR_APPLY@5135..5187 + EXPR_INDEX@5135..5143 + EXPR_VAR@5135..5138 + NAME@5135..5138 + IDENT@5135..5138 "std" + DOT@5138..5139 "." + NAME@5139..5143 + IDENT@5139..5143 "join" + ARGS_DESC@5143..5187 + L_PAREN@5143..5144 "(" + ARG@5144..5148 + EXPR_STRING@5144..5148 + STRING_SINGLE@5144..5148 "', '" + COMMA@5148..5149 "," + WHITESPACE@5149..5150 " " + ARG@5150..5186 + EXPR_ARRAY_COMP@5150..5186 + L_BRACK@5150..5151 "[" + EXPR_APPLY@5151..5173 + EXPR_INDEX@5151..5169 + EXPR_VAR@5151..5154 + NAME@5151..5154 + IDENT@5151..5154 "std" + DOT@5154..5155 "." + NAME@5155..5169 + IDENT@5155..5169 "manifestPython" + ARGS_DESC@5169..5173 + L_PAREN@5169..5170 "(" + ARG@5170..5172 + EXPR_VAR@5170..5172 + NAME@5170..5172 + IDENT@5170..5172 "v2" + R_PAREN@5172..5173 ")" + WHITESPACE@5173..5174 " " + FOR_SPEC@5174..5185 + FOR_KW@5174..5177 "for" + WHITESPACE@5177..5178 " " + NAME@5178..5180 + IDENT@5178..5180 "v2" + WHITESPACE@5180..5181 " " + IN_KW@5181..5183 "in" + WHITESPACE@5183..5184 " " + EXPR_VAR@5184..5185 + NAME@5184..5185 + IDENT@5184..5185 "v" + R_BRACK@5185..5186 "]" + R_PAREN@5186..5187 ")" + R_BRACK@5187..5188 "]" + WHITESPACE@5188..5193 "\n " + ELSE_KW@5193..5197 "else" + WHITESPACE@5197..5198 " " + FALSE_EXPR@5198..5513 + EXPR_IF_THEN_ELSE@5198..5513 + IF_KW@5198..5200 "if" + WHITESPACE@5200..5201 " " + EXPR_APPLY@5201..5216 + EXPR_INDEX@5201..5213 + EXPR_VAR@5201..5204 + NAME@5201..5204 + IDENT@5201..5204 "std" + DOT@5204..5205 "." + NAME@5205..5213 + IDENT@5205..5213 "isString" + ARGS_DESC@5213..5216 + L_PAREN@5213..5214 "(" + ARG@5214..5215 + EXPR_VAR@5214..5215 + NAME@5214..5215 + IDENT@5214..5215 "v" + R_PAREN@5215..5216 ")" + WHITESPACE@5216..5217 " " + THEN_KW@5217..5221 "then" + WHITESPACE@5221..5228 "\n " + TRUE_EXPR@5228..5262 + EXPR_BINARY@5228..5262 + LHS_EXPR@5228..5232 + EXPR_STRING@5228..5232 + STRING_SINGLE@5228..5232 "'%s'" + WHITESPACE@5232..5233 " " + MODULO@5233..5234 "%" + WHITESPACE@5234..5235 " " + EXPR_ARRAY@5235..5262 + L_BRACK@5235..5236 "[" + EXPR_APPLY@5236..5261 + EXPR_INDEX@5236..5258 + EXPR_VAR@5236..5239 + NAME@5236..5239 + IDENT@5236..5239 "std" + DOT@5239..5240 "." + NAME@5240..5258 + IDENT@5240..5258 "escapeStringPython" + ARGS_DESC@5258..5261 + L_PAREN@5258..5259 "(" + ARG@5259..5260 + EXPR_VAR@5259..5260 + NAME@5259..5260 + IDENT@5259..5260 "v" + R_PAREN@5260..5261 ")" + R_BRACK@5261..5262 "]" + WHITESPACE@5262..5267 "\n " + ELSE_KW@5267..5271 "else" + WHITESPACE@5271..5272 " " + FALSE_EXPR@5272..5513 + EXPR_IF_THEN_ELSE@5272..5513 + IF_KW@5272..5274 "if" + WHITESPACE@5274..5275 " " + EXPR_APPLY@5275..5292 + EXPR_INDEX@5275..5289 + EXPR_VAR@5275..5278 + NAME@5275..5278 + IDENT@5275..5278 "std" + DOT@5278..5279 "." + NAME@5279..5289 + IDENT@5279..5289 "isFunction" + ARGS_DESC@5289..5292 + L_PAREN@5289..5290 "(" + ARG@5290..5291 + EXPR_VAR@5290..5291 + NAME@5290..5291 + IDENT@5290..5291 "v" + R_PAREN@5291..5292 ")" + WHITESPACE@5292..5293 " " + THEN_KW@5293..5297 "then" + WHITESPACE@5297..5304 "\n " + TRUE_EXPR@5304..5336 + EXPR_ERROR@5304..5336 + ERROR_KW@5304..5309 "error" + WHITESPACE@5309..5310 " " + EXPR_STRING@5310..5336 + STRING_SINGLE@5310..5336 "'cannot manifest func ..." + WHITESPACE@5336..5341 "\n " + ELSE_KW@5341..5345 "else" + WHITESPACE@5345..5346 " " + FALSE_EXPR@5346..5513 + EXPR_IF_THEN_ELSE@5346..5513 + IF_KW@5346..5348 "if" + WHITESPACE@5348..5349 " " + EXPR_APPLY@5349..5364 + EXPR_INDEX@5349..5361 + EXPR_VAR@5349..5352 + NAME@5349..5352 + IDENT@5349..5352 "std" + DOT@5352..5353 "." + NAME@5353..5361 + IDENT@5353..5361 "isNumber" + ARGS_DESC@5361..5364 + L_PAREN@5361..5362 "(" + ARG@5362..5363 + EXPR_VAR@5362..5363 + NAME@5362..5363 + IDENT@5362..5363 "v" + R_PAREN@5363..5364 ")" + WHITESPACE@5364..5365 " " + THEN_KW@5365..5369 "then" + WHITESPACE@5369..5376 "\n " + TRUE_EXPR@5376..5391 + EXPR_APPLY@5376..5391 + EXPR_INDEX@5376..5388 + EXPR_VAR@5376..5379 + NAME@5376..5379 + IDENT@5376..5379 "std" + DOT@5379..5380 "." + NAME@5380..5388 + IDENT@5380..5388 "toString" + ARGS_DESC@5388..5391 + L_PAREN@5388..5389 "(" + ARG@5389..5390 + EXPR_VAR@5389..5390 + NAME@5389..5390 + IDENT@5389..5390 "v" + R_PAREN@5390..5391 ")" + WHITESPACE@5391..5396 "\n " + ELSE_KW@5396..5400 "else" + WHITESPACE@5400..5401 " " + FALSE_EXPR@5401..5513 + EXPR_IF_THEN_ELSE@5401..5513 + IF_KW@5401..5403 "if" + WHITESPACE@5403..5404 " " + EXPR_BINARY@5404..5413 + LHS_EXPR@5404..5405 + EXPR_VAR@5404..5405 + NAME@5404..5405 + IDENT@5404..5405 "v" + WHITESPACE@5405..5406 " " + EQ@5406..5408 "==" + WHITESPACE@5408..5409 " " + EXPR_LITERAL@5409..5413 + TRUE_KW@5409..5413 "true" + WHITESPACE@5413..5414 " " + THEN_KW@5414..5418 "then" + WHITESPACE@5418..5425 "\n " + TRUE_EXPR@5425..5431 + EXPR_STRING@5425..5431 + STRING_SINGLE@5425..5431 "'True'" + WHITESPACE@5431..5436 "\n " + ELSE_KW@5436..5440 "else" + WHITESPACE@5440..5441 " " + FALSE_EXPR@5441..5513 + EXPR_IF_THEN_ELSE@5441..5513 + IF_KW@5441..5443 "if" + WHITESPACE@5443..5444 " " + EXPR_BINARY@5444..5454 + LHS_EXPR@5444..5445 + EXPR_VAR@5444..5445 + NAME@5444..5445 + IDENT@5444..5445 "v" + WHITESPACE@5445..5446 " " + EQ@5446..5448 "==" + WHITESPACE@5448..5449 " " + EXPR_LITERAL@5449..5454 + FALSE_KW@5449..5454 "false" + WHITESPACE@5454..5455 " " + THEN_KW@5455..5459 "then" + WHITESPACE@5459..5466 "\n " + TRUE_EXPR@5466..5473 + EXPR_STRING@5466..5473 + STRING_SINGLE@5466..5473 "'False'" + WHITESPACE@5473..5478 "\n " + ELSE_KW@5478..5482 "else" + WHITESPACE@5482..5483 " " + FALSE_EXPR@5483..5513 + EXPR_IF_THEN_ELSE@5483..5513 + IF_KW@5483..5485 "if" + WHITESPACE@5485..5486 " " + EXPR_BINARY@5486..5495 + LHS_EXPR@5486..5487 + EXPR_VAR@5486..5487 + NAME@5486..5487 + IDENT@5486..5487 "v" + WHITESPACE@5487..5488 " " + EQ@5488..5490 "==" + WHITESPACE@5490..5491 " " + EXPR_LITERAL@5491..5495 + NULL_KW@5491..5495 "null" + WHITESPACE@5495..5496 " " + THEN_KW@5496..5500 "then" + WHITESPACE@5500..5507 "\n " + TRUE_EXPR@5507..5513 + EXPR_STRING@5507..5513 + STRING_SINGLE@5507..5513 "'None'" COMMA@5513..5514 "," WHITESPACE@5514..5518 "\n\n " - MEMBER_FIELD@5518..5673 - FIELD_METHOD@5518..5673 - FIELD_NAME_FIXED@5518..5536 - NAME@5518..5536 - IDENT@5518..5536 "manifestPythonVars" - PARAMS_DESC@5536..5542 - L_PAREN@5536..5537 "(" - PARAM@5537..5541 - DESTRUCT_FULL@5537..5541 - NAME@5537..5541 - IDENT@5537..5541 "conf" - R_PAREN@5541..5542 ")" - COLONCOLON@5542..5544 "::" - WHITESPACE@5544..5549 "\n " - EXPR_LOCAL@5549..5673 - LOCAL_KW@5549..5554 "local" - WHITESPACE@5554..5555 " " - BIND_DESTRUCT@5555..5640 - DESTRUCT_FULL@5555..5559 - NAME@5555..5559 - IDENT@5555..5559 "vars" - WHITESPACE@5559..5560 " " - ASSIGN@5560..5561 "=" - WHITESPACE@5561..5562 " " - EXPR_ARRAY_COMP@5562..5640 - L_BRACK@5562..5563 "[" - EXPR_BINARY@5563..5607 - LHS_EXPR@5563..5572 - EXPR_STRING@5563..5572 - STRING_SINGLE@5563..5572 "'%s = %s'" - WHITESPACE@5572..5573 " " - MODULO@5573..5574 "%" - WHITESPACE@5574..5575 " " - EXPR_ARRAY@5575..5607 - L_BRACK@5575..5576 "[" - EXPR_VAR@5576..5577 - NAME@5576..5577 - IDENT@5576..5577 "k" - COMMA@5577..5578 "," - WHITESPACE@5578..5579 " " - EXPR_APPLY@5579..5606 - EXPR_INDEX@5579..5597 - EXPR_VAR@5579..5582 - NAME@5579..5582 - IDENT@5579..5582 "std" - DOT@5582..5583 "." - NAME@5583..5597 - IDENT@5583..5597 "manifestPython" - ARGS_DESC@5597..5606 - L_PAREN@5597..5598 "(" - ARG@5598..5605 - EXPR_INDEX_EXPR@5598..5605 - LHS_EXPR@5598..5602 - EXPR_VAR@5598..5602 - NAME@5598..5602 - IDENT@5598..5602 "conf" - L_BRACK@5602..5603 "[" - EXPR_VAR@5603..5604 - NAME@5603..5604 - IDENT@5603..5604 "k" - R_BRACK@5604..5605 "]" - R_PAREN@5605..5606 ")" - R_BRACK@5606..5607 "]" - WHITESPACE@5607..5608 " " - FOR_SPEC@5608..5639 - FOR_KW@5608..5611 "for" - WHITESPACE@5611..5612 " " - NAME@5612..5613 - IDENT@5612..5613 "k" - WHITESPACE@5613..5614 " " - IN_KW@5614..5616 "in" - WHITESPACE@5616..5617 " " - EXPR_APPLY@5617..5639 - EXPR_INDEX@5617..5633 - EXPR_VAR@5617..5620 - NAME@5617..5620 - IDENT@5617..5620 "std" - DOT@5620..5621 "." - NAME@5621..5633 - IDENT@5621..5633 "objectFields" - ARGS_DESC@5633..5639 - L_PAREN@5633..5634 "(" - ARG@5634..5638 - EXPR_VAR@5634..5638 - NAME@5634..5638 - IDENT@5634..5638 "conf" - R_PAREN@5638..5639 ")" - R_BRACK@5639..5640 "]" - SEMI@5640..5641 ";" - WHITESPACE@5641..5646 "\n " - EXPR_APPLY@5646..5673 - EXPR_INDEX@5646..5654 - EXPR_VAR@5646..5649 - NAME@5646..5649 - IDENT@5646..5649 "std" - DOT@5649..5650 "." - NAME@5650..5654 - IDENT@5650..5654 "join" - ARGS_DESC@5654..5673 - L_PAREN@5654..5655 "(" - ARG@5655..5659 - EXPR_STRING@5655..5659 - STRING_SINGLE@5655..5659 "'\\n'" - COMMA@5659..5660 "," - WHITESPACE@5660..5661 " " - ARG@5661..5672 - EXPR_BINARY@5661..5672 - LHS_EXPR@5661..5665 - EXPR_VAR@5661..5665 - NAME@5661..5665 - IDENT@5661..5665 "vars" - WHITESPACE@5665..5666 " " - PLUS@5666..5667 "+" - WHITESPACE@5667..5668 " " - EXPR_ARRAY@5668..5672 - L_BRACK@5668..5669 "[" - EXPR_STRING@5669..5671 - STRING_SINGLE@5669..5671 "''" - R_BRACK@5671..5672 "]" - R_PAREN@5672..5673 ")" + MEMBER_FIELD_METHOD@5518..5673 + FIELD_NAME_FIXED@5518..5536 + NAME@5518..5536 + IDENT@5518..5536 "manifestPythonVars" + PARAMS_DESC@5536..5542 + L_PAREN@5536..5537 "(" + PARAM@5537..5541 + DESTRUCT_FULL@5537..5541 + NAME@5537..5541 + IDENT@5537..5541 "conf" + R_PAREN@5541..5542 ")" + COLONCOLON@5542..5544 "::" + WHITESPACE@5544..5549 "\n " + EXPR_LOCAL@5549..5673 + LOCAL_KW@5549..5554 "local" + WHITESPACE@5554..5555 " " + BIND_DESTRUCT@5555..5640 + DESTRUCT_FULL@5555..5559 + NAME@5555..5559 + IDENT@5555..5559 "vars" + WHITESPACE@5559..5560 " " + ASSIGN@5560..5561 "=" + WHITESPACE@5561..5562 " " + EXPR_ARRAY_COMP@5562..5640 + L_BRACK@5562..5563 "[" + EXPR_BINARY@5563..5607 + LHS_EXPR@5563..5572 + EXPR_STRING@5563..5572 + STRING_SINGLE@5563..5572 "'%s = %s'" + WHITESPACE@5572..5573 " " + MODULO@5573..5574 "%" + WHITESPACE@5574..5575 " " + EXPR_ARRAY@5575..5607 + L_BRACK@5575..5576 "[" + EXPR_VAR@5576..5577 + NAME@5576..5577 + IDENT@5576..5577 "k" + COMMA@5577..5578 "," + WHITESPACE@5578..5579 " " + EXPR_APPLY@5579..5606 + EXPR_INDEX@5579..5597 + EXPR_VAR@5579..5582 + NAME@5579..5582 + IDENT@5579..5582 "std" + DOT@5582..5583 "." + NAME@5583..5597 + IDENT@5583..5597 "manifestPython" + ARGS_DESC@5597..5606 + L_PAREN@5597..5598 "(" + ARG@5598..5605 + EXPR_INDEX_EXPR@5598..5605 + LHS_EXPR@5598..5602 + EXPR_VAR@5598..5602 + NAME@5598..5602 + IDENT@5598..5602 "conf" + L_BRACK@5602..5603 "[" + EXPR_VAR@5603..5604 + NAME@5603..5604 + IDENT@5603..5604 "k" + R_BRACK@5604..5605 "]" + R_PAREN@5605..5606 ")" + R_BRACK@5606..5607 "]" + WHITESPACE@5607..5608 " " + FOR_SPEC@5608..5639 + FOR_KW@5608..5611 "for" + WHITESPACE@5611..5612 " " + NAME@5612..5613 + IDENT@5612..5613 "k" + WHITESPACE@5613..5614 " " + IN_KW@5614..5616 "in" + WHITESPACE@5616..5617 " " + EXPR_APPLY@5617..5639 + EXPR_INDEX@5617..5633 + EXPR_VAR@5617..5620 + NAME@5617..5620 + IDENT@5617..5620 "std" + DOT@5620..5621 "." + NAME@5621..5633 + IDENT@5621..5633 "objectFields" + ARGS_DESC@5633..5639 + L_PAREN@5633..5634 "(" + ARG@5634..5638 + EXPR_VAR@5634..5638 + NAME@5634..5638 + IDENT@5634..5638 "conf" + R_PAREN@5638..5639 ")" + R_BRACK@5639..5640 "]" + SEMI@5640..5641 ";" + WHITESPACE@5641..5646 "\n " + EXPR_APPLY@5646..5673 + EXPR_INDEX@5646..5654 + EXPR_VAR@5646..5649 + NAME@5646..5649 + IDENT@5646..5649 "std" + DOT@5649..5650 "." + NAME@5650..5654 + IDENT@5650..5654 "join" + ARGS_DESC@5654..5673 + L_PAREN@5654..5655 "(" + ARG@5655..5659 + EXPR_STRING@5655..5659 + STRING_SINGLE@5655..5659 "'\\n'" + COMMA@5659..5660 "," + WHITESPACE@5660..5661 " " + ARG@5661..5672 + EXPR_BINARY@5661..5672 + LHS_EXPR@5661..5665 + EXPR_VAR@5661..5665 + NAME@5661..5665 + IDENT@5661..5665 "vars" + WHITESPACE@5665..5666 " " + PLUS@5666..5667 "+" + WHITESPACE@5667..5668 " " + EXPR_ARRAY@5668..5672 + L_BRACK@5668..5669 "[" + EXPR_STRING@5669..5671 + STRING_SINGLE@5669..5671 "''" + R_BRACK@5671..5672 "]" + R_PAREN@5672..5673 ")" COMMA@5673..5674 "," WHITESPACE@5674..5678 "\n\n " - MEMBER_FIELD@5678..6345 - FIELD_METHOD@5678..6345 - FIELD_NAME_FIXED@5678..5695 - NAME@5678..5695 - IDENT@5678..5695 "manifestXmlJsonml" - PARAMS_DESC@5695..5702 - L_PAREN@5695..5696 "(" - PARAM@5696..5701 - DESTRUCT_FULL@5696..5701 - NAME@5696..5701 - IDENT@5696..5701 "value" - R_PAREN@5701..5702 ")" - COLONCOLON@5702..5704 "::" - WHITESPACE@5704..5709 "\n " - EXPR_IF_THEN_ELSE@5709..6345 - IF_KW@5709..5711 "if" - WHITESPACE@5711..5712 " " - EXPR_UNARY@5712..5731 - NOT@5712..5713 "!" - EXPR_APPLY@5713..5731 - EXPR_INDEX@5713..5724 - EXPR_VAR@5713..5716 - NAME@5713..5716 - IDENT@5713..5716 "std" - DOT@5716..5717 "." - NAME@5717..5724 - IDENT@5717..5724 "isArray" - ARGS_DESC@5724..5731 - L_PAREN@5724..5725 "(" - ARG@5725..5730 - EXPR_VAR@5725..5730 - NAME@5725..5730 - IDENT@5725..5730 "value" - R_PAREN@5730..5731 ")" - WHITESPACE@5731..5732 " " - THEN_KW@5732..5736 "then" - WHITESPACE@5736..5743 "\n " - TRUE_EXPR@5743..5811 - EXPR_ERROR@5743..5811 - ERROR_KW@5743..5748 "error" - WHITESPACE@5748..5749 " " - EXPR_BINARY@5749..5811 - LHS_EXPR@5749..5793 - EXPR_STRING@5749..5793 - STRING_SINGLE@5749..5793 "'Expected a JSONML va ..." - WHITESPACE@5793..5794 " " - MODULO@5794..5795 "%" - WHITESPACE@5795..5796 " " - EXPR_APPLY@5796..5811 - EXPR_INDEX@5796..5804 - EXPR_VAR@5796..5799 - NAME@5796..5799 - IDENT@5796..5799 "std" - DOT@5799..5800 "." - NAME@5800..5804 - IDENT@5800..5804 "type" - ARGS_DESC@5804..5811 - L_PAREN@5804..5805 "(" - ARG@5805..5810 - EXPR_VAR@5805..5810 - NAME@5805..5810 - IDENT@5805..5810 "value" - R_PAREN@5810..5811 ")" - WHITESPACE@5811..5816 "\n " - ELSE_KW@5816..5820 "else" - WHITESPACE@5820..5827 "\n " - FALSE_EXPR@5827..6345 - EXPR_LOCAL@5827..6345 - LOCAL_KW@5827..5832 "local" - WHITESPACE@5832..5833 " " - BIND_FUNCTION@5833..6326 - NAME@5833..5836 - IDENT@5833..5836 "aux" - PARAMS_DESC@5836..5839 - L_PAREN@5836..5837 "(" - PARAM@5837..5838 - DESTRUCT_FULL@5837..5838 - NAME@5837..5838 - IDENT@5837..5838 "v" - R_PAREN@5838..5839 ")" - WHITESPACE@5839..5840 " " - ASSIGN@5840..5841 "=" - WHITESPACE@5841..5850 "\n " - EXPR_IF_THEN_ELSE@5850..6326 - IF_KW@5850..5852 "if" - WHITESPACE@5852..5853 " " - EXPR_APPLY@5853..5868 - EXPR_INDEX@5853..5865 - EXPR_VAR@5853..5856 - NAME@5853..5856 - IDENT@5853..5856 "std" - DOT@5856..5857 "." - NAME@5857..5865 - IDENT@5857..5865 "isString" - ARGS_DESC@5865..5868 - L_PAREN@5865..5866 "(" - ARG@5866..5867 - EXPR_VAR@5866..5867 - NAME@5866..5867 - IDENT@5866..5867 "v" - R_PAREN@5867..5868 ")" - WHITESPACE@5868..5869 " " - THEN_KW@5869..5873 "then" - WHITESPACE@5873..5884 "\n " - TRUE_EXPR@5884..5885 - EXPR_VAR@5884..5885 - NAME@5884..5885 - IDENT@5884..5885 "v" - WHITESPACE@5885..5894 "\n " - ELSE_KW@5894..5898 "else" - WHITESPACE@5898..5909 "\n " - FALSE_EXPR@5909..6326 - EXPR_LOCAL@5909..6326 - LOCAL_KW@5909..5914 "local" - WHITESPACE@5914..5915 " " - BIND_DESTRUCT@5915..5925 - DESTRUCT_FULL@5915..5918 - NAME@5915..5918 - IDENT@5915..5918 "tag" - WHITESPACE@5918..5919 " " - ASSIGN@5919..5920 "=" - WHITESPACE@5920..5921 " " - EXPR_INDEX_EXPR@5921..5925 - LHS_EXPR@5921..5922 - EXPR_VAR@5921..5922 - NAME@5921..5922 - IDENT@5921..5922 "v" - L_BRACK@5922..5923 "[" - EXPR_NUMBER@5923..5924 - FLOAT@5923..5924 "0" - R_BRACK@5924..5925 "]" - SEMI@5925..5926 ";" - WHITESPACE@5926..5937 "\n " - EXPR_LOCAL@5937..6326 - LOCAL_KW@5937..5942 "local" - WHITESPACE@5942..5943 " " - BIND_DESTRUCT@5943..5994 - DESTRUCT_FULL@5943..5952 - NAME@5943..5952 - IDENT@5943..5952 "has_attrs" - WHITESPACE@5952..5953 " " - ASSIGN@5953..5954 "=" - WHITESPACE@5954..5955 " " - EXPR_BINARY@5955..5994 - LHS_EXPR@5955..5972 - EXPR_BINARY@5955..5972 - LHS_EXPR@5955..5968 - EXPR_APPLY@5955..5968 - EXPR_INDEX@5955..5965 - EXPR_VAR@5955..5958 - NAME@5955..5958 - IDENT@5955..5958 "std" - DOT@5958..5959 "." - NAME@5959..5965 - IDENT@5959..5965 "length" - ARGS_DESC@5965..5968 - L_PAREN@5965..5966 "(" - ARG@5966..5967 - EXPR_VAR@5966..5967 - NAME@5966..5967 - IDENT@5966..5967 "v" - R_PAREN@5967..5968 ")" - WHITESPACE@5968..5969 " " - GT@5969..5970 ">" - WHITESPACE@5970..5971 " " - EXPR_NUMBER@5971..5972 - FLOAT@5971..5972 "1" - WHITESPACE@5972..5973 " " - AND@5973..5975 "&&" - WHITESPACE@5975..5976 " " - EXPR_APPLY@5976..5994 - EXPR_INDEX@5976..5988 - EXPR_VAR@5976..5979 - NAME@5976..5979 - IDENT@5976..5979 "std" - DOT@5979..5980 "." - NAME@5980..5988 - IDENT@5980..5988 "isObject" - ARGS_DESC@5988..5994 - L_PAREN@5988..5989 "(" - ARG@5989..5993 - EXPR_INDEX_EXPR@5989..5993 - LHS_EXPR@5989..5990 - EXPR_VAR@5989..5990 - NAME@5989..5990 - IDENT@5989..5990 "v" - L_BRACK@5990..5991 "[" - EXPR_NUMBER@5991..5992 - FLOAT@5991..5992 "1" - R_BRACK@5992..5993 "]" - R_PAREN@5993..5994 ")" - SEMI@5994..5995 ";" - WHITESPACE@5995..6006 "\n " - EXPR_LOCAL@6006..6326 - LOCAL_KW@6006..6011 "local" - WHITESPACE@6011..6012 " " - BIND_DESTRUCT@6012..6050 - DESTRUCT_FULL@6012..6017 - NAME@6012..6017 - IDENT@6012..6017 "attrs" - WHITESPACE@6017..6018 " " - ASSIGN@6018..6019 "=" - WHITESPACE@6019..6020 " " - EXPR_IF_THEN_ELSE@6020..6050 - IF_KW@6020..6022 "if" - WHITESPACE@6022..6023 " " - EXPR_VAR@6023..6032 - NAME@6023..6032 - IDENT@6023..6032 "has_attrs" - WHITESPACE@6032..6033 " " - THEN_KW@6033..6037 "then" - WHITESPACE@6037..6038 " " - TRUE_EXPR@6038..6042 - EXPR_INDEX_EXPR@6038..6042 - LHS_EXPR@6038..6039 - EXPR_VAR@6038..6039 - NAME@6038..6039 - IDENT@6038..6039 "v" - L_BRACK@6039..6040 "[" - EXPR_NUMBER@6040..6041 - FLOAT@6040..6041 "1" - R_BRACK@6041..6042 "]" - WHITESPACE@6042..6043 " " - ELSE_KW@6043..6047 "else" - WHITESPACE@6047..6048 " " - FALSE_EXPR@6048..6050 - EXPR_OBJECT@6048..6050 - OBJ_BODY_MEMBER_LIST@6048..6050 - L_BRACE@6048..6049 "{" - R_BRACE@6049..6050 "}" - SEMI@6050..6051 ";" - WHITESPACE@6051..6062 "\n " - EXPR_LOCAL@6062..6326 - LOCAL_KW@6062..6067 "local" - WHITESPACE@6067..6068 " " - BIND_DESTRUCT@6068..6113 - DESTRUCT_FULL@6068..6076 - NAME@6068..6076 - IDENT@6068..6076 "children" - WHITESPACE@6076..6077 " " - ASSIGN@6077..6078 "=" - WHITESPACE@6078..6079 " " - EXPR_IF_THEN_ELSE@6079..6113 - IF_KW@6079..6081 "if" - WHITESPACE@6081..6082 " " - EXPR_VAR@6082..6091 - NAME@6082..6091 - IDENT@6082..6091 "has_attrs" - WHITESPACE@6091..6092 " " - THEN_KW@6092..6096 "then" - WHITESPACE@6096..6097 " " - TRUE_EXPR@6097..6102 - EXPR_SLICE@6097..6102 - EXPR_VAR@6097..6098 - NAME@6097..6098 - IDENT@6097..6098 "v" - SLICE_DESC@6098..6102 - L_BRACK@6098..6099 "[" - EXPR_NUMBER@6099..6100 - FLOAT@6099..6100 "2" - COLON@6100..6101 ":" - R_BRACK@6101..6102 "]" - WHITESPACE@6102..6103 " " - ELSE_KW@6103..6107 "else" - WHITESPACE@6107..6108 " " - FALSE_EXPR@6108..6113 - EXPR_SLICE@6108..6113 - EXPR_VAR@6108..6109 - NAME@6108..6109 - IDENT@6108..6109 "v" - SLICE_DESC@6109..6113 - L_BRACK@6109..6110 "[" - EXPR_NUMBER@6110..6111 - FLOAT@6110..6111 "1" - COLON@6111..6112 ":" - R_BRACK@6112..6113 "]" - SEMI@6113..6114 ";" - WHITESPACE@6114..6125 "\n " - EXPR_LOCAL@6125..6326 - LOCAL_KW@6125..6130 "local" - WHITESPACE@6130..6131 " " - BIND_DESTRUCT@6131..6230 - DESTRUCT_FULL@6131..6140 - NAME@6131..6140 - IDENT@6131..6140 "attrs_str" - WHITESPACE@6140..6141 " " - ASSIGN@6141..6142 "=" - WHITESPACE@6142..6155 "\n " - EXPR_APPLY@6155..6230 - EXPR_INDEX@6155..6163 - EXPR_VAR@6155..6158 - NAME@6155..6158 - IDENT@6155..6158 "std" - DOT@6158..6159 "." - NAME@6159..6163 - IDENT@6159..6163 "join" - ARGS_DESC@6163..6230 - L_PAREN@6163..6164 "(" - ARG@6164..6166 - EXPR_STRING@6164..6166 - STRING_SINGLE@6164..6166 "''" - COMMA@6166..6167 "," - WHITESPACE@6167..6168 " " - ARG@6168..6229 - EXPR_ARRAY_COMP@6168..6229 - L_BRACK@6168..6169 "[" - EXPR_BINARY@6169..6195 - LHS_EXPR@6169..6179 - EXPR_STRING@6169..6179 - STRING_SINGLE@6169..6179 "' %s=\"%s\"'" - WHITESPACE@6179..6180 " " - MODULO@6180..6181 "%" - WHITESPACE@6181..6182 " " - EXPR_ARRAY@6182..6195 - L_BRACK@6182..6183 "[" - EXPR_VAR@6183..6184 - NAME@6183..6184 - IDENT@6183..6184 "k" - COMMA@6184..6185 "," - WHITESPACE@6185..6186 " " - EXPR_INDEX_EXPR@6186..6194 - LHS_EXPR@6186..6191 - EXPR_VAR@6186..6191 - NAME@6186..6191 - IDENT@6186..6191 "attrs" - L_BRACK@6191..6192 "[" - EXPR_VAR@6192..6193 - NAME@6192..6193 - IDENT@6192..6193 "k" - R_BRACK@6193..6194 "]" - R_BRACK@6194..6195 "]" - WHITESPACE@6195..6196 " " - FOR_SPEC@6196..6228 - FOR_KW@6196..6199 "for" - WHITESPACE@6199..6200 " " - NAME@6200..6201 - IDENT@6200..6201 "k" - WHITESPACE@6201..6202 " " - IN_KW@6202..6204 "in" - WHITESPACE@6204..6205 " " - EXPR_APPLY@6205..6228 - EXPR_INDEX@6205..6221 - EXPR_VAR@6205..6208 - NAME@6205..6208 - IDENT@6205..6208 "std" - DOT@6208..6209 "." - NAME@6209..6221 - IDENT@6209..6221 "objectFields" - ARGS_DESC@6221..6228 - L_PAREN@6221..6222 "(" - ARG@6222..6227 - EXPR_VAR@6222..6227 - NAME@6222..6227 - IDENT@6222..6227 "attrs" - R_PAREN@6227..6228 ")" - R_BRACK@6228..6229 "]" - R_PAREN@6229..6230 ")" - SEMI@6230..6231 ";" - WHITESPACE@6231..6242 "\n " - EXPR_APPLY@6242..6326 - EXPR_INDEX@6242..6254 - EXPR_VAR@6242..6245 - NAME@6242..6245 - IDENT@6242..6245 "std" - DOT@6245..6246 "." - NAME@6246..6254 - IDENT@6246..6254 "deepJoin" - ARGS_DESC@6254..6326 - L_PAREN@6254..6255 "(" - ARG@6255..6325 - EXPR_ARRAY@6255..6325 - L_BRACK@6255..6256 "[" - EXPR_STRING@6256..6259 - STRING_SINGLE@6256..6259 "'<'" - COMMA@6259..6260 "," - WHITESPACE@6260..6261 " " - EXPR_VAR@6261..6264 - NAME@6261..6264 - IDENT@6261..6264 "tag" - COMMA@6264..6265 "," - WHITESPACE@6265..6266 " " - EXPR_VAR@6266..6275 - NAME@6266..6275 - IDENT@6266..6275 "attrs_str" - COMMA@6275..6276 "," - WHITESPACE@6276..6277 " " - EXPR_STRING@6277..6280 - STRING_SINGLE@6277..6280 "'>'" - COMMA@6280..6281 "," - WHITESPACE@6281..6282 " " - EXPR_ARRAY_COMP@6282..6308 - L_BRACK@6282..6283 "[" - EXPR_APPLY@6283..6289 - EXPR_VAR@6283..6286 - NAME@6283..6286 - IDENT@6283..6286 "aux" - ARGS_DESC@6286..6289 - L_PAREN@6286..6287 "(" - ARG@6287..6288 - EXPR_VAR@6287..6288 - NAME@6287..6288 - IDENT@6287..6288 "x" - R_PAREN@6288..6289 ")" - WHITESPACE@6289..6290 " " - FOR_SPEC@6290..6307 - FOR_KW@6290..6293 "for" - WHITESPACE@6293..6294 " " - NAME@6294..6295 - IDENT@6294..6295 "x" - WHITESPACE@6295..6296 " " - IN_KW@6296..6298 "in" - WHITESPACE@6298..6299 " " - EXPR_VAR@6299..6307 - NAME@6299..6307 - IDENT@6299..6307 "children" - R_BRACK@6307..6308 "]" - COMMA@6308..6309 "," - WHITESPACE@6309..6310 " " - EXPR_STRING@6310..6314 - STRING_SINGLE@6310..6314 "''" - R_BRACK@6324..6325 "]" - R_PAREN@6325..6326 ")" - SEMI@6326..6327 ";" - WHITESPACE@6327..6335 "\n\n " - EXPR_APPLY@6335..6345 - EXPR_VAR@6335..6338 - NAME@6335..6338 - IDENT@6335..6338 "aux" - ARGS_DESC@6338..6345 - L_PAREN@6338..6339 "(" - ARG@6339..6344 - EXPR_VAR@6339..6344 - NAME@6339..6344 - IDENT@6339..6344 "value" - R_PAREN@6344..6345 ")" + MEMBER_FIELD_METHOD@5678..6345 + FIELD_NAME_FIXED@5678..5695 + NAME@5678..5695 + IDENT@5678..5695 "manifestXmlJsonml" + PARAMS_DESC@5695..5702 + L_PAREN@5695..5696 "(" + PARAM@5696..5701 + DESTRUCT_FULL@5696..5701 + NAME@5696..5701 + IDENT@5696..5701 "value" + R_PAREN@5701..5702 ")" + COLONCOLON@5702..5704 "::" + WHITESPACE@5704..5709 "\n " + EXPR_IF_THEN_ELSE@5709..6345 + IF_KW@5709..5711 "if" + WHITESPACE@5711..5712 " " + EXPR_UNARY@5712..5731 + NOT@5712..5713 "!" + EXPR_APPLY@5713..5731 + EXPR_INDEX@5713..5724 + EXPR_VAR@5713..5716 + NAME@5713..5716 + IDENT@5713..5716 "std" + DOT@5716..5717 "." + NAME@5717..5724 + IDENT@5717..5724 "isArray" + ARGS_DESC@5724..5731 + L_PAREN@5724..5725 "(" + ARG@5725..5730 + EXPR_VAR@5725..5730 + NAME@5725..5730 + IDENT@5725..5730 "value" + R_PAREN@5730..5731 ")" + WHITESPACE@5731..5732 " " + THEN_KW@5732..5736 "then" + WHITESPACE@5736..5743 "\n " + TRUE_EXPR@5743..5811 + EXPR_ERROR@5743..5811 + ERROR_KW@5743..5748 "error" + WHITESPACE@5748..5749 " " + EXPR_BINARY@5749..5811 + LHS_EXPR@5749..5793 + EXPR_STRING@5749..5793 + STRING_SINGLE@5749..5793 "'Expected a JSONML va ..." + WHITESPACE@5793..5794 " " + MODULO@5794..5795 "%" + WHITESPACE@5795..5796 " " + EXPR_APPLY@5796..5811 + EXPR_INDEX@5796..5804 + EXPR_VAR@5796..5799 + NAME@5796..5799 + IDENT@5796..5799 "std" + DOT@5799..5800 "." + NAME@5800..5804 + IDENT@5800..5804 "type" + ARGS_DESC@5804..5811 + L_PAREN@5804..5805 "(" + ARG@5805..5810 + EXPR_VAR@5805..5810 + NAME@5805..5810 + IDENT@5805..5810 "value" + R_PAREN@5810..5811 ")" + WHITESPACE@5811..5816 "\n " + ELSE_KW@5816..5820 "else" + WHITESPACE@5820..5827 "\n " + FALSE_EXPR@5827..6345 + EXPR_LOCAL@5827..6345 + LOCAL_KW@5827..5832 "local" + WHITESPACE@5832..5833 " " + BIND_FUNCTION@5833..6326 + NAME@5833..5836 + IDENT@5833..5836 "aux" + PARAMS_DESC@5836..5839 + L_PAREN@5836..5837 "(" + PARAM@5837..5838 + DESTRUCT_FULL@5837..5838 + NAME@5837..5838 + IDENT@5837..5838 "v" + R_PAREN@5838..5839 ")" + WHITESPACE@5839..5840 " " + ASSIGN@5840..5841 "=" + WHITESPACE@5841..5850 "\n " + EXPR_IF_THEN_ELSE@5850..6326 + IF_KW@5850..5852 "if" + WHITESPACE@5852..5853 " " + EXPR_APPLY@5853..5868 + EXPR_INDEX@5853..5865 + EXPR_VAR@5853..5856 + NAME@5853..5856 + IDENT@5853..5856 "std" + DOT@5856..5857 "." + NAME@5857..5865 + IDENT@5857..5865 "isString" + ARGS_DESC@5865..5868 + L_PAREN@5865..5866 "(" + ARG@5866..5867 + EXPR_VAR@5866..5867 + NAME@5866..5867 + IDENT@5866..5867 "v" + R_PAREN@5867..5868 ")" + WHITESPACE@5868..5869 " " + THEN_KW@5869..5873 "then" + WHITESPACE@5873..5884 "\n " + TRUE_EXPR@5884..5885 + EXPR_VAR@5884..5885 + NAME@5884..5885 + IDENT@5884..5885 "v" + WHITESPACE@5885..5894 "\n " + ELSE_KW@5894..5898 "else" + WHITESPACE@5898..5909 "\n " + FALSE_EXPR@5909..6326 + EXPR_LOCAL@5909..6326 + LOCAL_KW@5909..5914 "local" + WHITESPACE@5914..5915 " " + BIND_DESTRUCT@5915..5925 + DESTRUCT_FULL@5915..5918 + NAME@5915..5918 + IDENT@5915..5918 "tag" + WHITESPACE@5918..5919 " " + ASSIGN@5919..5920 "=" + WHITESPACE@5920..5921 " " + EXPR_INDEX_EXPR@5921..5925 + LHS_EXPR@5921..5922 + EXPR_VAR@5921..5922 + NAME@5921..5922 + IDENT@5921..5922 "v" + L_BRACK@5922..5923 "[" + EXPR_NUMBER@5923..5924 + FLOAT@5923..5924 "0" + R_BRACK@5924..5925 "]" + SEMI@5925..5926 ";" + WHITESPACE@5926..5937 "\n " + EXPR_LOCAL@5937..6326 + LOCAL_KW@5937..5942 "local" + WHITESPACE@5942..5943 " " + BIND_DESTRUCT@5943..5994 + DESTRUCT_FULL@5943..5952 + NAME@5943..5952 + IDENT@5943..5952 "has_attrs" + WHITESPACE@5952..5953 " " + ASSIGN@5953..5954 "=" + WHITESPACE@5954..5955 " " + EXPR_BINARY@5955..5994 + LHS_EXPR@5955..5972 + EXPR_BINARY@5955..5972 + LHS_EXPR@5955..5968 + EXPR_APPLY@5955..5968 + EXPR_INDEX@5955..5965 + EXPR_VAR@5955..5958 + NAME@5955..5958 + IDENT@5955..5958 "std" + DOT@5958..5959 "." + NAME@5959..5965 + IDENT@5959..5965 "length" + ARGS_DESC@5965..5968 + L_PAREN@5965..5966 "(" + ARG@5966..5967 + EXPR_VAR@5966..5967 + NAME@5966..5967 + IDENT@5966..5967 "v" + R_PAREN@5967..5968 ")" + WHITESPACE@5968..5969 " " + GT@5969..5970 ">" + WHITESPACE@5970..5971 " " + EXPR_NUMBER@5971..5972 + FLOAT@5971..5972 "1" + WHITESPACE@5972..5973 " " + AND@5973..5975 "&&" + WHITESPACE@5975..5976 " " + EXPR_APPLY@5976..5994 + EXPR_INDEX@5976..5988 + EXPR_VAR@5976..5979 + NAME@5976..5979 + IDENT@5976..5979 "std" + DOT@5979..5980 "." + NAME@5980..5988 + IDENT@5980..5988 "isObject" + ARGS_DESC@5988..5994 + L_PAREN@5988..5989 "(" + ARG@5989..5993 + EXPR_INDEX_EXPR@5989..5993 + LHS_EXPR@5989..5990 + EXPR_VAR@5989..5990 + NAME@5989..5990 + IDENT@5989..5990 "v" + L_BRACK@5990..5991 "[" + EXPR_NUMBER@5991..5992 + FLOAT@5991..5992 "1" + R_BRACK@5992..5993 "]" + R_PAREN@5993..5994 ")" + SEMI@5994..5995 ";" + WHITESPACE@5995..6006 "\n " + EXPR_LOCAL@6006..6326 + LOCAL_KW@6006..6011 "local" + WHITESPACE@6011..6012 " " + BIND_DESTRUCT@6012..6050 + DESTRUCT_FULL@6012..6017 + NAME@6012..6017 + IDENT@6012..6017 "attrs" + WHITESPACE@6017..6018 " " + ASSIGN@6018..6019 "=" + WHITESPACE@6019..6020 " " + EXPR_IF_THEN_ELSE@6020..6050 + IF_KW@6020..6022 "if" + WHITESPACE@6022..6023 " " + EXPR_VAR@6023..6032 + NAME@6023..6032 + IDENT@6023..6032 "has_attrs" + WHITESPACE@6032..6033 " " + THEN_KW@6033..6037 "then" + WHITESPACE@6037..6038 " " + TRUE_EXPR@6038..6042 + EXPR_INDEX_EXPR@6038..6042 + LHS_EXPR@6038..6039 + EXPR_VAR@6038..6039 + NAME@6038..6039 + IDENT@6038..6039 "v" + L_BRACK@6039..6040 "[" + EXPR_NUMBER@6040..6041 + FLOAT@6040..6041 "1" + R_BRACK@6041..6042 "]" + WHITESPACE@6042..6043 " " + ELSE_KW@6043..6047 "else" + WHITESPACE@6047..6048 " " + FALSE_EXPR@6048..6050 + EXPR_OBJECT@6048..6050 + OBJ_BODY_MEMBER_LIST@6048..6050 + L_BRACE@6048..6049 "{" + R_BRACE@6049..6050 "}" + SEMI@6050..6051 ";" + WHITESPACE@6051..6062 "\n " + EXPR_LOCAL@6062..6326 + LOCAL_KW@6062..6067 "local" + WHITESPACE@6067..6068 " " + BIND_DESTRUCT@6068..6113 + DESTRUCT_FULL@6068..6076 + NAME@6068..6076 + IDENT@6068..6076 "children" + WHITESPACE@6076..6077 " " + ASSIGN@6077..6078 "=" + WHITESPACE@6078..6079 " " + EXPR_IF_THEN_ELSE@6079..6113 + IF_KW@6079..6081 "if" + WHITESPACE@6081..6082 " " + EXPR_VAR@6082..6091 + NAME@6082..6091 + IDENT@6082..6091 "has_attrs" + WHITESPACE@6091..6092 " " + THEN_KW@6092..6096 "then" + WHITESPACE@6096..6097 " " + TRUE_EXPR@6097..6102 + EXPR_SLICE@6097..6102 + EXPR_VAR@6097..6098 + NAME@6097..6098 + IDENT@6097..6098 "v" + SLICE_DESC@6098..6102 + L_BRACK@6098..6099 "[" + EXPR_NUMBER@6099..6100 + FLOAT@6099..6100 "2" + COLON@6100..6101 ":" + R_BRACK@6101..6102 "]" + WHITESPACE@6102..6103 " " + ELSE_KW@6103..6107 "else" + WHITESPACE@6107..6108 " " + FALSE_EXPR@6108..6113 + EXPR_SLICE@6108..6113 + EXPR_VAR@6108..6109 + NAME@6108..6109 + IDENT@6108..6109 "v" + SLICE_DESC@6109..6113 + L_BRACK@6109..6110 "[" + EXPR_NUMBER@6110..6111 + FLOAT@6110..6111 "1" + COLON@6111..6112 ":" + R_BRACK@6112..6113 "]" + SEMI@6113..6114 ";" + WHITESPACE@6114..6125 "\n " + EXPR_LOCAL@6125..6326 + LOCAL_KW@6125..6130 "local" + WHITESPACE@6130..6131 " " + BIND_DESTRUCT@6131..6230 + DESTRUCT_FULL@6131..6140 + NAME@6131..6140 + IDENT@6131..6140 "attrs_str" + WHITESPACE@6140..6141 " " + ASSIGN@6141..6142 "=" + WHITESPACE@6142..6155 "\n " + EXPR_APPLY@6155..6230 + EXPR_INDEX@6155..6163 + EXPR_VAR@6155..6158 + NAME@6155..6158 + IDENT@6155..6158 "std" + DOT@6158..6159 "." + NAME@6159..6163 + IDENT@6159..6163 "join" + ARGS_DESC@6163..6230 + L_PAREN@6163..6164 "(" + ARG@6164..6166 + EXPR_STRING@6164..6166 + STRING_SINGLE@6164..6166 "''" + COMMA@6166..6167 "," + WHITESPACE@6167..6168 " " + ARG@6168..6229 + EXPR_ARRAY_COMP@6168..6229 + L_BRACK@6168..6169 "[" + EXPR_BINARY@6169..6195 + LHS_EXPR@6169..6179 + EXPR_STRING@6169..6179 + STRING_SINGLE@6169..6179 "' %s=\"%s\"'" + WHITESPACE@6179..6180 " " + MODULO@6180..6181 "%" + WHITESPACE@6181..6182 " " + EXPR_ARRAY@6182..6195 + L_BRACK@6182..6183 "[" + EXPR_VAR@6183..6184 + NAME@6183..6184 + IDENT@6183..6184 "k" + COMMA@6184..6185 "," + WHITESPACE@6185..6186 " " + EXPR_INDEX_EXPR@6186..6194 + LHS_EXPR@6186..6191 + EXPR_VAR@6186..6191 + NAME@6186..6191 + IDENT@6186..6191 "attrs" + L_BRACK@6191..6192 "[" + EXPR_VAR@6192..6193 + NAME@6192..6193 + IDENT@6192..6193 "k" + R_BRACK@6193..6194 "]" + R_BRACK@6194..6195 "]" + WHITESPACE@6195..6196 " " + FOR_SPEC@6196..6228 + FOR_KW@6196..6199 "for" + WHITESPACE@6199..6200 " " + NAME@6200..6201 + IDENT@6200..6201 "k" + WHITESPACE@6201..6202 " " + IN_KW@6202..6204 "in" + WHITESPACE@6204..6205 " " + EXPR_APPLY@6205..6228 + EXPR_INDEX@6205..6221 + EXPR_VAR@6205..6208 + NAME@6205..6208 + IDENT@6205..6208 "std" + DOT@6208..6209 "." + NAME@6209..6221 + IDENT@6209..6221 "objectFields" + ARGS_DESC@6221..6228 + L_PAREN@6221..6222 "(" + ARG@6222..6227 + EXPR_VAR@6222..6227 + NAME@6222..6227 + IDENT@6222..6227 "attrs" + R_PAREN@6227..6228 ")" + R_BRACK@6228..6229 "]" + R_PAREN@6229..6230 ")" + SEMI@6230..6231 ";" + WHITESPACE@6231..6242 "\n " + EXPR_APPLY@6242..6326 + EXPR_INDEX@6242..6254 + EXPR_VAR@6242..6245 + NAME@6242..6245 + IDENT@6242..6245 "std" + DOT@6245..6246 "." + NAME@6246..6254 + IDENT@6246..6254 "deepJoin" + ARGS_DESC@6254..6326 + L_PAREN@6254..6255 "(" + ARG@6255..6325 + EXPR_ARRAY@6255..6325 + L_BRACK@6255..6256 "[" + EXPR_STRING@6256..6259 + STRING_SINGLE@6256..6259 "'<'" + COMMA@6259..6260 "," + WHITESPACE@6260..6261 " " + EXPR_VAR@6261..6264 + NAME@6261..6264 + IDENT@6261..6264 "tag" + COMMA@6264..6265 "," + WHITESPACE@6265..6266 " " + EXPR_VAR@6266..6275 + NAME@6266..6275 + IDENT@6266..6275 "attrs_str" + COMMA@6275..6276 "," + WHITESPACE@6276..6277 " " + EXPR_STRING@6277..6280 + STRING_SINGLE@6277..6280 "'>'" + COMMA@6280..6281 "," + WHITESPACE@6281..6282 " " + EXPR_ARRAY_COMP@6282..6308 + L_BRACK@6282..6283 "[" + EXPR_APPLY@6283..6289 + EXPR_VAR@6283..6286 + NAME@6283..6286 + IDENT@6283..6286 "aux" + ARGS_DESC@6286..6289 + L_PAREN@6286..6287 "(" + ARG@6287..6288 + EXPR_VAR@6287..6288 + NAME@6287..6288 + IDENT@6287..6288 "x" + R_PAREN@6288..6289 ")" + WHITESPACE@6289..6290 " " + FOR_SPEC@6290..6307 + FOR_KW@6290..6293 "for" + WHITESPACE@6293..6294 " " + NAME@6294..6295 + IDENT@6294..6295 "x" + WHITESPACE@6295..6296 " " + IN_KW@6296..6298 "in" + WHITESPACE@6298..6299 " " + EXPR_VAR@6299..6307 + NAME@6299..6307 + IDENT@6299..6307 "children" + R_BRACK@6307..6308 "]" + COMMA@6308..6309 "," + WHITESPACE@6309..6310 " " + EXPR_STRING@6310..6314 + STRING_SINGLE@6310..6314 "''" + R_BRACK@6324..6325 "]" + R_PAREN@6325..6326 ")" + SEMI@6326..6327 ";" + WHITESPACE@6327..6335 "\n\n " + EXPR_APPLY@6335..6345 + EXPR_VAR@6335..6338 + NAME@6335..6338 + IDENT@6335..6338 "aux" + ARGS_DESC@6338..6345 + L_PAREN@6338..6339 "(" + ARG@6339..6344 + EXPR_VAR@6339..6344 + NAME@6339..6344 + IDENT@6339..6344 "value" + R_PAREN@6344..6345 ")" COMMA@6345..6346 "," WHITESPACE@6346..6350 "\n\n " - MEMBER_FIELD@6350..6556 - FIELD_METHOD@6350..6556 - FIELD_NAME_FIXED@6350..6354 - NAME@6350..6354 - IDENT@6350..6354 "uniq" - PARAMS_DESC@6354..6368 - L_PAREN@6354..6355 "(" - PARAM@6355..6358 - DESTRUCT_FULL@6355..6358 - NAME@6355..6358 - IDENT@6355..6358 "arr" - COMMA@6358..6359 "," - WHITESPACE@6359..6360 " " - PARAM@6360..6367 - DESTRUCT_FULL@6360..6364 - NAME@6360..6364 - IDENT@6360..6364 "keyF" - ASSIGN@6364..6365 "=" - EXPR_VAR@6365..6367 - NAME@6365..6367 - IDENT@6365..6367 "id" - R_PAREN@6367..6368 ")" - COLONCOLON@6368..6370 "::" - WHITESPACE@6370..6375 "\n " - EXPR_LOCAL@6375..6556 - LOCAL_KW@6375..6380 "local" - WHITESPACE@6380..6381 " " - BIND_FUNCTION@6381..6529 - NAME@6381..6382 - IDENT@6381..6382 "f" - PARAMS_DESC@6382..6388 - L_PAREN@6382..6383 "(" - PARAM@6383..6384 - DESTRUCT_FULL@6383..6384 - NAME@6383..6384 - IDENT@6383..6384 "a" - COMMA@6384..6385 "," - WHITESPACE@6385..6386 " " - PARAM@6386..6387 - DESTRUCT_FULL@6386..6387 - NAME@6386..6387 - IDENT@6386..6387 "b" - R_PAREN@6387..6388 ")" - WHITESPACE@6388..6389 " " - ASSIGN@6389..6390 "=" - WHITESPACE@6390..6397 "\n " - EXPR_IF_THEN_ELSE@6397..6529 - IF_KW@6397..6399 "if" - WHITESPACE@6399..6400 " " - EXPR_BINARY@6400..6418 - LHS_EXPR@6400..6413 - EXPR_APPLY@6400..6413 - EXPR_INDEX@6400..6410 - EXPR_VAR@6400..6403 - NAME@6400..6403 - IDENT@6400..6403 "std" - DOT@6403..6404 "." - NAME@6404..6410 - IDENT@6404..6410 "length" - ARGS_DESC@6410..6413 - L_PAREN@6410..6411 "(" - ARG@6411..6412 - EXPR_VAR@6411..6412 - NAME@6411..6412 - IDENT@6411..6412 "a" - R_PAREN@6412..6413 ")" - WHITESPACE@6413..6414 " " - EQ@6414..6416 "==" - WHITESPACE@6416..6417 " " - EXPR_NUMBER@6417..6418 - FLOAT@6417..6418 "0" - WHITESPACE@6418..6419 " " - THEN_KW@6419..6423 "then" - WHITESPACE@6423..6432 "\n " - TRUE_EXPR@6432..6435 - EXPR_ARRAY@6432..6435 - L_BRACK@6432..6433 "[" - EXPR_VAR@6433..6434 - NAME@6433..6434 - IDENT@6433..6434 "b" - R_BRACK@6434..6435 "]" - WHITESPACE@6435..6442 "\n " - ELSE_KW@6442..6446 "else" - WHITESPACE@6446..6447 " " - FALSE_EXPR@6447..6529 - EXPR_IF_THEN_ELSE@6447..6529 - IF_KW@6447..6449 "if" - WHITESPACE@6449..6450 " " - EXPR_BINARY@6450..6487 - LHS_EXPR@6450..6476 - EXPR_APPLY@6450..6476 - EXPR_VAR@6450..6454 - NAME@6450..6454 - IDENT@6450..6454 "keyF" - ARGS_DESC@6454..6476 - L_PAREN@6454..6455 "(" - ARG@6455..6475 - EXPR_INDEX_EXPR@6455..6475 - LHS_EXPR@6455..6456 - EXPR_VAR@6455..6456 - NAME@6455..6456 - IDENT@6455..6456 "a" - L_BRACK@6456..6457 "[" - EXPR_BINARY@6457..6474 - LHS_EXPR@6457..6470 - EXPR_APPLY@6457..6470 - EXPR_INDEX@6457..6467 - EXPR_VAR@6457..6460 - NAME@6457..6460 - IDENT@6457..6460 "std" - DOT@6460..6461 "." - NAME@6461..6467 - IDENT@6461..6467 "length" - ARGS_DESC@6467..6470 - L_PAREN@6467..6468 "(" - ARG@6468..6469 - EXPR_VAR@6468..6469 - NAME@6468..6469 - IDENT@6468..6469 "a" - R_PAREN@6469..6470 ")" - WHITESPACE@6470..6471 " " - MINUS@6471..6472 "-" - WHITESPACE@6472..6473 " " - EXPR_NUMBER@6473..6474 - FLOAT@6473..6474 "1" - R_BRACK@6474..6475 "]" - R_PAREN@6475..6476 ")" - WHITESPACE@6476..6477 " " - EQ@6477..6479 "==" - WHITESPACE@6479..6480 " " - EXPR_APPLY@6480..6487 - EXPR_VAR@6480..6484 - NAME@6480..6484 - IDENT@6480..6484 "keyF" - ARGS_DESC@6484..6487 - L_PAREN@6484..6485 "(" - ARG@6485..6486 - EXPR_VAR@6485..6486 - NAME@6485..6486 - IDENT@6485..6486 "b" - R_PAREN@6486..6487 ")" - WHITESPACE@6487..6488 " " - THEN_KW@6488..6492 "then" - WHITESPACE@6492..6501 "\n " - TRUE_EXPR@6501..6502 - EXPR_VAR@6501..6502 - NAME@6501..6502 - IDENT@6501..6502 "a" - WHITESPACE@6502..6509 "\n " - ELSE_KW@6509..6513 "else" - WHITESPACE@6513..6522 "\n " - FALSE_EXPR@6522..6529 - EXPR_BINARY@6522..6529 - LHS_EXPR@6522..6523 - EXPR_VAR@6522..6523 - NAME@6522..6523 - IDENT@6522..6523 "a" - WHITESPACE@6523..6524 " " - PLUS@6524..6525 "+" - WHITESPACE@6525..6526 " " - EXPR_ARRAY@6526..6529 - L_BRACK@6526..6527 "[" - EXPR_VAR@6527..6528 - NAME@6527..6528 - IDENT@6527..6528 "b" - R_BRACK@6528..6529 "]" - SEMI@6529..6530 ";" - WHITESPACE@6530..6535 "\n " - EXPR_APPLY@6535..6556 - EXPR_INDEX@6535..6544 - EXPR_VAR@6535..6538 - NAME@6535..6538 - IDENT@6535..6538 "std" - DOT@6538..6539 "." - NAME@6539..6544 - IDENT@6539..6544 "foldl" - ARGS_DESC@6544..6556 - L_PAREN@6544..6545 "(" - ARG@6545..6546 - EXPR_VAR@6545..6546 - NAME@6545..6546 - IDENT@6545..6546 "f" - COMMA@6546..6547 "," - WHITESPACE@6547..6548 " " - ARG@6548..6551 - EXPR_VAR@6548..6551 - NAME@6548..6551 - IDENT@6548..6551 "arr" - COMMA@6551..6552 "," - WHITESPACE@6552..6553 " " - ARG@6553..6555 - EXPR_ARRAY@6553..6555 - L_BRACK@6553..6554 "[" - R_BRACK@6554..6555 "]" - R_PAREN@6555..6556 ")" + MEMBER_FIELD_METHOD@6350..6556 + FIELD_NAME_FIXED@6350..6354 + NAME@6350..6354 + IDENT@6350..6354 "uniq" + PARAMS_DESC@6354..6368 + L_PAREN@6354..6355 "(" + PARAM@6355..6358 + DESTRUCT_FULL@6355..6358 + NAME@6355..6358 + IDENT@6355..6358 "arr" + COMMA@6358..6359 "," + WHITESPACE@6359..6360 " " + PARAM@6360..6367 + DESTRUCT_FULL@6360..6364 + NAME@6360..6364 + IDENT@6360..6364 "keyF" + ASSIGN@6364..6365 "=" + EXPR_VAR@6365..6367 + NAME@6365..6367 + IDENT@6365..6367 "id" + R_PAREN@6367..6368 ")" + COLONCOLON@6368..6370 "::" + WHITESPACE@6370..6375 "\n " + EXPR_LOCAL@6375..6556 + LOCAL_KW@6375..6380 "local" + WHITESPACE@6380..6381 " " + BIND_FUNCTION@6381..6529 + NAME@6381..6382 + IDENT@6381..6382 "f" + PARAMS_DESC@6382..6388 + L_PAREN@6382..6383 "(" + PARAM@6383..6384 + DESTRUCT_FULL@6383..6384 + NAME@6383..6384 + IDENT@6383..6384 "a" + COMMA@6384..6385 "," + WHITESPACE@6385..6386 " " + PARAM@6386..6387 + DESTRUCT_FULL@6386..6387 + NAME@6386..6387 + IDENT@6386..6387 "b" + R_PAREN@6387..6388 ")" + WHITESPACE@6388..6389 " " + ASSIGN@6389..6390 "=" + WHITESPACE@6390..6397 "\n " + EXPR_IF_THEN_ELSE@6397..6529 + IF_KW@6397..6399 "if" + WHITESPACE@6399..6400 " " + EXPR_BINARY@6400..6418 + LHS_EXPR@6400..6413 + EXPR_APPLY@6400..6413 + EXPR_INDEX@6400..6410 + EXPR_VAR@6400..6403 + NAME@6400..6403 + IDENT@6400..6403 "std" + DOT@6403..6404 "." + NAME@6404..6410 + IDENT@6404..6410 "length" + ARGS_DESC@6410..6413 + L_PAREN@6410..6411 "(" + ARG@6411..6412 + EXPR_VAR@6411..6412 + NAME@6411..6412 + IDENT@6411..6412 "a" + R_PAREN@6412..6413 ")" + WHITESPACE@6413..6414 " " + EQ@6414..6416 "==" + WHITESPACE@6416..6417 " " + EXPR_NUMBER@6417..6418 + FLOAT@6417..6418 "0" + WHITESPACE@6418..6419 " " + THEN_KW@6419..6423 "then" + WHITESPACE@6423..6432 "\n " + TRUE_EXPR@6432..6435 + EXPR_ARRAY@6432..6435 + L_BRACK@6432..6433 "[" + EXPR_VAR@6433..6434 + NAME@6433..6434 + IDENT@6433..6434 "b" + R_BRACK@6434..6435 "]" + WHITESPACE@6435..6442 "\n " + ELSE_KW@6442..6446 "else" + WHITESPACE@6446..6447 " " + FALSE_EXPR@6447..6529 + EXPR_IF_THEN_ELSE@6447..6529 + IF_KW@6447..6449 "if" + WHITESPACE@6449..6450 " " + EXPR_BINARY@6450..6487 + LHS_EXPR@6450..6476 + EXPR_APPLY@6450..6476 + EXPR_VAR@6450..6454 + NAME@6450..6454 + IDENT@6450..6454 "keyF" + ARGS_DESC@6454..6476 + L_PAREN@6454..6455 "(" + ARG@6455..6475 + EXPR_INDEX_EXPR@6455..6475 + LHS_EXPR@6455..6456 + EXPR_VAR@6455..6456 + NAME@6455..6456 + IDENT@6455..6456 "a" + L_BRACK@6456..6457 "[" + EXPR_BINARY@6457..6474 + LHS_EXPR@6457..6470 + EXPR_APPLY@6457..6470 + EXPR_INDEX@6457..6467 + EXPR_VAR@6457..6460 + NAME@6457..6460 + IDENT@6457..6460 "std" + DOT@6460..6461 "." + NAME@6461..6467 + IDENT@6461..6467 "length" + ARGS_DESC@6467..6470 + L_PAREN@6467..6468 "(" + ARG@6468..6469 + EXPR_VAR@6468..6469 + NAME@6468..6469 + IDENT@6468..6469 "a" + R_PAREN@6469..6470 ")" + WHITESPACE@6470..6471 " " + MINUS@6471..6472 "-" + WHITESPACE@6472..6473 " " + EXPR_NUMBER@6473..6474 + FLOAT@6473..6474 "1" + R_BRACK@6474..6475 "]" + R_PAREN@6475..6476 ")" + WHITESPACE@6476..6477 " " + EQ@6477..6479 "==" + WHITESPACE@6479..6480 " " + EXPR_APPLY@6480..6487 + EXPR_VAR@6480..6484 + NAME@6480..6484 + IDENT@6480..6484 "keyF" + ARGS_DESC@6484..6487 + L_PAREN@6484..6485 "(" + ARG@6485..6486 + EXPR_VAR@6485..6486 + NAME@6485..6486 + IDENT@6485..6486 "b" + R_PAREN@6486..6487 ")" + WHITESPACE@6487..6488 " " + THEN_KW@6488..6492 "then" + WHITESPACE@6492..6501 "\n " + TRUE_EXPR@6501..6502 + EXPR_VAR@6501..6502 + NAME@6501..6502 + IDENT@6501..6502 "a" + WHITESPACE@6502..6509 "\n " + ELSE_KW@6509..6513 "else" + WHITESPACE@6513..6522 "\n " + FALSE_EXPR@6522..6529 + EXPR_BINARY@6522..6529 + LHS_EXPR@6522..6523 + EXPR_VAR@6522..6523 + NAME@6522..6523 + IDENT@6522..6523 "a" + WHITESPACE@6523..6524 " " + PLUS@6524..6525 "+" + WHITESPACE@6525..6526 " " + EXPR_ARRAY@6526..6529 + L_BRACK@6526..6527 "[" + EXPR_VAR@6527..6528 + NAME@6527..6528 + IDENT@6527..6528 "b" + R_BRACK@6528..6529 "]" + SEMI@6529..6530 ";" + WHITESPACE@6530..6535 "\n " + EXPR_APPLY@6535..6556 + EXPR_INDEX@6535..6544 + EXPR_VAR@6535..6538 + NAME@6535..6538 + IDENT@6535..6538 "std" + DOT@6538..6539 "." + NAME@6539..6544 + IDENT@6539..6544 "foldl" + ARGS_DESC@6544..6556 + L_PAREN@6544..6545 "(" + ARG@6545..6546 + EXPR_VAR@6545..6546 + NAME@6545..6546 + IDENT@6545..6546 "f" + COMMA@6546..6547 "," + WHITESPACE@6547..6548 " " + ARG@6548..6551 + EXPR_VAR@6548..6551 + NAME@6548..6551 + IDENT@6548..6551 "arr" + COMMA@6551..6552 "," + WHITESPACE@6552..6553 " " + ARG@6553..6555 + EXPR_ARRAY@6553..6555 + L_BRACK@6553..6554 "[" + R_BRACK@6554..6555 "]" + R_PAREN@6555..6556 ")" COMMA@6556..6557 "," WHITESPACE@6557..6561 "\n\n " - MEMBER_FIELD@6561..6620 - FIELD_METHOD@6561..6620 - FIELD_NAME_FIXED@6561..6564 - NAME@6561..6564 - IDENT@6561..6564 "set" - PARAMS_DESC@6564..6578 - L_PAREN@6564..6565 "(" - PARAM@6565..6568 - DESTRUCT_FULL@6565..6568 - NAME@6565..6568 - IDENT@6565..6568 "arr" - COMMA@6568..6569 "," - WHITESPACE@6569..6570 " " - PARAM@6570..6577 - DESTRUCT_FULL@6570..6574 - NAME@6570..6574 - IDENT@6570..6574 "keyF" - ASSIGN@6574..6575 "=" - EXPR_VAR@6575..6577 - NAME@6575..6577 - IDENT@6575..6577 "id" - R_PAREN@6577..6578 ")" - COLONCOLON@6578..6580 "::" - WHITESPACE@6580..6585 "\n " - EXPR_APPLY@6585..6620 - EXPR_INDEX@6585..6593 - EXPR_VAR@6585..6588 - NAME@6585..6588 - IDENT@6585..6588 "std" - DOT@6588..6589 "." - NAME@6589..6593 - IDENT@6589..6593 "uniq" - ARGS_DESC@6593..6620 - L_PAREN@6593..6594 "(" - ARG@6594..6613 - EXPR_APPLY@6594..6613 - EXPR_INDEX@6594..6602 - EXPR_VAR@6594..6597 - NAME@6594..6597 - IDENT@6594..6597 "std" - DOT@6597..6598 "." - NAME@6598..6602 - IDENT@6598..6602 "sort" - ARGS_DESC@6602..6613 - L_PAREN@6602..6603 "(" - ARG@6603..6606 - EXPR_VAR@6603..6606 - NAME@6603..6606 - IDENT@6603..6606 "arr" - COMMA@6606..6607 "," - WHITESPACE@6607..6608 " " - ARG@6608..6612 - EXPR_VAR@6608..6612 - NAME@6608..6612 - IDENT@6608..6612 "keyF" - R_PAREN@6612..6613 ")" - COMMA@6613..6614 "," - WHITESPACE@6614..6615 " " - ARG@6615..6619 - EXPR_VAR@6615..6619 - NAME@6615..6619 - IDENT@6615..6619 "keyF" - R_PAREN@6619..6620 ")" + MEMBER_FIELD_METHOD@6561..6620 + FIELD_NAME_FIXED@6561..6564 + NAME@6561..6564 + IDENT@6561..6564 "set" + PARAMS_DESC@6564..6578 + L_PAREN@6564..6565 "(" + PARAM@6565..6568 + DESTRUCT_FULL@6565..6568 + NAME@6565..6568 + IDENT@6565..6568 "arr" + COMMA@6568..6569 "," + WHITESPACE@6569..6570 " " + PARAM@6570..6577 + DESTRUCT_FULL@6570..6574 + NAME@6570..6574 + IDENT@6570..6574 "keyF" + ASSIGN@6574..6575 "=" + EXPR_VAR@6575..6577 + NAME@6575..6577 + IDENT@6575..6577 "id" + R_PAREN@6577..6578 ")" + COLONCOLON@6578..6580 "::" + WHITESPACE@6580..6585 "\n " + EXPR_APPLY@6585..6620 + EXPR_INDEX@6585..6593 + EXPR_VAR@6585..6588 + NAME@6585..6588 + IDENT@6585..6588 "std" + DOT@6588..6589 "." + NAME@6589..6593 + IDENT@6589..6593 "uniq" + ARGS_DESC@6593..6620 + L_PAREN@6593..6594 "(" + ARG@6594..6613 + EXPR_APPLY@6594..6613 + EXPR_INDEX@6594..6602 + EXPR_VAR@6594..6597 + NAME@6594..6597 + IDENT@6594..6597 "std" + DOT@6597..6598 "." + NAME@6598..6602 + IDENT@6598..6602 "sort" + ARGS_DESC@6602..6613 + L_PAREN@6602..6603 "(" + ARG@6603..6606 + EXPR_VAR@6603..6606 + NAME@6603..6606 + IDENT@6603..6606 "arr" + COMMA@6606..6607 "," + WHITESPACE@6607..6608 " " + ARG@6608..6612 + EXPR_VAR@6608..6612 + NAME@6608..6612 + IDENT@6608..6612 "keyF" + R_PAREN@6612..6613 ")" + COMMA@6613..6614 "," + WHITESPACE@6614..6615 " " + ARG@6615..6619 + EXPR_VAR@6615..6619 + NAME@6615..6619 + IDENT@6615..6619 "keyF" + R_PAREN@6619..6620 ")" COMMA@6620..6621 "," WHITESPACE@6621..6625 "\n\n " - MEMBER_FIELD@6625..6760 - FIELD_METHOD@6625..6760 - FIELD_NAME_FIXED@6625..6634 - NAME@6625..6634 - IDENT@6625..6634 "setMember" - PARAMS_DESC@6634..6651 - L_PAREN@6634..6635 "(" - PARAM@6635..6636 - DESTRUCT_FULL@6635..6636 - NAME@6635..6636 - IDENT@6635..6636 "x" - COMMA@6636..6637 "," - WHITESPACE@6637..6638 " " - PARAM@6638..6641 - DESTRUCT_FULL@6638..6641 - NAME@6638..6641 - IDENT@6638..6641 "arr" - COMMA@6641..6642 "," - WHITESPACE@6642..6643 " " - PARAM@6643..6650 - DESTRUCT_FULL@6643..6647 - NAME@6643..6647 - IDENT@6643..6647 "keyF" - ASSIGN@6647..6648 "=" - EXPR_VAR@6648..6650 - NAME@6648..6650 - IDENT@6648..6650 "id" - R_PAREN@6650..6651 ")" - COLONCOLON@6651..6653 "::" - WHITESPACE@6653..6658 "\n " - SINGLE_LINE_SLASH_COMMENT@6658..6712 "// TODO(dcunnin): Bin ..." - WHITESPACE@6712..6716 " " - EXPR_BINARY@6716..6760 - LHS_EXPR@6716..6756 - EXPR_APPLY@6716..6756 - EXPR_INDEX@6716..6726 - EXPR_VAR@6716..6719 - NAME@6716..6719 - IDENT@6716..6719 "std" - DOT@6719..6720 "." - NAME@6720..6726 - IDENT@6720..6726 "length" - ARGS_DESC@6726..6756 - L_PAREN@6726..6727 "(" - ARG@6727..6755 - EXPR_APPLY@6727..6755 - EXPR_INDEX@6727..6739 - EXPR_VAR@6727..6730 - NAME@6727..6730 - IDENT@6727..6730 "std" - DOT@6730..6731 "." - NAME@6731..6739 - IDENT@6731..6739 "setInter" - ARGS_DESC@6739..6755 - L_PAREN@6739..6740 "(" - ARG@6740..6743 - EXPR_ARRAY@6740..6743 - L_BRACK@6740..6741 "[" - EXPR_VAR@6741..6742 - NAME@6741..6742 - IDENT@6741..6742 "x" - R_BRACK@6742..6743 "]" - COMMA@6743..6744 "," - WHITESPACE@6744..6745 " " - ARG@6745..6748 - EXPR_VAR@6745..6748 - NAME@6745..6748 - IDENT@6745..6748 "arr" - COMMA@6748..6749 "," - WHITESPACE@6749..6750 " " - ARG@6750..6754 - EXPR_VAR@6750..6754 - NAME@6750..6754 - IDENT@6750..6754 "keyF" - R_PAREN@6754..6755 ")" - R_PAREN@6755..6756 ")" - WHITESPACE@6756..6757 " " - GT@6757..6758 ">" - WHITESPACE@6758..6759 " " - EXPR_NUMBER@6759..6760 - FLOAT@6759..6760 "0" + MEMBER_FIELD_METHOD@6625..6760 + FIELD_NAME_FIXED@6625..6634 + NAME@6625..6634 + IDENT@6625..6634 "setMember" + PARAMS_DESC@6634..6651 + L_PAREN@6634..6635 "(" + PARAM@6635..6636 + DESTRUCT_FULL@6635..6636 + NAME@6635..6636 + IDENT@6635..6636 "x" + COMMA@6636..6637 "," + WHITESPACE@6637..6638 " " + PARAM@6638..6641 + DESTRUCT_FULL@6638..6641 + NAME@6638..6641 + IDENT@6638..6641 "arr" + COMMA@6641..6642 "," + WHITESPACE@6642..6643 " " + PARAM@6643..6650 + DESTRUCT_FULL@6643..6647 + NAME@6643..6647 + IDENT@6643..6647 "keyF" + ASSIGN@6647..6648 "=" + EXPR_VAR@6648..6650 + NAME@6648..6650 + IDENT@6648..6650 "id" + R_PAREN@6650..6651 ")" + COLONCOLON@6651..6653 "::" + WHITESPACE@6653..6658 "\n " + SINGLE_LINE_SLASH_COMMENT@6658..6712 "// TODO(dcunnin): Bin ..." + WHITESPACE@6712..6716 " " + EXPR_BINARY@6716..6760 + LHS_EXPR@6716..6756 + EXPR_APPLY@6716..6756 + EXPR_INDEX@6716..6726 + EXPR_VAR@6716..6719 + NAME@6716..6719 + IDENT@6716..6719 "std" + DOT@6719..6720 "." + NAME@6720..6726 + IDENT@6720..6726 "length" + ARGS_DESC@6726..6756 + L_PAREN@6726..6727 "(" + ARG@6727..6755 + EXPR_APPLY@6727..6755 + EXPR_INDEX@6727..6739 + EXPR_VAR@6727..6730 + NAME@6727..6730 + IDENT@6727..6730 "std" + DOT@6730..6731 "." + NAME@6731..6739 + IDENT@6731..6739 "setInter" + ARGS_DESC@6739..6755 + L_PAREN@6739..6740 "(" + ARG@6740..6743 + EXPR_ARRAY@6740..6743 + L_BRACK@6740..6741 "[" + EXPR_VAR@6741..6742 + NAME@6741..6742 + IDENT@6741..6742 "x" + R_BRACK@6742..6743 "]" + COMMA@6743..6744 "," + WHITESPACE@6744..6745 " " + ARG@6745..6748 + EXPR_VAR@6745..6748 + NAME@6745..6748 + IDENT@6745..6748 "arr" + COMMA@6748..6749 "," + WHITESPACE@6749..6750 " " + ARG@6750..6754 + EXPR_VAR@6750..6754 + NAME@6750..6754 + IDENT@6750..6754 "keyF" + R_PAREN@6754..6755 ")" + R_PAREN@6755..6756 ")" + WHITESPACE@6756..6757 " " + GT@6757..6758 ">" + WHITESPACE@6758..6759 " " + EXPR_NUMBER@6759..6760 + FLOAT@6759..6760 "0" COMMA@6760..6761 "," WHITESPACE@6761..6765 "\n\n " - MEMBER_FIELD@6765..7314 - FIELD_METHOD@6765..7314 - FIELD_NAME_FIXED@6765..6773 - NAME@6765..6773 - IDENT@6765..6773 "setUnion" - PARAMS_DESC@6773..6788 - L_PAREN@6773..6774 "(" - PARAM@6774..6775 - DESTRUCT_FULL@6774..6775 - NAME@6774..6775 - IDENT@6774..6775 "a" - COMMA@6775..6776 "," - WHITESPACE@6776..6777 " " - PARAM@6777..6778 - DESTRUCT_FULL@6777..6778 - NAME@6777..6778 - IDENT@6777..6778 "b" - COMMA@6778..6779 "," - WHITESPACE@6779..6780 " " - PARAM@6780..6787 - DESTRUCT_FULL@6780..6784 - NAME@6780..6784 - IDENT@6780..6784 "keyF" - ASSIGN@6784..6785 "=" - EXPR_VAR@6785..6787 - NAME@6785..6787 - IDENT@6785..6787 "id" - R_PAREN@6787..6788 ")" - COLONCOLON@6788..6790 "::" - WHITESPACE@6790..6795 "\n " - SINGLE_LINE_SLASH_COMMENT@6795..6837 "// NOTE: order matter ..." - WHITESPACE@6837..6841 " " - EXPR_LOCAL@6841..7314 - LOCAL_KW@6841..6846 "local" - WHITESPACE@6846..6847 " " - BIND_FUNCTION@6847..7289 - NAME@6847..6850 - IDENT@6847..6850 "aux" - PARAMS_DESC@6850..6867 - L_PAREN@6850..6851 "(" - PARAM@6851..6852 - DESTRUCT_FULL@6851..6852 - NAME@6851..6852 - IDENT@6851..6852 "a" - COMMA@6852..6853 "," - WHITESPACE@6853..6854 " " - PARAM@6854..6855 - DESTRUCT_FULL@6854..6855 - NAME@6854..6855 - IDENT@6854..6855 "b" - COMMA@6855..6856 "," - WHITESPACE@6856..6857 " " - PARAM@6857..6858 - DESTRUCT_FULL@6857..6858 - NAME@6857..6858 - IDENT@6857..6858 "i" - COMMA@6858..6859 "," - WHITESPACE@6859..6860 " " - PARAM@6860..6861 - DESTRUCT_FULL@6860..6861 - NAME@6860..6861 - IDENT@6860..6861 "j" - COMMA@6861..6862 "," - WHITESPACE@6862..6863 " " - PARAM@6863..6866 - DESTRUCT_FULL@6863..6866 - NAME@6863..6866 - IDENT@6863..6866 "acc" - R_PAREN@6866..6867 ")" - WHITESPACE@6867..6868 " " - ASSIGN@6868..6869 "=" - WHITESPACE@6869..6876 "\n " - EXPR_IF_THEN_ELSE@6876..7289 - IF_KW@6876..6878 "if" - WHITESPACE@6878..6879 " " - EXPR_BINARY@6879..6897 - LHS_EXPR@6879..6880 - EXPR_VAR@6879..6880 - NAME@6879..6880 - IDENT@6879..6880 "i" - WHITESPACE@6880..6881 " " - GE@6881..6883 ">=" - WHITESPACE@6883..6884 " " - EXPR_APPLY@6884..6897 - EXPR_INDEX@6884..6894 - EXPR_VAR@6884..6887 - NAME@6884..6887 - IDENT@6884..6887 "std" - DOT@6887..6888 "." - NAME@6888..6894 - IDENT@6888..6894 "length" - ARGS_DESC@6894..6897 - L_PAREN@6894..6895 "(" - ARG@6895..6896 - EXPR_VAR@6895..6896 - NAME@6895..6896 - IDENT@6895..6896 "a" - R_PAREN@6896..6897 ")" - WHITESPACE@6897..6898 " " - THEN_KW@6898..6902 "then" - WHITESPACE@6902..6911 "\n " - TRUE_EXPR@6911..6922 - EXPR_BINARY@6911..6922 - LHS_EXPR@6911..6914 - EXPR_VAR@6911..6914 - NAME@6911..6914 - IDENT@6911..6914 "acc" - WHITESPACE@6914..6915 " " - PLUS@6915..6916 "+" - WHITESPACE@6916..6917 " " - EXPR_SLICE@6917..6922 - EXPR_VAR@6917..6918 - NAME@6917..6918 - IDENT@6917..6918 "b" - SLICE_DESC@6918..6922 - L_BRACK@6918..6919 "[" - EXPR_VAR@6919..6920 - NAME@6919..6920 - IDENT@6919..6920 "j" - COLON@6920..6921 ":" - R_BRACK@6921..6922 "]" - WHITESPACE@6922..6929 "\n " - ELSE_KW@6929..6933 "else" - WHITESPACE@6933..6934 " " - FALSE_EXPR@6934..7289 - EXPR_IF_THEN_ELSE@6934..7289 - IF_KW@6934..6936 "if" - WHITESPACE@6936..6937 " " - EXPR_BINARY@6937..6955 - LHS_EXPR@6937..6938 - EXPR_VAR@6937..6938 - NAME@6937..6938 - IDENT@6937..6938 "j" - WHITESPACE@6938..6939 " " - GE@6939..6941 ">=" - WHITESPACE@6941..6942 " " - EXPR_APPLY@6942..6955 - EXPR_INDEX@6942..6952 - EXPR_VAR@6942..6945 - NAME@6942..6945 - IDENT@6942..6945 "std" - DOT@6945..6946 "." - NAME@6946..6952 - IDENT@6946..6952 "length" - ARGS_DESC@6952..6955 - L_PAREN@6952..6953 "(" - ARG@6953..6954 - EXPR_VAR@6953..6954 - NAME@6953..6954 - IDENT@6953..6954 "b" - R_PAREN@6954..6955 ")" - WHITESPACE@6955..6956 " " - THEN_KW@6956..6960 "then" - WHITESPACE@6960..6969 "\n " - TRUE_EXPR@6969..6980 - EXPR_BINARY@6969..6980 - LHS_EXPR@6969..6972 - EXPR_VAR@6969..6972 - NAME@6969..6972 - IDENT@6969..6972 "acc" - WHITESPACE@6972..6973 " " - PLUS@6973..6974 "+" - WHITESPACE@6974..6975 " " - EXPR_SLICE@6975..6980 - EXPR_VAR@6975..6976 - NAME@6975..6976 - IDENT@6975..6976 "a" - SLICE_DESC@6976..6980 - L_BRACK@6976..6977 "[" - EXPR_VAR@6977..6978 - NAME@6977..6978 - IDENT@6977..6978 "i" - COLON@6978..6979 ":" - R_BRACK@6979..6980 "]" - WHITESPACE@6980..6987 "\n " - ELSE_KW@6987..6991 "else" - WHITESPACE@6991..7000 "\n " - FALSE_EXPR@7000..7289 - EXPR_LOCAL@7000..7289 - LOCAL_KW@7000..7005 "local" - WHITESPACE@7005..7006 " " - BIND_DESTRUCT@7006..7021 - DESTRUCT_FULL@7006..7008 - NAME@7006..7008 - IDENT@7006..7008 "ak" - WHITESPACE@7008..7009 " " - ASSIGN@7009..7010 "=" - WHITESPACE@7010..7011 " " - EXPR_APPLY@7011..7021 - EXPR_VAR@7011..7015 - NAME@7011..7015 - IDENT@7011..7015 "keyF" - ARGS_DESC@7015..7021 - L_PAREN@7015..7016 "(" - ARG@7016..7020 - EXPR_INDEX_EXPR@7016..7020 - LHS_EXPR@7016..7017 - EXPR_VAR@7016..7017 - NAME@7016..7017 - IDENT@7016..7017 "a" - L_BRACK@7017..7018 "[" - EXPR_VAR@7018..7019 - NAME@7018..7019 - IDENT@7018..7019 "i" - R_BRACK@7019..7020 "]" - R_PAREN@7020..7021 ")" - SEMI@7021..7022 ";" - WHITESPACE@7022..7031 "\n " - EXPR_LOCAL@7031..7289 - LOCAL_KW@7031..7036 "local" - WHITESPACE@7036..7037 " " - BIND_DESTRUCT@7037..7052 - DESTRUCT_FULL@7037..7039 - NAME@7037..7039 - IDENT@7037..7039 "bk" - WHITESPACE@7039..7040 " " - ASSIGN@7040..7041 "=" - WHITESPACE@7041..7042 " " - EXPR_APPLY@7042..7052 - EXPR_VAR@7042..7046 - NAME@7042..7046 - IDENT@7042..7046 "keyF" - ARGS_DESC@7046..7052 - L_PAREN@7046..7047 "(" - ARG@7047..7051 - EXPR_INDEX_EXPR@7047..7051 - LHS_EXPR@7047..7048 - EXPR_VAR@7047..7048 - NAME@7047..7048 - IDENT@7047..7048 "b" - L_BRACK@7048..7049 "[" - EXPR_VAR@7049..7050 - NAME@7049..7050 - IDENT@7049..7050 "j" - R_BRACK@7050..7051 "]" - R_PAREN@7051..7052 ")" - SEMI@7052..7053 ";" - WHITESPACE@7053..7062 "\n " - EXPR_IF_THEN_ELSE@7062..7289 - IF_KW@7062..7064 "if" - WHITESPACE@7064..7065 " " - EXPR_BINARY@7065..7073 - LHS_EXPR@7065..7067 - EXPR_VAR@7065..7067 - NAME@7065..7067 - IDENT@7065..7067 "ak" - WHITESPACE@7067..7068 " " - EQ@7068..7070 "==" - WHITESPACE@7070..7071 " " - EXPR_VAR@7071..7073 - NAME@7071..7073 - IDENT@7071..7073 "bk" - WHITESPACE@7073..7074 " " - THEN_KW@7074..7078 "then" - WHITESPACE@7078..7089 "\n " - TRUE_EXPR@7089..7137 - EXPR_APPLY@7089..7137 - EXPR_VAR@7089..7092 - NAME@7089..7092 - IDENT@7089..7092 "aux" - ARGS_DESC@7092..7137 - L_PAREN@7092..7093 "(" - ARG@7093..7094 - EXPR_VAR@7093..7094 - NAME@7093..7094 - IDENT@7093..7094 "a" - COMMA@7094..7095 "," - WHITESPACE@7095..7096 " " - ARG@7096..7097 - EXPR_VAR@7096..7097 - NAME@7096..7097 - IDENT@7096..7097 "b" - COMMA@7097..7098 "," - WHITESPACE@7098..7099 " " - ARG@7099..7104 - EXPR_BINARY@7099..7104 - LHS_EXPR@7099..7100 - EXPR_VAR@7099..7100 - NAME@7099..7100 - IDENT@7099..7100 "i" - WHITESPACE@7100..7101 " " - PLUS@7101..7102 "+" - WHITESPACE@7102..7103 " " - EXPR_NUMBER@7103..7104 - FLOAT@7103..7104 "1" - COMMA@7104..7105 "," - WHITESPACE@7105..7106 " " - ARG@7106..7111 - EXPR_BINARY@7106..7111 - LHS_EXPR@7106..7107 - EXPR_VAR@7106..7107 - NAME@7106..7107 - IDENT@7106..7107 "j" - WHITESPACE@7107..7108 " " - PLUS@7108..7109 "+" - WHITESPACE@7109..7110 " " - EXPR_NUMBER@7110..7111 - FLOAT@7110..7111 "1" - COMMA@7111..7112 "," - WHITESPACE@7112..7113 " " - ARG@7113..7125 - EXPR_BINARY@7113..7125 - LHS_EXPR@7113..7116 - EXPR_VAR@7113..7116 - NAME@7113..7116 - IDENT@7113..7116 "acc" - WHITESPACE@7116..7117 " " - PLUS@7117..7118 "+" - WHITESPACE@7118..7119 " " - EXPR_ARRAY@7119..7125 - L_BRACK@7119..7120 "[" - EXPR_INDEX_EXPR@7120..7124 - LHS_EXPR@7120..7121 - EXPR_VAR@7120..7121 - NAME@7120..7121 - IDENT@7120..7121 "a" - L_BRACK@7121..7122 "[" - EXPR_VAR@7122..7123 - NAME@7122..7123 - IDENT@7122..7123 "i" - R_BRACK@7123..7124 "]" - R_BRACK@7124..7125 "]" - R_PAREN@7125..7126 ")" - WHITESPACE@7126..7127 " " - TAILSTRICT_KW@7127..7137 "tailstrict" - WHITESPACE@7137..7146 "\n " - ELSE_KW@7146..7150 "else" - WHITESPACE@7150..7151 " " - FALSE_EXPR@7151..7289 - EXPR_IF_THEN_ELSE@7151..7289 - IF_KW@7151..7153 "if" - WHITESPACE@7153..7154 " " - EXPR_BINARY@7154..7161 - LHS_EXPR@7154..7156 - EXPR_VAR@7154..7156 - NAME@7154..7156 - IDENT@7154..7156 "ak" - WHITESPACE@7156..7157 " " - LT@7157..7158 "<" - WHITESPACE@7158..7159 " " - EXPR_VAR@7159..7161 - NAME@7159..7161 - IDENT@7159..7161 "bk" - WHITESPACE@7161..7162 " " - THEN_KW@7162..7166 "then" - WHITESPACE@7166..7177 "\n " - TRUE_EXPR@7177..7221 - EXPR_APPLY@7177..7221 - EXPR_VAR@7177..7180 - NAME@7177..7180 - IDENT@7177..7180 "aux" - ARGS_DESC@7180..7221 - L_PAREN@7180..7181 "(" - ARG@7181..7182 - EXPR_VAR@7181..7182 - NAME@7181..7182 - IDENT@7181..7182 "a" - COMMA@7182..7183 "," - WHITESPACE@7183..7184 " " - ARG@7184..7185 - EXPR_VAR@7184..7185 - NAME@7184..7185 - IDENT@7184..7185 "b" - COMMA@7185..7186 "," - WHITESPACE@7186..7187 " " - ARG@7187..7192 - EXPR_BINARY@7187..7192 - LHS_EXPR@7187..7188 - EXPR_VAR@7187..7188 - NAME@7187..7188 - IDENT@7187..7188 "i" - WHITESPACE@7188..7189 " " - PLUS@7189..7190 "+" - WHITESPACE@7190..7191 " " - EXPR_NUMBER@7191..7192 - FLOAT@7191..7192 "1" - COMMA@7192..7193 "," - WHITESPACE@7193..7194 " " - ARG@7194..7195 - EXPR_VAR@7194..7195 - NAME@7194..7195 - IDENT@7194..7195 "j" - COMMA@7195..7196 "," - WHITESPACE@7196..7197 " " - ARG@7197..7209 - EXPR_BINARY@7197..7209 - LHS_EXPR@7197..7200 - EXPR_VAR@7197..7200 - NAME@7197..7200 - IDENT@7197..7200 "acc" - WHITESPACE@7200..7201 " " - PLUS@7201..7202 "+" - WHITESPACE@7202..7203 " " - EXPR_ARRAY@7203..7209 - L_BRACK@7203..7204 "[" - EXPR_INDEX_EXPR@7204..7208 - LHS_EXPR@7204..7205 - EXPR_VAR@7204..7205 - NAME@7204..7205 - IDENT@7204..7205 "a" - L_BRACK@7205..7206 "[" - EXPR_VAR@7206..7207 - NAME@7206..7207 - IDENT@7206..7207 "i" - R_BRACK@7207..7208 "]" - R_BRACK@7208..7209 "]" - R_PAREN@7209..7210 ")" - WHITESPACE@7210..7211 " " - TAILSTRICT_KW@7211..7221 "tailstrict" - WHITESPACE@7221..7230 "\n " - ELSE_KW@7230..7234 "else" - WHITESPACE@7234..7245 "\n " - FALSE_EXPR@7245..7289 - EXPR_APPLY@7245..7289 - EXPR_VAR@7245..7248 - NAME@7245..7248 - IDENT@7245..7248 "aux" - ARGS_DESC@7248..7289 - L_PAREN@7248..7249 "(" - ARG@7249..7250 - EXPR_VAR@7249..7250 - NAME@7249..7250 - IDENT@7249..7250 "a" - COMMA@7250..7251 "," - WHITESPACE@7251..7252 " " - ARG@7252..7253 - EXPR_VAR@7252..7253 - NAME@7252..7253 - IDENT@7252..7253 "b" - COMMA@7253..7254 "," - WHITESPACE@7254..7255 " " - ARG@7255..7256 - EXPR_VAR@7255..7256 - NAME@7255..7256 - IDENT@7255..7256 "i" - COMMA@7256..7257 "," - WHITESPACE@7257..7258 " " - ARG@7258..7263 - EXPR_BINARY@7258..7263 - LHS_EXPR@7258..7259 - EXPR_VAR@7258..7259 - NAME@7258..7259 - IDENT@7258..7259 "j" - WHITESPACE@7259..7260 " " - PLUS@7260..7261 "+" - WHITESPACE@7261..7262 " " - EXPR_NUMBER@7262..7263 - FLOAT@7262..7263 "1" - COMMA@7263..7264 "," - WHITESPACE@7264..7265 " " - ARG@7265..7277 - EXPR_BINARY@7265..7277 - LHS_EXPR@7265..7268 - EXPR_VAR@7265..7268 - NAME@7265..7268 - IDENT@7265..7268 "acc" - WHITESPACE@7268..7269 " " - PLUS@7269..7270 "+" - WHITESPACE@7270..7271 " " - EXPR_ARRAY@7271..7277 - L_BRACK@7271..7272 "[" - EXPR_INDEX_EXPR@7272..7276 - LHS_EXPR@7272..7273 - EXPR_VAR@7272..7273 - NAME@7272..7273 - IDENT@7272..7273 "b" - L_BRACK@7273..7274 "[" - EXPR_VAR@7274..7275 - NAME@7274..7275 - IDENT@7274..7275 "j" - R_BRACK@7275..7276 "]" - R_BRACK@7276..7277 "]" - R_PAREN@7277..7278 ")" - WHITESPACE@7278..7279 " " - TAILSTRICT_KW@7279..7289 "tailstrict" - SEMI@7289..7290 ";" - WHITESPACE@7290..7295 "\n " - EXPR_APPLY@7295..7314 - EXPR_VAR@7295..7298 - NAME@7295..7298 - IDENT@7295..7298 "aux" - ARGS_DESC@7298..7314 - L_PAREN@7298..7299 "(" - ARG@7299..7300 - EXPR_VAR@7299..7300 - NAME@7299..7300 - IDENT@7299..7300 "a" - COMMA@7300..7301 "," - WHITESPACE@7301..7302 " " - ARG@7302..7303 - EXPR_VAR@7302..7303 - NAME@7302..7303 - IDENT@7302..7303 "b" - COMMA@7303..7304 "," - WHITESPACE@7304..7305 " " - ARG@7305..7306 - EXPR_NUMBER@7305..7306 - FLOAT@7305..7306 "0" - COMMA@7306..7307 "," - WHITESPACE@7307..7308 " " - ARG@7308..7309 - EXPR_NUMBER@7308..7309 - FLOAT@7308..7309 "0" - COMMA@7309..7310 "," - WHITESPACE@7310..7311 " " - ARG@7311..7313 - EXPR_ARRAY@7311..7313 - L_BRACK@7311..7312 "[" - R_BRACK@7312..7313 "]" - R_PAREN@7313..7314 ")" + MEMBER_FIELD_METHOD@6765..7314 + FIELD_NAME_FIXED@6765..6773 + NAME@6765..6773 + IDENT@6765..6773 "setUnion" + PARAMS_DESC@6773..6788 + L_PAREN@6773..6774 "(" + PARAM@6774..6775 + DESTRUCT_FULL@6774..6775 + NAME@6774..6775 + IDENT@6774..6775 "a" + COMMA@6775..6776 "," + WHITESPACE@6776..6777 " " + PARAM@6777..6778 + DESTRUCT_FULL@6777..6778 + NAME@6777..6778 + IDENT@6777..6778 "b" + COMMA@6778..6779 "," + WHITESPACE@6779..6780 " " + PARAM@6780..6787 + DESTRUCT_FULL@6780..6784 + NAME@6780..6784 + IDENT@6780..6784 "keyF" + ASSIGN@6784..6785 "=" + EXPR_VAR@6785..6787 + NAME@6785..6787 + IDENT@6785..6787 "id" + R_PAREN@6787..6788 ")" + COLONCOLON@6788..6790 "::" + WHITESPACE@6790..6795 "\n " + SINGLE_LINE_SLASH_COMMENT@6795..6837 "// NOTE: order matter ..." + WHITESPACE@6837..6841 " " + EXPR_LOCAL@6841..7314 + LOCAL_KW@6841..6846 "local" + WHITESPACE@6846..6847 " " + BIND_FUNCTION@6847..7289 + NAME@6847..6850 + IDENT@6847..6850 "aux" + PARAMS_DESC@6850..6867 + L_PAREN@6850..6851 "(" + PARAM@6851..6852 + DESTRUCT_FULL@6851..6852 + NAME@6851..6852 + IDENT@6851..6852 "a" + COMMA@6852..6853 "," + WHITESPACE@6853..6854 " " + PARAM@6854..6855 + DESTRUCT_FULL@6854..6855 + NAME@6854..6855 + IDENT@6854..6855 "b" + COMMA@6855..6856 "," + WHITESPACE@6856..6857 " " + PARAM@6857..6858 + DESTRUCT_FULL@6857..6858 + NAME@6857..6858 + IDENT@6857..6858 "i" + COMMA@6858..6859 "," + WHITESPACE@6859..6860 " " + PARAM@6860..6861 + DESTRUCT_FULL@6860..6861 + NAME@6860..6861 + IDENT@6860..6861 "j" + COMMA@6861..6862 "," + WHITESPACE@6862..6863 " " + PARAM@6863..6866 + DESTRUCT_FULL@6863..6866 + NAME@6863..6866 + IDENT@6863..6866 "acc" + R_PAREN@6866..6867 ")" + WHITESPACE@6867..6868 " " + ASSIGN@6868..6869 "=" + WHITESPACE@6869..6876 "\n " + EXPR_IF_THEN_ELSE@6876..7289 + IF_KW@6876..6878 "if" + WHITESPACE@6878..6879 " " + EXPR_BINARY@6879..6897 + LHS_EXPR@6879..6880 + EXPR_VAR@6879..6880 + NAME@6879..6880 + IDENT@6879..6880 "i" + WHITESPACE@6880..6881 " " + GE@6881..6883 ">=" + WHITESPACE@6883..6884 " " + EXPR_APPLY@6884..6897 + EXPR_INDEX@6884..6894 + EXPR_VAR@6884..6887 + NAME@6884..6887 + IDENT@6884..6887 "std" + DOT@6887..6888 "." + NAME@6888..6894 + IDENT@6888..6894 "length" + ARGS_DESC@6894..6897 + L_PAREN@6894..6895 "(" + ARG@6895..6896 + EXPR_VAR@6895..6896 + NAME@6895..6896 + IDENT@6895..6896 "a" + R_PAREN@6896..6897 ")" + WHITESPACE@6897..6898 " " + THEN_KW@6898..6902 "then" + WHITESPACE@6902..6911 "\n " + TRUE_EXPR@6911..6922 + EXPR_BINARY@6911..6922 + LHS_EXPR@6911..6914 + EXPR_VAR@6911..6914 + NAME@6911..6914 + IDENT@6911..6914 "acc" + WHITESPACE@6914..6915 " " + PLUS@6915..6916 "+" + WHITESPACE@6916..6917 " " + EXPR_SLICE@6917..6922 + EXPR_VAR@6917..6918 + NAME@6917..6918 + IDENT@6917..6918 "b" + SLICE_DESC@6918..6922 + L_BRACK@6918..6919 "[" + EXPR_VAR@6919..6920 + NAME@6919..6920 + IDENT@6919..6920 "j" + COLON@6920..6921 ":" + R_BRACK@6921..6922 "]" + WHITESPACE@6922..6929 "\n " + ELSE_KW@6929..6933 "else" + WHITESPACE@6933..6934 " " + FALSE_EXPR@6934..7289 + EXPR_IF_THEN_ELSE@6934..7289 + IF_KW@6934..6936 "if" + WHITESPACE@6936..6937 " " + EXPR_BINARY@6937..6955 + LHS_EXPR@6937..6938 + EXPR_VAR@6937..6938 + NAME@6937..6938 + IDENT@6937..6938 "j" + WHITESPACE@6938..6939 " " + GE@6939..6941 ">=" + WHITESPACE@6941..6942 " " + EXPR_APPLY@6942..6955 + EXPR_INDEX@6942..6952 + EXPR_VAR@6942..6945 + NAME@6942..6945 + IDENT@6942..6945 "std" + DOT@6945..6946 "." + NAME@6946..6952 + IDENT@6946..6952 "length" + ARGS_DESC@6952..6955 + L_PAREN@6952..6953 "(" + ARG@6953..6954 + EXPR_VAR@6953..6954 + NAME@6953..6954 + IDENT@6953..6954 "b" + R_PAREN@6954..6955 ")" + WHITESPACE@6955..6956 " " + THEN_KW@6956..6960 "then" + WHITESPACE@6960..6969 "\n " + TRUE_EXPR@6969..6980 + EXPR_BINARY@6969..6980 + LHS_EXPR@6969..6972 + EXPR_VAR@6969..6972 + NAME@6969..6972 + IDENT@6969..6972 "acc" + WHITESPACE@6972..6973 " " + PLUS@6973..6974 "+" + WHITESPACE@6974..6975 " " + EXPR_SLICE@6975..6980 + EXPR_VAR@6975..6976 + NAME@6975..6976 + IDENT@6975..6976 "a" + SLICE_DESC@6976..6980 + L_BRACK@6976..6977 "[" + EXPR_VAR@6977..6978 + NAME@6977..6978 + IDENT@6977..6978 "i" + COLON@6978..6979 ":" + R_BRACK@6979..6980 "]" + WHITESPACE@6980..6987 "\n " + ELSE_KW@6987..6991 "else" + WHITESPACE@6991..7000 "\n " + FALSE_EXPR@7000..7289 + EXPR_LOCAL@7000..7289 + LOCAL_KW@7000..7005 "local" + WHITESPACE@7005..7006 " " + BIND_DESTRUCT@7006..7021 + DESTRUCT_FULL@7006..7008 + NAME@7006..7008 + IDENT@7006..7008 "ak" + WHITESPACE@7008..7009 " " + ASSIGN@7009..7010 "=" + WHITESPACE@7010..7011 " " + EXPR_APPLY@7011..7021 + EXPR_VAR@7011..7015 + NAME@7011..7015 + IDENT@7011..7015 "keyF" + ARGS_DESC@7015..7021 + L_PAREN@7015..7016 "(" + ARG@7016..7020 + EXPR_INDEX_EXPR@7016..7020 + LHS_EXPR@7016..7017 + EXPR_VAR@7016..7017 + NAME@7016..7017 + IDENT@7016..7017 "a" + L_BRACK@7017..7018 "[" + EXPR_VAR@7018..7019 + NAME@7018..7019 + IDENT@7018..7019 "i" + R_BRACK@7019..7020 "]" + R_PAREN@7020..7021 ")" + SEMI@7021..7022 ";" + WHITESPACE@7022..7031 "\n " + EXPR_LOCAL@7031..7289 + LOCAL_KW@7031..7036 "local" + WHITESPACE@7036..7037 " " + BIND_DESTRUCT@7037..7052 + DESTRUCT_FULL@7037..7039 + NAME@7037..7039 + IDENT@7037..7039 "bk" + WHITESPACE@7039..7040 " " + ASSIGN@7040..7041 "=" + WHITESPACE@7041..7042 " " + EXPR_APPLY@7042..7052 + EXPR_VAR@7042..7046 + NAME@7042..7046 + IDENT@7042..7046 "keyF" + ARGS_DESC@7046..7052 + L_PAREN@7046..7047 "(" + ARG@7047..7051 + EXPR_INDEX_EXPR@7047..7051 + LHS_EXPR@7047..7048 + EXPR_VAR@7047..7048 + NAME@7047..7048 + IDENT@7047..7048 "b" + L_BRACK@7048..7049 "[" + EXPR_VAR@7049..7050 + NAME@7049..7050 + IDENT@7049..7050 "j" + R_BRACK@7050..7051 "]" + R_PAREN@7051..7052 ")" + SEMI@7052..7053 ";" + WHITESPACE@7053..7062 "\n " + EXPR_IF_THEN_ELSE@7062..7289 + IF_KW@7062..7064 "if" + WHITESPACE@7064..7065 " " + EXPR_BINARY@7065..7073 + LHS_EXPR@7065..7067 + EXPR_VAR@7065..7067 + NAME@7065..7067 + IDENT@7065..7067 "ak" + WHITESPACE@7067..7068 " " + EQ@7068..7070 "==" + WHITESPACE@7070..7071 " " + EXPR_VAR@7071..7073 + NAME@7071..7073 + IDENT@7071..7073 "bk" + WHITESPACE@7073..7074 " " + THEN_KW@7074..7078 "then" + WHITESPACE@7078..7089 "\n " + TRUE_EXPR@7089..7137 + EXPR_APPLY@7089..7137 + EXPR_VAR@7089..7092 + NAME@7089..7092 + IDENT@7089..7092 "aux" + ARGS_DESC@7092..7137 + L_PAREN@7092..7093 "(" + ARG@7093..7094 + EXPR_VAR@7093..7094 + NAME@7093..7094 + IDENT@7093..7094 "a" + COMMA@7094..7095 "," + WHITESPACE@7095..7096 " " + ARG@7096..7097 + EXPR_VAR@7096..7097 + NAME@7096..7097 + IDENT@7096..7097 "b" + COMMA@7097..7098 "," + WHITESPACE@7098..7099 " " + ARG@7099..7104 + EXPR_BINARY@7099..7104 + LHS_EXPR@7099..7100 + EXPR_VAR@7099..7100 + NAME@7099..7100 + IDENT@7099..7100 "i" + WHITESPACE@7100..7101 " " + PLUS@7101..7102 "+" + WHITESPACE@7102..7103 " " + EXPR_NUMBER@7103..7104 + FLOAT@7103..7104 "1" + COMMA@7104..7105 "," + WHITESPACE@7105..7106 " " + ARG@7106..7111 + EXPR_BINARY@7106..7111 + LHS_EXPR@7106..7107 + EXPR_VAR@7106..7107 + NAME@7106..7107 + IDENT@7106..7107 "j" + WHITESPACE@7107..7108 " " + PLUS@7108..7109 "+" + WHITESPACE@7109..7110 " " + EXPR_NUMBER@7110..7111 + FLOAT@7110..7111 "1" + COMMA@7111..7112 "," + WHITESPACE@7112..7113 " " + ARG@7113..7125 + EXPR_BINARY@7113..7125 + LHS_EXPR@7113..7116 + EXPR_VAR@7113..7116 + NAME@7113..7116 + IDENT@7113..7116 "acc" + WHITESPACE@7116..7117 " " + PLUS@7117..7118 "+" + WHITESPACE@7118..7119 " " + EXPR_ARRAY@7119..7125 + L_BRACK@7119..7120 "[" + EXPR_INDEX_EXPR@7120..7124 + LHS_EXPR@7120..7121 + EXPR_VAR@7120..7121 + NAME@7120..7121 + IDENT@7120..7121 "a" + L_BRACK@7121..7122 "[" + EXPR_VAR@7122..7123 + NAME@7122..7123 + IDENT@7122..7123 "i" + R_BRACK@7123..7124 "]" + R_BRACK@7124..7125 "]" + R_PAREN@7125..7126 ")" + WHITESPACE@7126..7127 " " + TAILSTRICT_KW@7127..7137 "tailstrict" + WHITESPACE@7137..7146 "\n " + ELSE_KW@7146..7150 "else" + WHITESPACE@7150..7151 " " + FALSE_EXPR@7151..7289 + EXPR_IF_THEN_ELSE@7151..7289 + IF_KW@7151..7153 "if" + WHITESPACE@7153..7154 " " + EXPR_BINARY@7154..7161 + LHS_EXPR@7154..7156 + EXPR_VAR@7154..7156 + NAME@7154..7156 + IDENT@7154..7156 "ak" + WHITESPACE@7156..7157 " " + LT@7157..7158 "<" + WHITESPACE@7158..7159 " " + EXPR_VAR@7159..7161 + NAME@7159..7161 + IDENT@7159..7161 "bk" + WHITESPACE@7161..7162 " " + THEN_KW@7162..7166 "then" + WHITESPACE@7166..7177 "\n " + TRUE_EXPR@7177..7221 + EXPR_APPLY@7177..7221 + EXPR_VAR@7177..7180 + NAME@7177..7180 + IDENT@7177..7180 "aux" + ARGS_DESC@7180..7221 + L_PAREN@7180..7181 "(" + ARG@7181..7182 + EXPR_VAR@7181..7182 + NAME@7181..7182 + IDENT@7181..7182 "a" + COMMA@7182..7183 "," + WHITESPACE@7183..7184 " " + ARG@7184..7185 + EXPR_VAR@7184..7185 + NAME@7184..7185 + IDENT@7184..7185 "b" + COMMA@7185..7186 "," + WHITESPACE@7186..7187 " " + ARG@7187..7192 + EXPR_BINARY@7187..7192 + LHS_EXPR@7187..7188 + EXPR_VAR@7187..7188 + NAME@7187..7188 + IDENT@7187..7188 "i" + WHITESPACE@7188..7189 " " + PLUS@7189..7190 "+" + WHITESPACE@7190..7191 " " + EXPR_NUMBER@7191..7192 + FLOAT@7191..7192 "1" + COMMA@7192..7193 "," + WHITESPACE@7193..7194 " " + ARG@7194..7195 + EXPR_VAR@7194..7195 + NAME@7194..7195 + IDENT@7194..7195 "j" + COMMA@7195..7196 "," + WHITESPACE@7196..7197 " " + ARG@7197..7209 + EXPR_BINARY@7197..7209 + LHS_EXPR@7197..7200 + EXPR_VAR@7197..7200 + NAME@7197..7200 + IDENT@7197..7200 "acc" + WHITESPACE@7200..7201 " " + PLUS@7201..7202 "+" + WHITESPACE@7202..7203 " " + EXPR_ARRAY@7203..7209 + L_BRACK@7203..7204 "[" + EXPR_INDEX_EXPR@7204..7208 + LHS_EXPR@7204..7205 + EXPR_VAR@7204..7205 + NAME@7204..7205 + IDENT@7204..7205 "a" + L_BRACK@7205..7206 "[" + EXPR_VAR@7206..7207 + NAME@7206..7207 + IDENT@7206..7207 "i" + R_BRACK@7207..7208 "]" + R_BRACK@7208..7209 "]" + R_PAREN@7209..7210 ")" + WHITESPACE@7210..7211 " " + TAILSTRICT_KW@7211..7221 "tailstrict" + WHITESPACE@7221..7230 "\n " + ELSE_KW@7230..7234 "else" + WHITESPACE@7234..7245 "\n " + FALSE_EXPR@7245..7289 + EXPR_APPLY@7245..7289 + EXPR_VAR@7245..7248 + NAME@7245..7248 + IDENT@7245..7248 "aux" + ARGS_DESC@7248..7289 + L_PAREN@7248..7249 "(" + ARG@7249..7250 + EXPR_VAR@7249..7250 + NAME@7249..7250 + IDENT@7249..7250 "a" + COMMA@7250..7251 "," + WHITESPACE@7251..7252 " " + ARG@7252..7253 + EXPR_VAR@7252..7253 + NAME@7252..7253 + IDENT@7252..7253 "b" + COMMA@7253..7254 "," + WHITESPACE@7254..7255 " " + ARG@7255..7256 + EXPR_VAR@7255..7256 + NAME@7255..7256 + IDENT@7255..7256 "i" + COMMA@7256..7257 "," + WHITESPACE@7257..7258 " " + ARG@7258..7263 + EXPR_BINARY@7258..7263 + LHS_EXPR@7258..7259 + EXPR_VAR@7258..7259 + NAME@7258..7259 + IDENT@7258..7259 "j" + WHITESPACE@7259..7260 " " + PLUS@7260..7261 "+" + WHITESPACE@7261..7262 " " + EXPR_NUMBER@7262..7263 + FLOAT@7262..7263 "1" + COMMA@7263..7264 "," + WHITESPACE@7264..7265 " " + ARG@7265..7277 + EXPR_BINARY@7265..7277 + LHS_EXPR@7265..7268 + EXPR_VAR@7265..7268 + NAME@7265..7268 + IDENT@7265..7268 "acc" + WHITESPACE@7268..7269 " " + PLUS@7269..7270 "+" + WHITESPACE@7270..7271 " " + EXPR_ARRAY@7271..7277 + L_BRACK@7271..7272 "[" + EXPR_INDEX_EXPR@7272..7276 + LHS_EXPR@7272..7273 + EXPR_VAR@7272..7273 + NAME@7272..7273 + IDENT@7272..7273 "b" + L_BRACK@7273..7274 "[" + EXPR_VAR@7274..7275 + NAME@7274..7275 + IDENT@7274..7275 "j" + R_BRACK@7275..7276 "]" + R_BRACK@7276..7277 "]" + R_PAREN@7277..7278 ")" + WHITESPACE@7278..7279 " " + TAILSTRICT_KW@7279..7289 "tailstrict" + SEMI@7289..7290 ";" + WHITESPACE@7290..7295 "\n " + EXPR_APPLY@7295..7314 + EXPR_VAR@7295..7298 + NAME@7295..7298 + IDENT@7295..7298 "aux" + ARGS_DESC@7298..7314 + L_PAREN@7298..7299 "(" + ARG@7299..7300 + EXPR_VAR@7299..7300 + NAME@7299..7300 + IDENT@7299..7300 "a" + COMMA@7300..7301 "," + WHITESPACE@7301..7302 " " + ARG@7302..7303 + EXPR_VAR@7302..7303 + NAME@7302..7303 + IDENT@7302..7303 "b" + COMMA@7303..7304 "," + WHITESPACE@7304..7305 " " + ARG@7305..7306 + EXPR_NUMBER@7305..7306 + FLOAT@7305..7306 "0" + COMMA@7306..7307 "," + WHITESPACE@7307..7308 " " + ARG@7308..7309 + EXPR_NUMBER@7308..7309 + FLOAT@7308..7309 "0" + COMMA@7309..7310 "," + WHITESPACE@7310..7311 " " + ARG@7311..7313 + EXPR_ARRAY@7311..7313 + L_BRACK@7311..7312 "[" + R_BRACK@7312..7313 "]" + R_PAREN@7313..7314 ")" COMMA@7314..7315 "," WHITESPACE@7315..7319 "\n\n " - MEMBER_FIELD@7319..7741 - FIELD_METHOD@7319..7741 - FIELD_NAME_FIXED@7319..7327 - NAME@7319..7327 - IDENT@7319..7327 "setInter" - PARAMS_DESC@7327..7342 - L_PAREN@7327..7328 "(" - PARAM@7328..7329 - DESTRUCT_FULL@7328..7329 - NAME@7328..7329 - IDENT@7328..7329 "a" - COMMA@7329..7330 "," - WHITESPACE@7330..7331 " " - PARAM@7331..7332 - DESTRUCT_FULL@7331..7332 - NAME@7331..7332 - IDENT@7331..7332 "b" - COMMA@7332..7333 "," - WHITESPACE@7333..7334 " " - PARAM@7334..7341 - DESTRUCT_FULL@7334..7338 - NAME@7334..7338 - IDENT@7334..7338 "keyF" - ASSIGN@7338..7339 "=" - EXPR_VAR@7339..7341 - NAME@7339..7341 - IDENT@7339..7341 "id" - R_PAREN@7341..7342 ")" - COLONCOLON@7342..7344 "::" - WHITESPACE@7344..7349 "\n " - EXPR_LOCAL@7349..7741 - LOCAL_KW@7349..7354 "local" - WHITESPACE@7354..7355 " " - BIND_FUNCTION@7355..7705 - NAME@7355..7358 - IDENT@7355..7358 "aux" - PARAMS_DESC@7358..7375 - L_PAREN@7358..7359 "(" - PARAM@7359..7360 - DESTRUCT_FULL@7359..7360 - NAME@7359..7360 - IDENT@7359..7360 "a" - COMMA@7360..7361 "," - WHITESPACE@7361..7362 " " - PARAM@7362..7363 - DESTRUCT_FULL@7362..7363 - NAME@7362..7363 - IDENT@7362..7363 "b" - COMMA@7363..7364 "," - WHITESPACE@7364..7365 " " - PARAM@7365..7366 - DESTRUCT_FULL@7365..7366 - NAME@7365..7366 - IDENT@7365..7366 "i" - COMMA@7366..7367 "," - WHITESPACE@7367..7368 " " - PARAM@7368..7369 - DESTRUCT_FULL@7368..7369 - NAME@7368..7369 - IDENT@7368..7369 "j" - COMMA@7369..7370 "," - WHITESPACE@7370..7371 " " - PARAM@7371..7374 - DESTRUCT_FULL@7371..7374 - NAME@7371..7374 - IDENT@7371..7374 "acc" - R_PAREN@7374..7375 ")" - WHITESPACE@7375..7376 " " - ASSIGN@7376..7377 "=" - WHITESPACE@7377..7384 "\n " - EXPR_IF_THEN_ELSE@7384..7705 - IF_KW@7384..7386 "if" - WHITESPACE@7386..7387 " " - EXPR_BINARY@7387..7427 - LHS_EXPR@7387..7405 - EXPR_BINARY@7387..7405 - LHS_EXPR@7387..7388 - EXPR_VAR@7387..7388 - NAME@7387..7388 - IDENT@7387..7388 "i" - WHITESPACE@7388..7389 " " - GE@7389..7391 ">=" - WHITESPACE@7391..7392 " " - EXPR_APPLY@7392..7405 - EXPR_INDEX@7392..7402 - EXPR_VAR@7392..7395 - NAME@7392..7395 - IDENT@7392..7395 "std" - DOT@7395..7396 "." - NAME@7396..7402 - IDENT@7396..7402 "length" - ARGS_DESC@7402..7405 - L_PAREN@7402..7403 "(" - ARG@7403..7404 - EXPR_VAR@7403..7404 - NAME@7403..7404 - IDENT@7403..7404 "a" - R_PAREN@7404..7405 ")" - WHITESPACE@7405..7406 " " - OR@7406..7408 "||" - WHITESPACE@7408..7409 " " - EXPR_BINARY@7409..7427 - LHS_EXPR@7409..7410 - EXPR_VAR@7409..7410 - NAME@7409..7410 - IDENT@7409..7410 "j" - WHITESPACE@7410..7411 " " - GE@7411..7413 ">=" - WHITESPACE@7413..7414 " " - EXPR_APPLY@7414..7427 - EXPR_INDEX@7414..7424 - EXPR_VAR@7414..7417 - NAME@7414..7417 - IDENT@7414..7417 "std" - DOT@7417..7418 "." - NAME@7418..7424 - IDENT@7418..7424 "length" - ARGS_DESC@7424..7427 - L_PAREN@7424..7425 "(" - ARG@7425..7426 - EXPR_VAR@7425..7426 - NAME@7425..7426 - IDENT@7425..7426 "b" - R_PAREN@7426..7427 ")" - WHITESPACE@7427..7428 " " - THEN_KW@7428..7432 "then" - WHITESPACE@7432..7441 "\n " - TRUE_EXPR@7441..7444 - EXPR_VAR@7441..7444 - NAME@7441..7444 - IDENT@7441..7444 "acc" - WHITESPACE@7444..7451 "\n " - ELSE_KW@7451..7455 "else" - WHITESPACE@7455..7464 "\n " - FALSE_EXPR@7464..7705 - EXPR_IF_THEN_ELSE@7464..7705 - IF_KW@7464..7466 "if" - WHITESPACE@7466..7467 " " - EXPR_BINARY@7467..7491 - LHS_EXPR@7467..7477 - EXPR_APPLY@7467..7477 - EXPR_VAR@7467..7471 - NAME@7467..7471 - IDENT@7467..7471 "keyF" - ARGS_DESC@7471..7477 - L_PAREN@7471..7472 "(" - ARG@7472..7476 - EXPR_INDEX_EXPR@7472..7476 - LHS_EXPR@7472..7473 - EXPR_VAR@7472..7473 - NAME@7472..7473 - IDENT@7472..7473 "a" - L_BRACK@7473..7474 "[" - EXPR_VAR@7474..7475 - NAME@7474..7475 - IDENT@7474..7475 "i" - R_BRACK@7475..7476 "]" - R_PAREN@7476..7477 ")" - WHITESPACE@7477..7478 " " - EQ@7478..7480 "==" - WHITESPACE@7480..7481 " " - EXPR_APPLY@7481..7491 - EXPR_VAR@7481..7485 - NAME@7481..7485 - IDENT@7481..7485 "keyF" - ARGS_DESC@7485..7491 - L_PAREN@7485..7486 "(" - ARG@7486..7490 - EXPR_INDEX_EXPR@7486..7490 - LHS_EXPR@7486..7487 - EXPR_VAR@7486..7487 - NAME@7486..7487 - IDENT@7486..7487 "b" - L_BRACK@7487..7488 "[" - EXPR_VAR@7488..7489 - NAME@7488..7489 - IDENT@7488..7489 "j" - R_BRACK@7489..7490 "]" - R_PAREN@7490..7491 ")" - WHITESPACE@7491..7492 " " - THEN_KW@7492..7496 "then" - WHITESPACE@7496..7507 "\n " - TRUE_EXPR@7507..7555 - EXPR_APPLY@7507..7555 - EXPR_VAR@7507..7510 - NAME@7507..7510 - IDENT@7507..7510 "aux" - ARGS_DESC@7510..7555 - L_PAREN@7510..7511 "(" - ARG@7511..7512 - EXPR_VAR@7511..7512 - NAME@7511..7512 - IDENT@7511..7512 "a" - COMMA@7512..7513 "," - WHITESPACE@7513..7514 " " - ARG@7514..7515 - EXPR_VAR@7514..7515 - NAME@7514..7515 - IDENT@7514..7515 "b" - COMMA@7515..7516 "," - WHITESPACE@7516..7517 " " - ARG@7517..7522 - EXPR_BINARY@7517..7522 - LHS_EXPR@7517..7518 - EXPR_VAR@7517..7518 - NAME@7517..7518 - IDENT@7517..7518 "i" - WHITESPACE@7518..7519 " " - PLUS@7519..7520 "+" - WHITESPACE@7520..7521 " " - EXPR_NUMBER@7521..7522 - FLOAT@7521..7522 "1" - COMMA@7522..7523 "," - WHITESPACE@7523..7524 " " - ARG@7524..7529 - EXPR_BINARY@7524..7529 - LHS_EXPR@7524..7525 - EXPR_VAR@7524..7525 - NAME@7524..7525 - IDENT@7524..7525 "j" - WHITESPACE@7525..7526 " " - PLUS@7526..7527 "+" - WHITESPACE@7527..7528 " " - EXPR_NUMBER@7528..7529 - FLOAT@7528..7529 "1" - COMMA@7529..7530 "," - WHITESPACE@7530..7531 " " - ARG@7531..7543 - EXPR_BINARY@7531..7543 - LHS_EXPR@7531..7534 - EXPR_VAR@7531..7534 - NAME@7531..7534 - IDENT@7531..7534 "acc" - WHITESPACE@7534..7535 " " - PLUS@7535..7536 "+" - WHITESPACE@7536..7537 " " - EXPR_ARRAY@7537..7543 - L_BRACK@7537..7538 "[" - EXPR_INDEX_EXPR@7538..7542 - LHS_EXPR@7538..7539 - EXPR_VAR@7538..7539 - NAME@7538..7539 - IDENT@7538..7539 "a" - L_BRACK@7539..7540 "[" - EXPR_VAR@7540..7541 - NAME@7540..7541 - IDENT@7540..7541 "i" - R_BRACK@7541..7542 "]" - R_BRACK@7542..7543 "]" - R_PAREN@7543..7544 ")" - WHITESPACE@7544..7545 " " - TAILSTRICT_KW@7545..7555 "tailstrict" - WHITESPACE@7555..7564 "\n " - ELSE_KW@7564..7568 "else" - WHITESPACE@7568..7569 " " - FALSE_EXPR@7569..7705 - EXPR_IF_THEN_ELSE@7569..7705 - IF_KW@7569..7571 "if" - WHITESPACE@7571..7572 " " - EXPR_BINARY@7572..7595 - LHS_EXPR@7572..7582 - EXPR_APPLY@7572..7582 - EXPR_VAR@7572..7576 - NAME@7572..7576 - IDENT@7572..7576 "keyF" - ARGS_DESC@7576..7582 - L_PAREN@7576..7577 "(" - ARG@7577..7581 - EXPR_INDEX_EXPR@7577..7581 - LHS_EXPR@7577..7578 - EXPR_VAR@7577..7578 - NAME@7577..7578 - IDENT@7577..7578 "a" - L_BRACK@7578..7579 "[" - EXPR_VAR@7579..7580 - NAME@7579..7580 - IDENT@7579..7580 "i" - R_BRACK@7580..7581 "]" - R_PAREN@7581..7582 ")" - WHITESPACE@7582..7583 " " - LT@7583..7584 "<" - WHITESPACE@7584..7585 " " - EXPR_APPLY@7585..7595 - EXPR_VAR@7585..7589 - NAME@7585..7589 - IDENT@7585..7589 "keyF" - ARGS_DESC@7589..7595 - L_PAREN@7589..7590 "(" - ARG@7590..7594 - EXPR_INDEX_EXPR@7590..7594 - LHS_EXPR@7590..7591 - EXPR_VAR@7590..7591 - NAME@7590..7591 - IDENT@7590..7591 "b" - L_BRACK@7591..7592 "[" - EXPR_VAR@7592..7593 - NAME@7592..7593 - IDENT@7592..7593 "j" - R_BRACK@7593..7594 "]" - R_PAREN@7594..7595 ")" - WHITESPACE@7595..7596 " " - THEN_KW@7596..7600 "then" - WHITESPACE@7600..7611 "\n " - TRUE_EXPR@7611..7646 - EXPR_APPLY@7611..7646 - EXPR_VAR@7611..7614 - NAME@7611..7614 - IDENT@7611..7614 "aux" - ARGS_DESC@7614..7646 - L_PAREN@7614..7615 "(" - ARG@7615..7616 - EXPR_VAR@7615..7616 - NAME@7615..7616 - IDENT@7615..7616 "a" - COMMA@7616..7617 "," - WHITESPACE@7617..7618 " " - ARG@7618..7619 - EXPR_VAR@7618..7619 - NAME@7618..7619 - IDENT@7618..7619 "b" - COMMA@7619..7620 "," - WHITESPACE@7620..7621 " " - ARG@7621..7626 - EXPR_BINARY@7621..7626 - LHS_EXPR@7621..7622 - EXPR_VAR@7621..7622 - NAME@7621..7622 - IDENT@7621..7622 "i" - WHITESPACE@7622..7623 " " - PLUS@7623..7624 "+" - WHITESPACE@7624..7625 " " - EXPR_NUMBER@7625..7626 - FLOAT@7625..7626 "1" - COMMA@7626..7627 "," - WHITESPACE@7627..7628 " " - ARG@7628..7629 - EXPR_VAR@7628..7629 - NAME@7628..7629 - IDENT@7628..7629 "j" - COMMA@7629..7630 "," - WHITESPACE@7630..7631 " " - ARG@7631..7634 - EXPR_VAR@7631..7634 - NAME@7631..7634 - IDENT@7631..7634 "acc" - R_PAREN@7634..7635 ")" - WHITESPACE@7635..7636 " " - TAILSTRICT_KW@7636..7646 "tailstrict" - WHITESPACE@7646..7655 "\n " - ELSE_KW@7655..7659 "else" - WHITESPACE@7659..7670 "\n " - FALSE_EXPR@7670..7705 - EXPR_APPLY@7670..7705 - EXPR_VAR@7670..7673 - NAME@7670..7673 - IDENT@7670..7673 "aux" - ARGS_DESC@7673..7705 - L_PAREN@7673..7674 "(" - ARG@7674..7675 - EXPR_VAR@7674..7675 - NAME@7674..7675 - IDENT@7674..7675 "a" - COMMA@7675..7676 "," - WHITESPACE@7676..7677 " " - ARG@7677..7678 - EXPR_VAR@7677..7678 - NAME@7677..7678 - IDENT@7677..7678 "b" - COMMA@7678..7679 "," - WHITESPACE@7679..7680 " " - ARG@7680..7681 - EXPR_VAR@7680..7681 - NAME@7680..7681 - IDENT@7680..7681 "i" - COMMA@7681..7682 "," - WHITESPACE@7682..7683 " " - ARG@7683..7688 - EXPR_BINARY@7683..7688 - LHS_EXPR@7683..7684 - EXPR_VAR@7683..7684 - NAME@7683..7684 - IDENT@7683..7684 "j" - WHITESPACE@7684..7685 " " - PLUS@7685..7686 "+" - WHITESPACE@7686..7687 " " - EXPR_NUMBER@7687..7688 - FLOAT@7687..7688 "1" - COMMA@7688..7689 "," - WHITESPACE@7689..7690 " " - ARG@7690..7693 - EXPR_VAR@7690..7693 - NAME@7690..7693 - IDENT@7690..7693 "acc" - R_PAREN@7693..7694 ")" - WHITESPACE@7694..7695 " " - TAILSTRICT_KW@7695..7705 "tailstrict" - SEMI@7705..7706 ";" - WHITESPACE@7706..7711 "\n " - EXPR_APPLY@7711..7741 - EXPR_VAR@7711..7714 - NAME@7711..7714 - IDENT@7711..7714 "aux" - ARGS_DESC@7714..7741 - L_PAREN@7714..7715 "(" - ARG@7715..7716 - EXPR_VAR@7715..7716 - NAME@7715..7716 - IDENT@7715..7716 "a" - COMMA@7716..7717 "," - WHITESPACE@7717..7718 " " - ARG@7718..7719 - EXPR_VAR@7718..7719 - NAME@7718..7719 - IDENT@7718..7719 "b" - COMMA@7719..7720 "," - WHITESPACE@7720..7721 " " - ARG@7721..7722 - EXPR_NUMBER@7721..7722 - FLOAT@7721..7722 "0" - COMMA@7722..7723 "," - WHITESPACE@7723..7724 " " - ARG@7724..7725 - EXPR_NUMBER@7724..7725 - FLOAT@7724..7725 "0" - COMMA@7725..7726 "," - WHITESPACE@7726..7727 " " - ARG@7727..7729 - EXPR_ARRAY@7727..7729 - L_BRACK@7727..7728 "[" - R_BRACK@7728..7729 "]" - R_PAREN@7729..7730 ")" - WHITESPACE@7730..7731 " " - TAILSTRICT_KW@7731..7741 "tailstrict" + MEMBER_FIELD_METHOD@7319..7741 + FIELD_NAME_FIXED@7319..7327 + NAME@7319..7327 + IDENT@7319..7327 "setInter" + PARAMS_DESC@7327..7342 + L_PAREN@7327..7328 "(" + PARAM@7328..7329 + DESTRUCT_FULL@7328..7329 + NAME@7328..7329 + IDENT@7328..7329 "a" + COMMA@7329..7330 "," + WHITESPACE@7330..7331 " " + PARAM@7331..7332 + DESTRUCT_FULL@7331..7332 + NAME@7331..7332 + IDENT@7331..7332 "b" + COMMA@7332..7333 "," + WHITESPACE@7333..7334 " " + PARAM@7334..7341 + DESTRUCT_FULL@7334..7338 + NAME@7334..7338 + IDENT@7334..7338 "keyF" + ASSIGN@7338..7339 "=" + EXPR_VAR@7339..7341 + NAME@7339..7341 + IDENT@7339..7341 "id" + R_PAREN@7341..7342 ")" + COLONCOLON@7342..7344 "::" + WHITESPACE@7344..7349 "\n " + EXPR_LOCAL@7349..7741 + LOCAL_KW@7349..7354 "local" + WHITESPACE@7354..7355 " " + BIND_FUNCTION@7355..7705 + NAME@7355..7358 + IDENT@7355..7358 "aux" + PARAMS_DESC@7358..7375 + L_PAREN@7358..7359 "(" + PARAM@7359..7360 + DESTRUCT_FULL@7359..7360 + NAME@7359..7360 + IDENT@7359..7360 "a" + COMMA@7360..7361 "," + WHITESPACE@7361..7362 " " + PARAM@7362..7363 + DESTRUCT_FULL@7362..7363 + NAME@7362..7363 + IDENT@7362..7363 "b" + COMMA@7363..7364 "," + WHITESPACE@7364..7365 " " + PARAM@7365..7366 + DESTRUCT_FULL@7365..7366 + NAME@7365..7366 + IDENT@7365..7366 "i" + COMMA@7366..7367 "," + WHITESPACE@7367..7368 " " + PARAM@7368..7369 + DESTRUCT_FULL@7368..7369 + NAME@7368..7369 + IDENT@7368..7369 "j" + COMMA@7369..7370 "," + WHITESPACE@7370..7371 " " + PARAM@7371..7374 + DESTRUCT_FULL@7371..7374 + NAME@7371..7374 + IDENT@7371..7374 "acc" + R_PAREN@7374..7375 ")" + WHITESPACE@7375..7376 " " + ASSIGN@7376..7377 "=" + WHITESPACE@7377..7384 "\n " + EXPR_IF_THEN_ELSE@7384..7705 + IF_KW@7384..7386 "if" + WHITESPACE@7386..7387 " " + EXPR_BINARY@7387..7427 + LHS_EXPR@7387..7405 + EXPR_BINARY@7387..7405 + LHS_EXPR@7387..7388 + EXPR_VAR@7387..7388 + NAME@7387..7388 + IDENT@7387..7388 "i" + WHITESPACE@7388..7389 " " + GE@7389..7391 ">=" + WHITESPACE@7391..7392 " " + EXPR_APPLY@7392..7405 + EXPR_INDEX@7392..7402 + EXPR_VAR@7392..7395 + NAME@7392..7395 + IDENT@7392..7395 "std" + DOT@7395..7396 "." + NAME@7396..7402 + IDENT@7396..7402 "length" + ARGS_DESC@7402..7405 + L_PAREN@7402..7403 "(" + ARG@7403..7404 + EXPR_VAR@7403..7404 + NAME@7403..7404 + IDENT@7403..7404 "a" + R_PAREN@7404..7405 ")" + WHITESPACE@7405..7406 " " + OR@7406..7408 "||" + WHITESPACE@7408..7409 " " + EXPR_BINARY@7409..7427 + LHS_EXPR@7409..7410 + EXPR_VAR@7409..7410 + NAME@7409..7410 + IDENT@7409..7410 "j" + WHITESPACE@7410..7411 " " + GE@7411..7413 ">=" + WHITESPACE@7413..7414 " " + EXPR_APPLY@7414..7427 + EXPR_INDEX@7414..7424 + EXPR_VAR@7414..7417 + NAME@7414..7417 + IDENT@7414..7417 "std" + DOT@7417..7418 "." + NAME@7418..7424 + IDENT@7418..7424 "length" + ARGS_DESC@7424..7427 + L_PAREN@7424..7425 "(" + ARG@7425..7426 + EXPR_VAR@7425..7426 + NAME@7425..7426 + IDENT@7425..7426 "b" + R_PAREN@7426..7427 ")" + WHITESPACE@7427..7428 " " + THEN_KW@7428..7432 "then" + WHITESPACE@7432..7441 "\n " + TRUE_EXPR@7441..7444 + EXPR_VAR@7441..7444 + NAME@7441..7444 + IDENT@7441..7444 "acc" + WHITESPACE@7444..7451 "\n " + ELSE_KW@7451..7455 "else" + WHITESPACE@7455..7464 "\n " + FALSE_EXPR@7464..7705 + EXPR_IF_THEN_ELSE@7464..7705 + IF_KW@7464..7466 "if" + WHITESPACE@7466..7467 " " + EXPR_BINARY@7467..7491 + LHS_EXPR@7467..7477 + EXPR_APPLY@7467..7477 + EXPR_VAR@7467..7471 + NAME@7467..7471 + IDENT@7467..7471 "keyF" + ARGS_DESC@7471..7477 + L_PAREN@7471..7472 "(" + ARG@7472..7476 + EXPR_INDEX_EXPR@7472..7476 + LHS_EXPR@7472..7473 + EXPR_VAR@7472..7473 + NAME@7472..7473 + IDENT@7472..7473 "a" + L_BRACK@7473..7474 "[" + EXPR_VAR@7474..7475 + NAME@7474..7475 + IDENT@7474..7475 "i" + R_BRACK@7475..7476 "]" + R_PAREN@7476..7477 ")" + WHITESPACE@7477..7478 " " + EQ@7478..7480 "==" + WHITESPACE@7480..7481 " " + EXPR_APPLY@7481..7491 + EXPR_VAR@7481..7485 + NAME@7481..7485 + IDENT@7481..7485 "keyF" + ARGS_DESC@7485..7491 + L_PAREN@7485..7486 "(" + ARG@7486..7490 + EXPR_INDEX_EXPR@7486..7490 + LHS_EXPR@7486..7487 + EXPR_VAR@7486..7487 + NAME@7486..7487 + IDENT@7486..7487 "b" + L_BRACK@7487..7488 "[" + EXPR_VAR@7488..7489 + NAME@7488..7489 + IDENT@7488..7489 "j" + R_BRACK@7489..7490 "]" + R_PAREN@7490..7491 ")" + WHITESPACE@7491..7492 " " + THEN_KW@7492..7496 "then" + WHITESPACE@7496..7507 "\n " + TRUE_EXPR@7507..7555 + EXPR_APPLY@7507..7555 + EXPR_VAR@7507..7510 + NAME@7507..7510 + IDENT@7507..7510 "aux" + ARGS_DESC@7510..7555 + L_PAREN@7510..7511 "(" + ARG@7511..7512 + EXPR_VAR@7511..7512 + NAME@7511..7512 + IDENT@7511..7512 "a" + COMMA@7512..7513 "," + WHITESPACE@7513..7514 " " + ARG@7514..7515 + EXPR_VAR@7514..7515 + NAME@7514..7515 + IDENT@7514..7515 "b" + COMMA@7515..7516 "," + WHITESPACE@7516..7517 " " + ARG@7517..7522 + EXPR_BINARY@7517..7522 + LHS_EXPR@7517..7518 + EXPR_VAR@7517..7518 + NAME@7517..7518 + IDENT@7517..7518 "i" + WHITESPACE@7518..7519 " " + PLUS@7519..7520 "+" + WHITESPACE@7520..7521 " " + EXPR_NUMBER@7521..7522 + FLOAT@7521..7522 "1" + COMMA@7522..7523 "," + WHITESPACE@7523..7524 " " + ARG@7524..7529 + EXPR_BINARY@7524..7529 + LHS_EXPR@7524..7525 + EXPR_VAR@7524..7525 + NAME@7524..7525 + IDENT@7524..7525 "j" + WHITESPACE@7525..7526 " " + PLUS@7526..7527 "+" + WHITESPACE@7527..7528 " " + EXPR_NUMBER@7528..7529 + FLOAT@7528..7529 "1" + COMMA@7529..7530 "," + WHITESPACE@7530..7531 " " + ARG@7531..7543 + EXPR_BINARY@7531..7543 + LHS_EXPR@7531..7534 + EXPR_VAR@7531..7534 + NAME@7531..7534 + IDENT@7531..7534 "acc" + WHITESPACE@7534..7535 " " + PLUS@7535..7536 "+" + WHITESPACE@7536..7537 " " + EXPR_ARRAY@7537..7543 + L_BRACK@7537..7538 "[" + EXPR_INDEX_EXPR@7538..7542 + LHS_EXPR@7538..7539 + EXPR_VAR@7538..7539 + NAME@7538..7539 + IDENT@7538..7539 "a" + L_BRACK@7539..7540 "[" + EXPR_VAR@7540..7541 + NAME@7540..7541 + IDENT@7540..7541 "i" + R_BRACK@7541..7542 "]" + R_BRACK@7542..7543 "]" + R_PAREN@7543..7544 ")" + WHITESPACE@7544..7545 " " + TAILSTRICT_KW@7545..7555 "tailstrict" + WHITESPACE@7555..7564 "\n " + ELSE_KW@7564..7568 "else" + WHITESPACE@7568..7569 " " + FALSE_EXPR@7569..7705 + EXPR_IF_THEN_ELSE@7569..7705 + IF_KW@7569..7571 "if" + WHITESPACE@7571..7572 " " + EXPR_BINARY@7572..7595 + LHS_EXPR@7572..7582 + EXPR_APPLY@7572..7582 + EXPR_VAR@7572..7576 + NAME@7572..7576 + IDENT@7572..7576 "keyF" + ARGS_DESC@7576..7582 + L_PAREN@7576..7577 "(" + ARG@7577..7581 + EXPR_INDEX_EXPR@7577..7581 + LHS_EXPR@7577..7578 + EXPR_VAR@7577..7578 + NAME@7577..7578 + IDENT@7577..7578 "a" + L_BRACK@7578..7579 "[" + EXPR_VAR@7579..7580 + NAME@7579..7580 + IDENT@7579..7580 "i" + R_BRACK@7580..7581 "]" + R_PAREN@7581..7582 ")" + WHITESPACE@7582..7583 " " + LT@7583..7584 "<" + WHITESPACE@7584..7585 " " + EXPR_APPLY@7585..7595 + EXPR_VAR@7585..7589 + NAME@7585..7589 + IDENT@7585..7589 "keyF" + ARGS_DESC@7589..7595 + L_PAREN@7589..7590 "(" + ARG@7590..7594 + EXPR_INDEX_EXPR@7590..7594 + LHS_EXPR@7590..7591 + EXPR_VAR@7590..7591 + NAME@7590..7591 + IDENT@7590..7591 "b" + L_BRACK@7591..7592 "[" + EXPR_VAR@7592..7593 + NAME@7592..7593 + IDENT@7592..7593 "j" + R_BRACK@7593..7594 "]" + R_PAREN@7594..7595 ")" + WHITESPACE@7595..7596 " " + THEN_KW@7596..7600 "then" + WHITESPACE@7600..7611 "\n " + TRUE_EXPR@7611..7646 + EXPR_APPLY@7611..7646 + EXPR_VAR@7611..7614 + NAME@7611..7614 + IDENT@7611..7614 "aux" + ARGS_DESC@7614..7646 + L_PAREN@7614..7615 "(" + ARG@7615..7616 + EXPR_VAR@7615..7616 + NAME@7615..7616 + IDENT@7615..7616 "a" + COMMA@7616..7617 "," + WHITESPACE@7617..7618 " " + ARG@7618..7619 + EXPR_VAR@7618..7619 + NAME@7618..7619 + IDENT@7618..7619 "b" + COMMA@7619..7620 "," + WHITESPACE@7620..7621 " " + ARG@7621..7626 + EXPR_BINARY@7621..7626 + LHS_EXPR@7621..7622 + EXPR_VAR@7621..7622 + NAME@7621..7622 + IDENT@7621..7622 "i" + WHITESPACE@7622..7623 " " + PLUS@7623..7624 "+" + WHITESPACE@7624..7625 " " + EXPR_NUMBER@7625..7626 + FLOAT@7625..7626 "1" + COMMA@7626..7627 "," + WHITESPACE@7627..7628 " " + ARG@7628..7629 + EXPR_VAR@7628..7629 + NAME@7628..7629 + IDENT@7628..7629 "j" + COMMA@7629..7630 "," + WHITESPACE@7630..7631 " " + ARG@7631..7634 + EXPR_VAR@7631..7634 + NAME@7631..7634 + IDENT@7631..7634 "acc" + R_PAREN@7634..7635 ")" + WHITESPACE@7635..7636 " " + TAILSTRICT_KW@7636..7646 "tailstrict" + WHITESPACE@7646..7655 "\n " + ELSE_KW@7655..7659 "else" + WHITESPACE@7659..7670 "\n " + FALSE_EXPR@7670..7705 + EXPR_APPLY@7670..7705 + EXPR_VAR@7670..7673 + NAME@7670..7673 + IDENT@7670..7673 "aux" + ARGS_DESC@7673..7705 + L_PAREN@7673..7674 "(" + ARG@7674..7675 + EXPR_VAR@7674..7675 + NAME@7674..7675 + IDENT@7674..7675 "a" + COMMA@7675..7676 "," + WHITESPACE@7676..7677 " " + ARG@7677..7678 + EXPR_VAR@7677..7678 + NAME@7677..7678 + IDENT@7677..7678 "b" + COMMA@7678..7679 "," + WHITESPACE@7679..7680 " " + ARG@7680..7681 + EXPR_VAR@7680..7681 + NAME@7680..7681 + IDENT@7680..7681 "i" + COMMA@7681..7682 "," + WHITESPACE@7682..7683 " " + ARG@7683..7688 + EXPR_BINARY@7683..7688 + LHS_EXPR@7683..7684 + EXPR_VAR@7683..7684 + NAME@7683..7684 + IDENT@7683..7684 "j" + WHITESPACE@7684..7685 " " + PLUS@7685..7686 "+" + WHITESPACE@7686..7687 " " + EXPR_NUMBER@7687..7688 + FLOAT@7687..7688 "1" + COMMA@7688..7689 "," + WHITESPACE@7689..7690 " " + ARG@7690..7693 + EXPR_VAR@7690..7693 + NAME@7690..7693 + IDENT@7690..7693 "acc" + R_PAREN@7693..7694 ")" + WHITESPACE@7694..7695 " " + TAILSTRICT_KW@7695..7705 "tailstrict" + SEMI@7705..7706 ";" + WHITESPACE@7706..7711 "\n " + EXPR_APPLY@7711..7741 + EXPR_VAR@7711..7714 + NAME@7711..7714 + IDENT@7711..7714 "aux" + ARGS_DESC@7714..7741 + L_PAREN@7714..7715 "(" + ARG@7715..7716 + EXPR_VAR@7715..7716 + NAME@7715..7716 + IDENT@7715..7716 "a" + COMMA@7716..7717 "," + WHITESPACE@7717..7718 " " + ARG@7718..7719 + EXPR_VAR@7718..7719 + NAME@7718..7719 + IDENT@7718..7719 "b" + COMMA@7719..7720 "," + WHITESPACE@7720..7721 " " + ARG@7721..7722 + EXPR_NUMBER@7721..7722 + FLOAT@7721..7722 "0" + COMMA@7722..7723 "," + WHITESPACE@7723..7724 " " + ARG@7724..7725 + EXPR_NUMBER@7724..7725 + FLOAT@7724..7725 "0" + COMMA@7725..7726 "," + WHITESPACE@7726..7727 " " + ARG@7727..7729 + EXPR_ARRAY@7727..7729 + L_BRACK@7727..7728 "[" + R_BRACK@7728..7729 "]" + R_PAREN@7729..7730 ")" + WHITESPACE@7730..7731 " " + TAILSTRICT_KW@7731..7741 "tailstrict" COMMA@7741..7742 "," WHITESPACE@7742..7746 "\n\n " - MEMBER_FIELD@7746..8203 - FIELD_METHOD@7746..8203 - FIELD_NAME_FIXED@7746..7753 - NAME@7746..7753 - IDENT@7746..7753 "setDiff" - PARAMS_DESC@7753..7768 - L_PAREN@7753..7754 "(" - PARAM@7754..7755 - DESTRUCT_FULL@7754..7755 - NAME@7754..7755 - IDENT@7754..7755 "a" - COMMA@7755..7756 "," - WHITESPACE@7756..7757 " " - PARAM@7757..7758 - DESTRUCT_FULL@7757..7758 - NAME@7757..7758 - IDENT@7757..7758 "b" - COMMA@7758..7759 "," - WHITESPACE@7759..7760 " " - PARAM@7760..7767 - DESTRUCT_FULL@7760..7764 - NAME@7760..7764 - IDENT@7760..7764 "keyF" - ASSIGN@7764..7765 "=" - EXPR_VAR@7765..7767 - NAME@7765..7767 - IDENT@7765..7767 "id" - R_PAREN@7767..7768 ")" - COLONCOLON@7768..7770 "::" - WHITESPACE@7770..7775 "\n " - EXPR_LOCAL@7775..8203 - LOCAL_KW@7775..7780 "local" - WHITESPACE@7780..7781 " " - BIND_FUNCTION@7781..8167 - NAME@7781..7784 - IDENT@7781..7784 "aux" - PARAMS_DESC@7784..7801 - L_PAREN@7784..7785 "(" - PARAM@7785..7786 - DESTRUCT_FULL@7785..7786 - NAME@7785..7786 - IDENT@7785..7786 "a" - COMMA@7786..7787 "," - WHITESPACE@7787..7788 " " - PARAM@7788..7789 - DESTRUCT_FULL@7788..7789 - NAME@7788..7789 - IDENT@7788..7789 "b" - COMMA@7789..7790 "," - WHITESPACE@7790..7791 " " - PARAM@7791..7792 - DESTRUCT_FULL@7791..7792 - NAME@7791..7792 - IDENT@7791..7792 "i" - COMMA@7792..7793 "," - WHITESPACE@7793..7794 " " - PARAM@7794..7795 - DESTRUCT_FULL@7794..7795 - NAME@7794..7795 - IDENT@7794..7795 "j" - COMMA@7795..7796 "," - WHITESPACE@7796..7797 " " - PARAM@7797..7800 - DESTRUCT_FULL@7797..7800 - NAME@7797..7800 - IDENT@7797..7800 "acc" - R_PAREN@7800..7801 ")" - WHITESPACE@7801..7802 " " - ASSIGN@7802..7803 "=" - WHITESPACE@7803..7810 "\n " - EXPR_IF_THEN_ELSE@7810..8167 - IF_KW@7810..7812 "if" - WHITESPACE@7812..7813 " " - EXPR_BINARY@7813..7831 - LHS_EXPR@7813..7814 - EXPR_VAR@7813..7814 - NAME@7813..7814 - IDENT@7813..7814 "i" - WHITESPACE@7814..7815 " " - GE@7815..7817 ">=" - WHITESPACE@7817..7818 " " - EXPR_APPLY@7818..7831 - EXPR_INDEX@7818..7828 - EXPR_VAR@7818..7821 - NAME@7818..7821 - IDENT@7818..7821 "std" - DOT@7821..7822 "." - NAME@7822..7828 - IDENT@7822..7828 "length" - ARGS_DESC@7828..7831 - L_PAREN@7828..7829 "(" - ARG@7829..7830 - EXPR_VAR@7829..7830 - NAME@7829..7830 - IDENT@7829..7830 "a" - R_PAREN@7830..7831 ")" - WHITESPACE@7831..7832 " " - THEN_KW@7832..7836 "then" - WHITESPACE@7836..7845 "\n " - TRUE_EXPR@7845..7848 - EXPR_VAR@7845..7848 - NAME@7845..7848 - IDENT@7845..7848 "acc" - WHITESPACE@7848..7855 "\n " - ELSE_KW@7855..7859 "else" - WHITESPACE@7859..7860 " " - FALSE_EXPR@7860..8167 - EXPR_IF_THEN_ELSE@7860..8167 - IF_KW@7860..7862 "if" - WHITESPACE@7862..7863 " " - EXPR_BINARY@7863..7881 - LHS_EXPR@7863..7864 - EXPR_VAR@7863..7864 - NAME@7863..7864 - IDENT@7863..7864 "j" - WHITESPACE@7864..7865 " " - GE@7865..7867 ">=" - WHITESPACE@7867..7868 " " - EXPR_APPLY@7868..7881 - EXPR_INDEX@7868..7878 - EXPR_VAR@7868..7871 - NAME@7868..7871 - IDENT@7868..7871 "std" - DOT@7871..7872 "." - NAME@7872..7878 - IDENT@7872..7878 "length" - ARGS_DESC@7878..7881 - L_PAREN@7878..7879 "(" - ARG@7879..7880 - EXPR_VAR@7879..7880 - NAME@7879..7880 - IDENT@7879..7880 "b" - R_PAREN@7880..7881 ")" - WHITESPACE@7881..7882 " " - THEN_KW@7882..7886 "then" - WHITESPACE@7886..7895 "\n " - TRUE_EXPR@7895..7906 - EXPR_BINARY@7895..7906 - LHS_EXPR@7895..7898 - EXPR_VAR@7895..7898 - NAME@7895..7898 - IDENT@7895..7898 "acc" - WHITESPACE@7898..7899 " " - PLUS@7899..7900 "+" - WHITESPACE@7900..7901 " " - EXPR_SLICE@7901..7906 - EXPR_VAR@7901..7902 - NAME@7901..7902 - IDENT@7901..7902 "a" - SLICE_DESC@7902..7906 - L_BRACK@7902..7903 "[" - EXPR_VAR@7903..7904 - NAME@7903..7904 - IDENT@7903..7904 "i" - COLON@7904..7905 ":" - R_BRACK@7905..7906 "]" - WHITESPACE@7906..7913 "\n " - ELSE_KW@7913..7917 "else" - WHITESPACE@7917..7926 "\n " - FALSE_EXPR@7926..8167 - EXPR_IF_THEN_ELSE@7926..8167 - IF_KW@7926..7928 "if" - WHITESPACE@7928..7929 " " - EXPR_BINARY@7929..7953 - LHS_EXPR@7929..7939 - EXPR_APPLY@7929..7939 - EXPR_VAR@7929..7933 - NAME@7929..7933 - IDENT@7929..7933 "keyF" - ARGS_DESC@7933..7939 - L_PAREN@7933..7934 "(" - ARG@7934..7938 - EXPR_INDEX_EXPR@7934..7938 - LHS_EXPR@7934..7935 - EXPR_VAR@7934..7935 - NAME@7934..7935 - IDENT@7934..7935 "a" - L_BRACK@7935..7936 "[" - EXPR_VAR@7936..7937 - NAME@7936..7937 - IDENT@7936..7937 "i" - R_BRACK@7937..7938 "]" - R_PAREN@7938..7939 ")" - WHITESPACE@7939..7940 " " - EQ@7940..7942 "==" - WHITESPACE@7942..7943 " " - EXPR_APPLY@7943..7953 - EXPR_VAR@7943..7947 - NAME@7943..7947 - IDENT@7943..7947 "keyF" - ARGS_DESC@7947..7953 - L_PAREN@7947..7948 "(" - ARG@7948..7952 - EXPR_INDEX_EXPR@7948..7952 - LHS_EXPR@7948..7949 - EXPR_VAR@7948..7949 - NAME@7948..7949 - IDENT@7948..7949 "b" - L_BRACK@7949..7950 "[" - EXPR_VAR@7950..7951 - NAME@7950..7951 - IDENT@7950..7951 "j" - R_BRACK@7951..7952 "]" - R_PAREN@7952..7953 ")" - WHITESPACE@7953..7954 " " - THEN_KW@7954..7958 "then" - WHITESPACE@7958..7969 "\n " - TRUE_EXPR@7969..8008 - EXPR_APPLY@7969..8008 - EXPR_VAR@7969..7972 - NAME@7969..7972 - IDENT@7969..7972 "aux" - ARGS_DESC@7972..8008 - L_PAREN@7972..7973 "(" - ARG@7973..7974 - EXPR_VAR@7973..7974 - NAME@7973..7974 - IDENT@7973..7974 "a" - COMMA@7974..7975 "," - WHITESPACE@7975..7976 " " - ARG@7976..7977 - EXPR_VAR@7976..7977 - NAME@7976..7977 - IDENT@7976..7977 "b" - COMMA@7977..7978 "," - WHITESPACE@7978..7979 " " - ARG@7979..7984 - EXPR_BINARY@7979..7984 - LHS_EXPR@7979..7980 - EXPR_VAR@7979..7980 - NAME@7979..7980 - IDENT@7979..7980 "i" - WHITESPACE@7980..7981 " " - PLUS@7981..7982 "+" - WHITESPACE@7982..7983 " " - EXPR_NUMBER@7983..7984 - FLOAT@7983..7984 "1" - COMMA@7984..7985 "," - WHITESPACE@7985..7986 " " - ARG@7986..7991 - EXPR_BINARY@7986..7991 - LHS_EXPR@7986..7987 - EXPR_VAR@7986..7987 - NAME@7986..7987 - IDENT@7986..7987 "j" - WHITESPACE@7987..7988 " " - PLUS@7988..7989 "+" - WHITESPACE@7989..7990 " " - EXPR_NUMBER@7990..7991 - FLOAT@7990..7991 "1" - COMMA@7991..7992 "," - WHITESPACE@7992..7993 " " - ARG@7993..7996 - EXPR_VAR@7993..7996 - NAME@7993..7996 - IDENT@7993..7996 "acc" - R_PAREN@7996..7997 ")" - WHITESPACE@7997..7998 " " - TAILSTRICT_KW@7998..8008 "tailstrict" - WHITESPACE@8008..8017 "\n " - ELSE_KW@8017..8021 "else" - WHITESPACE@8021..8022 " " - FALSE_EXPR@8022..8167 - EXPR_IF_THEN_ELSE@8022..8167 - IF_KW@8022..8024 "if" - WHITESPACE@8024..8025 " " - EXPR_BINARY@8025..8048 - LHS_EXPR@8025..8035 - EXPR_APPLY@8025..8035 - EXPR_VAR@8025..8029 - NAME@8025..8029 - IDENT@8025..8029 "keyF" - ARGS_DESC@8029..8035 - L_PAREN@8029..8030 "(" - ARG@8030..8034 - EXPR_INDEX_EXPR@8030..8034 - LHS_EXPR@8030..8031 - EXPR_VAR@8030..8031 - NAME@8030..8031 - IDENT@8030..8031 "a" - L_BRACK@8031..8032 "[" - EXPR_VAR@8032..8033 - NAME@8032..8033 - IDENT@8032..8033 "i" - R_BRACK@8033..8034 "]" - R_PAREN@8034..8035 ")" - WHITESPACE@8035..8036 " " - LT@8036..8037 "<" - WHITESPACE@8037..8038 " " - EXPR_APPLY@8038..8048 - EXPR_VAR@8038..8042 - NAME@8038..8042 - IDENT@8038..8042 "keyF" - ARGS_DESC@8042..8048 - L_PAREN@8042..8043 "(" - ARG@8043..8047 - EXPR_INDEX_EXPR@8043..8047 - LHS_EXPR@8043..8044 - EXPR_VAR@8043..8044 - NAME@8043..8044 - IDENT@8043..8044 "b" - L_BRACK@8044..8045 "[" - EXPR_VAR@8045..8046 - NAME@8045..8046 - IDENT@8045..8046 "j" - R_BRACK@8046..8047 "]" - R_PAREN@8047..8048 ")" - WHITESPACE@8048..8049 " " - THEN_KW@8049..8053 "then" - WHITESPACE@8053..8064 "\n " - TRUE_EXPR@8064..8108 - EXPR_APPLY@8064..8108 - EXPR_VAR@8064..8067 - NAME@8064..8067 - IDENT@8064..8067 "aux" - ARGS_DESC@8067..8108 - L_PAREN@8067..8068 "(" - ARG@8068..8069 - EXPR_VAR@8068..8069 - NAME@8068..8069 - IDENT@8068..8069 "a" - COMMA@8069..8070 "," - WHITESPACE@8070..8071 " " - ARG@8071..8072 - EXPR_VAR@8071..8072 - NAME@8071..8072 - IDENT@8071..8072 "b" - COMMA@8072..8073 "," - WHITESPACE@8073..8074 " " - ARG@8074..8079 - EXPR_BINARY@8074..8079 - LHS_EXPR@8074..8075 - EXPR_VAR@8074..8075 - NAME@8074..8075 - IDENT@8074..8075 "i" - WHITESPACE@8075..8076 " " - PLUS@8076..8077 "+" - WHITESPACE@8077..8078 " " - EXPR_NUMBER@8078..8079 - FLOAT@8078..8079 "1" - COMMA@8079..8080 "," - WHITESPACE@8080..8081 " " - ARG@8081..8082 - EXPR_VAR@8081..8082 - NAME@8081..8082 - IDENT@8081..8082 "j" - COMMA@8082..8083 "," - WHITESPACE@8083..8084 " " - ARG@8084..8096 - EXPR_BINARY@8084..8096 - LHS_EXPR@8084..8087 - EXPR_VAR@8084..8087 - NAME@8084..8087 - IDENT@8084..8087 "acc" - WHITESPACE@8087..8088 " " - PLUS@8088..8089 "+" - WHITESPACE@8089..8090 " " - EXPR_ARRAY@8090..8096 - L_BRACK@8090..8091 "[" - EXPR_INDEX_EXPR@8091..8095 - LHS_EXPR@8091..8092 - EXPR_VAR@8091..8092 - NAME@8091..8092 - IDENT@8091..8092 "a" - L_BRACK@8092..8093 "[" - EXPR_VAR@8093..8094 - NAME@8093..8094 - IDENT@8093..8094 "i" - R_BRACK@8094..8095 "]" - R_BRACK@8095..8096 "]" - R_PAREN@8096..8097 ")" - WHITESPACE@8097..8098 " " - TAILSTRICT_KW@8098..8108 "tailstrict" - WHITESPACE@8108..8117 "\n " - ELSE_KW@8117..8121 "else" - WHITESPACE@8121..8132 "\n " - FALSE_EXPR@8132..8167 - EXPR_APPLY@8132..8167 - EXPR_VAR@8132..8135 - NAME@8132..8135 - IDENT@8132..8135 "aux" - ARGS_DESC@8135..8167 - L_PAREN@8135..8136 "(" - ARG@8136..8137 - EXPR_VAR@8136..8137 - NAME@8136..8137 - IDENT@8136..8137 "a" - COMMA@8137..8138 "," - WHITESPACE@8138..8139 " " - ARG@8139..8140 - EXPR_VAR@8139..8140 - NAME@8139..8140 - IDENT@8139..8140 "b" - COMMA@8140..8141 "," - WHITESPACE@8141..8142 " " - ARG@8142..8143 - EXPR_VAR@8142..8143 - NAME@8142..8143 - IDENT@8142..8143 "i" - COMMA@8143..8144 "," - WHITESPACE@8144..8145 " " - ARG@8145..8150 - EXPR_BINARY@8145..8150 - LHS_EXPR@8145..8146 - EXPR_VAR@8145..8146 - NAME@8145..8146 - IDENT@8145..8146 "j" - WHITESPACE@8146..8147 " " - PLUS@8147..8148 "+" - WHITESPACE@8148..8149 " " - EXPR_NUMBER@8149..8150 - FLOAT@8149..8150 "1" - COMMA@8150..8151 "," - WHITESPACE@8151..8152 " " - ARG@8152..8155 - EXPR_VAR@8152..8155 - NAME@8152..8155 - IDENT@8152..8155 "acc" - R_PAREN@8155..8156 ")" - WHITESPACE@8156..8157 " " - TAILSTRICT_KW@8157..8167 "tailstrict" - SEMI@8167..8168 ";" - WHITESPACE@8168..8173 "\n " - EXPR_APPLY@8173..8203 - EXPR_VAR@8173..8176 - NAME@8173..8176 - IDENT@8173..8176 "aux" - ARGS_DESC@8176..8203 - L_PAREN@8176..8177 "(" - ARG@8177..8178 - EXPR_VAR@8177..8178 - NAME@8177..8178 - IDENT@8177..8178 "a" - COMMA@8178..8179 "," - WHITESPACE@8179..8180 " " - ARG@8180..8181 - EXPR_VAR@8180..8181 - NAME@8180..8181 - IDENT@8180..8181 "b" - COMMA@8181..8182 "," - WHITESPACE@8182..8183 " " - ARG@8183..8184 - EXPR_NUMBER@8183..8184 - FLOAT@8183..8184 "0" - COMMA@8184..8185 "," - WHITESPACE@8185..8186 " " - ARG@8186..8187 - EXPR_NUMBER@8186..8187 - FLOAT@8186..8187 "0" - COMMA@8187..8188 "," - WHITESPACE@8188..8189 " " - ARG@8189..8191 - EXPR_ARRAY@8189..8191 - L_BRACK@8189..8190 "[" - R_BRACK@8190..8191 "]" - R_PAREN@8191..8192 ")" - WHITESPACE@8192..8193 " " - TAILSTRICT_KW@8193..8203 "tailstrict" + MEMBER_FIELD_METHOD@7746..8203 + FIELD_NAME_FIXED@7746..7753 + NAME@7746..7753 + IDENT@7746..7753 "setDiff" + PARAMS_DESC@7753..7768 + L_PAREN@7753..7754 "(" + PARAM@7754..7755 + DESTRUCT_FULL@7754..7755 + NAME@7754..7755 + IDENT@7754..7755 "a" + COMMA@7755..7756 "," + WHITESPACE@7756..7757 " " + PARAM@7757..7758 + DESTRUCT_FULL@7757..7758 + NAME@7757..7758 + IDENT@7757..7758 "b" + COMMA@7758..7759 "," + WHITESPACE@7759..7760 " " + PARAM@7760..7767 + DESTRUCT_FULL@7760..7764 + NAME@7760..7764 + IDENT@7760..7764 "keyF" + ASSIGN@7764..7765 "=" + EXPR_VAR@7765..7767 + NAME@7765..7767 + IDENT@7765..7767 "id" + R_PAREN@7767..7768 ")" + COLONCOLON@7768..7770 "::" + WHITESPACE@7770..7775 "\n " + EXPR_LOCAL@7775..8203 + LOCAL_KW@7775..7780 "local" + WHITESPACE@7780..7781 " " + BIND_FUNCTION@7781..8167 + NAME@7781..7784 + IDENT@7781..7784 "aux" + PARAMS_DESC@7784..7801 + L_PAREN@7784..7785 "(" + PARAM@7785..7786 + DESTRUCT_FULL@7785..7786 + NAME@7785..7786 + IDENT@7785..7786 "a" + COMMA@7786..7787 "," + WHITESPACE@7787..7788 " " + PARAM@7788..7789 + DESTRUCT_FULL@7788..7789 + NAME@7788..7789 + IDENT@7788..7789 "b" + COMMA@7789..7790 "," + WHITESPACE@7790..7791 " " + PARAM@7791..7792 + DESTRUCT_FULL@7791..7792 + NAME@7791..7792 + IDENT@7791..7792 "i" + COMMA@7792..7793 "," + WHITESPACE@7793..7794 " " + PARAM@7794..7795 + DESTRUCT_FULL@7794..7795 + NAME@7794..7795 + IDENT@7794..7795 "j" + COMMA@7795..7796 "," + WHITESPACE@7796..7797 " " + PARAM@7797..7800 + DESTRUCT_FULL@7797..7800 + NAME@7797..7800 + IDENT@7797..7800 "acc" + R_PAREN@7800..7801 ")" + WHITESPACE@7801..7802 " " + ASSIGN@7802..7803 "=" + WHITESPACE@7803..7810 "\n " + EXPR_IF_THEN_ELSE@7810..8167 + IF_KW@7810..7812 "if" + WHITESPACE@7812..7813 " " + EXPR_BINARY@7813..7831 + LHS_EXPR@7813..7814 + EXPR_VAR@7813..7814 + NAME@7813..7814 + IDENT@7813..7814 "i" + WHITESPACE@7814..7815 " " + GE@7815..7817 ">=" + WHITESPACE@7817..7818 " " + EXPR_APPLY@7818..7831 + EXPR_INDEX@7818..7828 + EXPR_VAR@7818..7821 + NAME@7818..7821 + IDENT@7818..7821 "std" + DOT@7821..7822 "." + NAME@7822..7828 + IDENT@7822..7828 "length" + ARGS_DESC@7828..7831 + L_PAREN@7828..7829 "(" + ARG@7829..7830 + EXPR_VAR@7829..7830 + NAME@7829..7830 + IDENT@7829..7830 "a" + R_PAREN@7830..7831 ")" + WHITESPACE@7831..7832 " " + THEN_KW@7832..7836 "then" + WHITESPACE@7836..7845 "\n " + TRUE_EXPR@7845..7848 + EXPR_VAR@7845..7848 + NAME@7845..7848 + IDENT@7845..7848 "acc" + WHITESPACE@7848..7855 "\n " + ELSE_KW@7855..7859 "else" + WHITESPACE@7859..7860 " " + FALSE_EXPR@7860..8167 + EXPR_IF_THEN_ELSE@7860..8167 + IF_KW@7860..7862 "if" + WHITESPACE@7862..7863 " " + EXPR_BINARY@7863..7881 + LHS_EXPR@7863..7864 + EXPR_VAR@7863..7864 + NAME@7863..7864 + IDENT@7863..7864 "j" + WHITESPACE@7864..7865 " " + GE@7865..7867 ">=" + WHITESPACE@7867..7868 " " + EXPR_APPLY@7868..7881 + EXPR_INDEX@7868..7878 + EXPR_VAR@7868..7871 + NAME@7868..7871 + IDENT@7868..7871 "std" + DOT@7871..7872 "." + NAME@7872..7878 + IDENT@7872..7878 "length" + ARGS_DESC@7878..7881 + L_PAREN@7878..7879 "(" + ARG@7879..7880 + EXPR_VAR@7879..7880 + NAME@7879..7880 + IDENT@7879..7880 "b" + R_PAREN@7880..7881 ")" + WHITESPACE@7881..7882 " " + THEN_KW@7882..7886 "then" + WHITESPACE@7886..7895 "\n " + TRUE_EXPR@7895..7906 + EXPR_BINARY@7895..7906 + LHS_EXPR@7895..7898 + EXPR_VAR@7895..7898 + NAME@7895..7898 + IDENT@7895..7898 "acc" + WHITESPACE@7898..7899 " " + PLUS@7899..7900 "+" + WHITESPACE@7900..7901 " " + EXPR_SLICE@7901..7906 + EXPR_VAR@7901..7902 + NAME@7901..7902 + IDENT@7901..7902 "a" + SLICE_DESC@7902..7906 + L_BRACK@7902..7903 "[" + EXPR_VAR@7903..7904 + NAME@7903..7904 + IDENT@7903..7904 "i" + COLON@7904..7905 ":" + R_BRACK@7905..7906 "]" + WHITESPACE@7906..7913 "\n " + ELSE_KW@7913..7917 "else" + WHITESPACE@7917..7926 "\n " + FALSE_EXPR@7926..8167 + EXPR_IF_THEN_ELSE@7926..8167 + IF_KW@7926..7928 "if" + WHITESPACE@7928..7929 " " + EXPR_BINARY@7929..7953 + LHS_EXPR@7929..7939 + EXPR_APPLY@7929..7939 + EXPR_VAR@7929..7933 + NAME@7929..7933 + IDENT@7929..7933 "keyF" + ARGS_DESC@7933..7939 + L_PAREN@7933..7934 "(" + ARG@7934..7938 + EXPR_INDEX_EXPR@7934..7938 + LHS_EXPR@7934..7935 + EXPR_VAR@7934..7935 + NAME@7934..7935 + IDENT@7934..7935 "a" + L_BRACK@7935..7936 "[" + EXPR_VAR@7936..7937 + NAME@7936..7937 + IDENT@7936..7937 "i" + R_BRACK@7937..7938 "]" + R_PAREN@7938..7939 ")" + WHITESPACE@7939..7940 " " + EQ@7940..7942 "==" + WHITESPACE@7942..7943 " " + EXPR_APPLY@7943..7953 + EXPR_VAR@7943..7947 + NAME@7943..7947 + IDENT@7943..7947 "keyF" + ARGS_DESC@7947..7953 + L_PAREN@7947..7948 "(" + ARG@7948..7952 + EXPR_INDEX_EXPR@7948..7952 + LHS_EXPR@7948..7949 + EXPR_VAR@7948..7949 + NAME@7948..7949 + IDENT@7948..7949 "b" + L_BRACK@7949..7950 "[" + EXPR_VAR@7950..7951 + NAME@7950..7951 + IDENT@7950..7951 "j" + R_BRACK@7951..7952 "]" + R_PAREN@7952..7953 ")" + WHITESPACE@7953..7954 " " + THEN_KW@7954..7958 "then" + WHITESPACE@7958..7969 "\n " + TRUE_EXPR@7969..8008 + EXPR_APPLY@7969..8008 + EXPR_VAR@7969..7972 + NAME@7969..7972 + IDENT@7969..7972 "aux" + ARGS_DESC@7972..8008 + L_PAREN@7972..7973 "(" + ARG@7973..7974 + EXPR_VAR@7973..7974 + NAME@7973..7974 + IDENT@7973..7974 "a" + COMMA@7974..7975 "," + WHITESPACE@7975..7976 " " + ARG@7976..7977 + EXPR_VAR@7976..7977 + NAME@7976..7977 + IDENT@7976..7977 "b" + COMMA@7977..7978 "," + WHITESPACE@7978..7979 " " + ARG@7979..7984 + EXPR_BINARY@7979..7984 + LHS_EXPR@7979..7980 + EXPR_VAR@7979..7980 + NAME@7979..7980 + IDENT@7979..7980 "i" + WHITESPACE@7980..7981 " " + PLUS@7981..7982 "+" + WHITESPACE@7982..7983 " " + EXPR_NUMBER@7983..7984 + FLOAT@7983..7984 "1" + COMMA@7984..7985 "," + WHITESPACE@7985..7986 " " + ARG@7986..7991 + EXPR_BINARY@7986..7991 + LHS_EXPR@7986..7987 + EXPR_VAR@7986..7987 + NAME@7986..7987 + IDENT@7986..7987 "j" + WHITESPACE@7987..7988 " " + PLUS@7988..7989 "+" + WHITESPACE@7989..7990 " " + EXPR_NUMBER@7990..7991 + FLOAT@7990..7991 "1" + COMMA@7991..7992 "," + WHITESPACE@7992..7993 " " + ARG@7993..7996 + EXPR_VAR@7993..7996 + NAME@7993..7996 + IDENT@7993..7996 "acc" + R_PAREN@7996..7997 ")" + WHITESPACE@7997..7998 " " + TAILSTRICT_KW@7998..8008 "tailstrict" + WHITESPACE@8008..8017 "\n " + ELSE_KW@8017..8021 "else" + WHITESPACE@8021..8022 " " + FALSE_EXPR@8022..8167 + EXPR_IF_THEN_ELSE@8022..8167 + IF_KW@8022..8024 "if" + WHITESPACE@8024..8025 " " + EXPR_BINARY@8025..8048 + LHS_EXPR@8025..8035 + EXPR_APPLY@8025..8035 + EXPR_VAR@8025..8029 + NAME@8025..8029 + IDENT@8025..8029 "keyF" + ARGS_DESC@8029..8035 + L_PAREN@8029..8030 "(" + ARG@8030..8034 + EXPR_INDEX_EXPR@8030..8034 + LHS_EXPR@8030..8031 + EXPR_VAR@8030..8031 + NAME@8030..8031 + IDENT@8030..8031 "a" + L_BRACK@8031..8032 "[" + EXPR_VAR@8032..8033 + NAME@8032..8033 + IDENT@8032..8033 "i" + R_BRACK@8033..8034 "]" + R_PAREN@8034..8035 ")" + WHITESPACE@8035..8036 " " + LT@8036..8037 "<" + WHITESPACE@8037..8038 " " + EXPR_APPLY@8038..8048 + EXPR_VAR@8038..8042 + NAME@8038..8042 + IDENT@8038..8042 "keyF" + ARGS_DESC@8042..8048 + L_PAREN@8042..8043 "(" + ARG@8043..8047 + EXPR_INDEX_EXPR@8043..8047 + LHS_EXPR@8043..8044 + EXPR_VAR@8043..8044 + NAME@8043..8044 + IDENT@8043..8044 "b" + L_BRACK@8044..8045 "[" + EXPR_VAR@8045..8046 + NAME@8045..8046 + IDENT@8045..8046 "j" + R_BRACK@8046..8047 "]" + R_PAREN@8047..8048 ")" + WHITESPACE@8048..8049 " " + THEN_KW@8049..8053 "then" + WHITESPACE@8053..8064 "\n " + TRUE_EXPR@8064..8108 + EXPR_APPLY@8064..8108 + EXPR_VAR@8064..8067 + NAME@8064..8067 + IDENT@8064..8067 "aux" + ARGS_DESC@8067..8108 + L_PAREN@8067..8068 "(" + ARG@8068..8069 + EXPR_VAR@8068..8069 + NAME@8068..8069 + IDENT@8068..8069 "a" + COMMA@8069..8070 "," + WHITESPACE@8070..8071 " " + ARG@8071..8072 + EXPR_VAR@8071..8072 + NAME@8071..8072 + IDENT@8071..8072 "b" + COMMA@8072..8073 "," + WHITESPACE@8073..8074 " " + ARG@8074..8079 + EXPR_BINARY@8074..8079 + LHS_EXPR@8074..8075 + EXPR_VAR@8074..8075 + NAME@8074..8075 + IDENT@8074..8075 "i" + WHITESPACE@8075..8076 " " + PLUS@8076..8077 "+" + WHITESPACE@8077..8078 " " + EXPR_NUMBER@8078..8079 + FLOAT@8078..8079 "1" + COMMA@8079..8080 "," + WHITESPACE@8080..8081 " " + ARG@8081..8082 + EXPR_VAR@8081..8082 + NAME@8081..8082 + IDENT@8081..8082 "j" + COMMA@8082..8083 "," + WHITESPACE@8083..8084 " " + ARG@8084..8096 + EXPR_BINARY@8084..8096 + LHS_EXPR@8084..8087 + EXPR_VAR@8084..8087 + NAME@8084..8087 + IDENT@8084..8087 "acc" + WHITESPACE@8087..8088 " " + PLUS@8088..8089 "+" + WHITESPACE@8089..8090 " " + EXPR_ARRAY@8090..8096 + L_BRACK@8090..8091 "[" + EXPR_INDEX_EXPR@8091..8095 + LHS_EXPR@8091..8092 + EXPR_VAR@8091..8092 + NAME@8091..8092 + IDENT@8091..8092 "a" + L_BRACK@8092..8093 "[" + EXPR_VAR@8093..8094 + NAME@8093..8094 + IDENT@8093..8094 "i" + R_BRACK@8094..8095 "]" + R_BRACK@8095..8096 "]" + R_PAREN@8096..8097 ")" + WHITESPACE@8097..8098 " " + TAILSTRICT_KW@8098..8108 "tailstrict" + WHITESPACE@8108..8117 "\n " + ELSE_KW@8117..8121 "else" + WHITESPACE@8121..8132 "\n " + FALSE_EXPR@8132..8167 + EXPR_APPLY@8132..8167 + EXPR_VAR@8132..8135 + NAME@8132..8135 + IDENT@8132..8135 "aux" + ARGS_DESC@8135..8167 + L_PAREN@8135..8136 "(" + ARG@8136..8137 + EXPR_VAR@8136..8137 + NAME@8136..8137 + IDENT@8136..8137 "a" + COMMA@8137..8138 "," + WHITESPACE@8138..8139 " " + ARG@8139..8140 + EXPR_VAR@8139..8140 + NAME@8139..8140 + IDENT@8139..8140 "b" + COMMA@8140..8141 "," + WHITESPACE@8141..8142 " " + ARG@8142..8143 + EXPR_VAR@8142..8143 + NAME@8142..8143 + IDENT@8142..8143 "i" + COMMA@8143..8144 "," + WHITESPACE@8144..8145 " " + ARG@8145..8150 + EXPR_BINARY@8145..8150 + LHS_EXPR@8145..8146 + EXPR_VAR@8145..8146 + NAME@8145..8146 + IDENT@8145..8146 "j" + WHITESPACE@8146..8147 " " + PLUS@8147..8148 "+" + WHITESPACE@8148..8149 " " + EXPR_NUMBER@8149..8150 + FLOAT@8149..8150 "1" + COMMA@8150..8151 "," + WHITESPACE@8151..8152 " " + ARG@8152..8155 + EXPR_VAR@8152..8155 + NAME@8152..8155 + IDENT@8152..8155 "acc" + R_PAREN@8155..8156 ")" + WHITESPACE@8156..8157 " " + TAILSTRICT_KW@8157..8167 "tailstrict" + SEMI@8167..8168 ";" + WHITESPACE@8168..8173 "\n " + EXPR_APPLY@8173..8203 + EXPR_VAR@8173..8176 + NAME@8173..8176 + IDENT@8173..8176 "aux" + ARGS_DESC@8176..8203 + L_PAREN@8176..8177 "(" + ARG@8177..8178 + EXPR_VAR@8177..8178 + NAME@8177..8178 + IDENT@8177..8178 "a" + COMMA@8178..8179 "," + WHITESPACE@8179..8180 " " + ARG@8180..8181 + EXPR_VAR@8180..8181 + NAME@8180..8181 + IDENT@8180..8181 "b" + COMMA@8181..8182 "," + WHITESPACE@8182..8183 " " + ARG@8183..8184 + EXPR_NUMBER@8183..8184 + FLOAT@8183..8184 "0" + COMMA@8184..8185 "," + WHITESPACE@8185..8186 " " + ARG@8186..8187 + EXPR_NUMBER@8186..8187 + FLOAT@8186..8187 "0" + COMMA@8187..8188 "," + WHITESPACE@8188..8189 " " + ARG@8189..8191 + EXPR_ARRAY@8189..8191 + L_BRACK@8189..8190 "[" + R_BRACK@8190..8191 "]" + R_PAREN@8191..8192 ")" + WHITESPACE@8192..8193 " " + TAILSTRICT_KW@8193..8203 "tailstrict" COMMA@8203..8204 "," WHITESPACE@8204..8208 "\n\n " - MEMBER_FIELD@8208..8996 - FIELD_METHOD@8208..8996 - FIELD_NAME_FIXED@8208..8218 - NAME@8208..8218 - IDENT@8208..8218 "mergePatch" - PARAMS_DESC@8218..8233 - L_PAREN@8218..8219 "(" - PARAM@8219..8225 - DESTRUCT_FULL@8219..8225 - NAME@8219..8225 - IDENT@8219..8225 "target" - COMMA@8225..8226 "," - WHITESPACE@8226..8227 " " - PARAM@8227..8232 - DESTRUCT_FULL@8227..8232 - NAME@8227..8232 - IDENT@8227..8232 "patch" - R_PAREN@8232..8233 ")" - COLONCOLON@8233..8235 "::" - WHITESPACE@8235..8240 "\n " - EXPR_IF_THEN_ELSE@8240..8996 - IF_KW@8240..8242 "if" - WHITESPACE@8242..8243 " " - EXPR_APPLY@8243..8262 - EXPR_INDEX@8243..8255 - EXPR_VAR@8243..8246 - NAME@8243..8246 - IDENT@8243..8246 "std" - DOT@8246..8247 "." - NAME@8247..8255 - IDENT@8247..8255 "isObject" - ARGS_DESC@8255..8262 - L_PAREN@8255..8256 "(" - ARG@8256..8261 - EXPR_VAR@8256..8261 - NAME@8256..8261 - IDENT@8256..8261 "patch" - R_PAREN@8261..8262 ")" - WHITESPACE@8262..8263 " " - THEN_KW@8263..8267 "then" - WHITESPACE@8267..8274 "\n " - TRUE_EXPR@8274..8975 - EXPR_LOCAL@8274..8975 - LOCAL_KW@8274..8279 "local" - WHITESPACE@8279..8280 " " - BIND_DESTRUCT@8280..8347 - DESTRUCT_FULL@8280..8293 - NAME@8280..8293 - IDENT@8280..8293 "target_object" - WHITESPACE@8293..8294 " " - ASSIGN@8294..8295 "=" - WHITESPACE@8295..8304 "\n " - EXPR_IF_THEN_ELSE@8304..8347 - IF_KW@8304..8306 "if" - WHITESPACE@8306..8307 " " - EXPR_APPLY@8307..8327 - EXPR_INDEX@8307..8319 - EXPR_VAR@8307..8310 - NAME@8307..8310 - IDENT@8307..8310 "std" - DOT@8310..8311 "." - NAME@8311..8319 - IDENT@8311..8319 "isObject" - ARGS_DESC@8319..8327 - L_PAREN@8319..8320 "(" - ARG@8320..8326 - EXPR_VAR@8320..8326 - NAME@8320..8326 - IDENT@8320..8326 "target" - R_PAREN@8326..8327 ")" - WHITESPACE@8327..8328 " " - THEN_KW@8328..8332 "then" - WHITESPACE@8332..8333 " " - TRUE_EXPR@8333..8339 - EXPR_VAR@8333..8339 - NAME@8333..8339 - IDENT@8333..8339 "target" - WHITESPACE@8339..8340 " " - ELSE_KW@8340..8344 "else" - WHITESPACE@8344..8345 " " - FALSE_EXPR@8345..8347 - EXPR_OBJECT@8345..8347 - OBJ_BODY_MEMBER_LIST@8345..8347 - L_BRACE@8345..8346 "{" - R_BRACE@8346..8347 "}" - SEMI@8347..8348 ";" - WHITESPACE@8348..8356 "\n\n " - EXPR_LOCAL@8356..8975 - LOCAL_KW@8356..8361 "local" - WHITESPACE@8361..8362 " " - BIND_DESTRUCT@8362..8461 - DESTRUCT_FULL@8362..8375 - NAME@8362..8375 - IDENT@8362..8375 "target_fields" - WHITESPACE@8375..8376 " " - ASSIGN@8376..8377 "=" - WHITESPACE@8377..8386 "\n " - EXPR_IF_THEN_ELSE@8386..8461 - IF_KW@8386..8388 "if" - WHITESPACE@8388..8389 " " - EXPR_APPLY@8389..8416 - EXPR_INDEX@8389..8401 - EXPR_VAR@8389..8392 - NAME@8389..8392 - IDENT@8389..8392 "std" - DOT@8392..8393 "." - NAME@8393..8401 - IDENT@8393..8401 "isObject" - ARGS_DESC@8401..8416 - L_PAREN@8401..8402 "(" - ARG@8402..8415 - EXPR_VAR@8402..8415 - NAME@8402..8415 - IDENT@8402..8415 "target_object" - R_PAREN@8415..8416 ")" - WHITESPACE@8416..8417 " " - THEN_KW@8417..8421 "then" - WHITESPACE@8421..8422 " " - TRUE_EXPR@8422..8453 - EXPR_APPLY@8422..8453 - EXPR_INDEX@8422..8438 - EXPR_VAR@8422..8425 - NAME@8422..8425 - IDENT@8422..8425 "std" - DOT@8425..8426 "." - NAME@8426..8438 - IDENT@8426..8438 "objectFields" - ARGS_DESC@8438..8453 - L_PAREN@8438..8439 "(" - ARG@8439..8452 - EXPR_VAR@8439..8452 - NAME@8439..8452 - IDENT@8439..8452 "target_object" - R_PAREN@8452..8453 ")" - WHITESPACE@8453..8454 " " - ELSE_KW@8454..8458 "else" - WHITESPACE@8458..8459 " " - FALSE_EXPR@8459..8461 - EXPR_ARRAY@8459..8461 - L_BRACK@8459..8460 "[" - R_BRACK@8460..8461 "]" - SEMI@8461..8462 ";" - WHITESPACE@8462..8470 "\n\n " - EXPR_LOCAL@8470..8975 - LOCAL_KW@8470..8475 "local" - WHITESPACE@8475..8476 " " - BIND_DESTRUCT@8476..8546 - DESTRUCT_FULL@8476..8487 - NAME@8476..8487 - IDENT@8476..8487 "null_fields" - WHITESPACE@8487..8488 " " - ASSIGN@8488..8489 "=" - WHITESPACE@8489..8490 " " - EXPR_ARRAY_COMP@8490..8546 - L_BRACK@8490..8491 "[" - EXPR_VAR@8491..8492 - NAME@8491..8492 - IDENT@8491..8492 "k" - WHITESPACE@8492..8493 " " - FOR_SPEC@8493..8525 - FOR_KW@8493..8496 "for" - WHITESPACE@8496..8497 " " - NAME@8497..8498 - IDENT@8497..8498 "k" - WHITESPACE@8498..8499 " " - IN_KW@8499..8501 "in" - WHITESPACE@8501..8502 " " - EXPR_APPLY@8502..8525 - EXPR_INDEX@8502..8518 - EXPR_VAR@8502..8505 - NAME@8502..8505 - IDENT@8502..8505 "std" - DOT@8505..8506 "." - NAME@8506..8518 - IDENT@8506..8518 "objectFields" - ARGS_DESC@8518..8525 - L_PAREN@8518..8519 "(" - ARG@8519..8524 - EXPR_VAR@8519..8524 - NAME@8519..8524 - IDENT@8519..8524 "patch" - R_PAREN@8524..8525 ")" - WHITESPACE@8525..8526 " " - IF_SPEC@8526..8545 - IF_KW@8526..8528 "if" - WHITESPACE@8528..8529 " " - EXPR_BINARY@8529..8545 - LHS_EXPR@8529..8537 - EXPR_INDEX_EXPR@8529..8537 - LHS_EXPR@8529..8534 - EXPR_VAR@8529..8534 - NAME@8529..8534 - IDENT@8529..8534 "patch" - L_BRACK@8534..8535 "[" - EXPR_VAR@8535..8536 - NAME@8535..8536 - IDENT@8535..8536 "k" - R_BRACK@8536..8537 "]" - WHITESPACE@8537..8538 " " - EQ@8538..8540 "==" - WHITESPACE@8540..8541 " " - EXPR_LITERAL@8541..8545 - NULL_KW@8541..8545 "null" - R_BRACK@8545..8546 "]" - SEMI@8546..8547 ";" - WHITESPACE@8547..8554 "\n " - EXPR_LOCAL@8554..8975 - LOCAL_KW@8554..8559 "local" - WHITESPACE@8559..8560 " " - BIND_DESTRUCT@8560..8626 - DESTRUCT_FULL@8560..8571 - NAME@8560..8571 - IDENT@8560..8571 "both_fields" - WHITESPACE@8571..8572 " " - ASSIGN@8572..8573 "=" - WHITESPACE@8573..8574 " " - EXPR_APPLY@8574..8626 - EXPR_INDEX@8574..8586 - EXPR_VAR@8574..8577 - NAME@8574..8577 - IDENT@8574..8577 "std" - DOT@8577..8578 "." - NAME@8578..8586 - IDENT@8578..8586 "setUnion" - ARGS_DESC@8586..8626 - L_PAREN@8586..8587 "(" - ARG@8587..8600 - EXPR_VAR@8587..8600 - NAME@8587..8600 - IDENT@8587..8600 "target_fields" - COMMA@8600..8601 "," - WHITESPACE@8601..8602 " " - ARG@8602..8625 - EXPR_APPLY@8602..8625 - EXPR_INDEX@8602..8618 - EXPR_VAR@8602..8605 - NAME@8602..8605 - IDENT@8602..8605 "std" - DOT@8605..8606 "." - NAME@8606..8618 - IDENT@8606..8618 "objectFields" - ARGS_DESC@8618..8625 - L_PAREN@8618..8619 "(" - ARG@8619..8624 - EXPR_VAR@8619..8624 - NAME@8619..8624 - IDENT@8619..8624 "patch" - R_PAREN@8624..8625 ")" - R_PAREN@8625..8626 ")" - SEMI@8626..8627 ";" - WHITESPACE@8627..8635 "\n\n " - EXPR_OBJECT@8635..8975 - OBJ_BODY_MEMBER_LIST@8635..8975 - L_BRACE@8635..8636 "{" - WHITESPACE@8636..8645 "\n " - MEMBER_FIELD@8645..8967 - FIELD_NORMAL@8645..8912 - FIELD_NAME_DYNAMIC@8645..8648 - L_BRACK@8645..8646 "[" - EXPR_VAR@8646..8647 - NAME@8646..8647 - IDENT@8646..8647 "k" - R_BRACK@8647..8648 "]" - COLON@8648..8649 ":" - WHITESPACE@8649..8660 "\n " - EXPR_IF_THEN_ELSE@8660..8912 - IF_KW@8660..8662 "if" - WHITESPACE@8662..8663 " " - EXPR_UNARY@8663..8687 - NOT@8663..8664 "!" - EXPR_APPLY@8664..8687 - EXPR_INDEX@8664..8677 - EXPR_VAR@8664..8667 - NAME@8664..8667 - IDENT@8664..8667 "std" - DOT@8667..8668 "." - NAME@8668..8677 - IDENT@8668..8677 "objectHas" - ARGS_DESC@8677..8687 - L_PAREN@8677..8678 "(" - ARG@8678..8683 - EXPR_VAR@8678..8683 - NAME@8678..8683 - IDENT@8678..8683 "patch" - COMMA@8683..8684 "," - WHITESPACE@8684..8685 " " - ARG@8685..8686 - EXPR_VAR@8685..8686 - NAME@8685..8686 - IDENT@8685..8686 "k" - R_PAREN@8686..8687 ")" - WHITESPACE@8687..8688 " " - THEN_KW@8688..8692 "then" - WHITESPACE@8692..8705 "\n " - TRUE_EXPR@8705..8721 - EXPR_INDEX_EXPR@8705..8721 - LHS_EXPR@8705..8718 - EXPR_VAR@8705..8718 - NAME@8705..8718 - IDENT@8705..8718 "target_object" - L_BRACK@8718..8719 "[" - EXPR_VAR@8719..8720 - NAME@8719..8720 - IDENT@8719..8720 "k" - R_BRACK@8720..8721 "]" - WHITESPACE@8721..8732 "\n " - ELSE_KW@8732..8736 "else" - WHITESPACE@8736..8737 " " - FALSE_EXPR@8737..8912 - EXPR_IF_THEN_ELSE@8737..8912 - IF_KW@8737..8739 "if" - WHITESPACE@8739..8740 " " - EXPR_UNARY@8740..8772 - NOT@8740..8741 "!" - EXPR_APPLY@8741..8772 - EXPR_INDEX@8741..8754 - EXPR_VAR@8741..8744 - NAME@8741..8744 - IDENT@8741..8744 "std" - DOT@8744..8745 "." - NAME@8745..8754 - IDENT@8745..8754 "objectHas" - ARGS_DESC@8754..8772 - L_PAREN@8754..8755 "(" - ARG@8755..8768 - EXPR_VAR@8755..8768 - NAME@8755..8768 - IDENT@8755..8768 "target_object" - COMMA@8768..8769 "," - WHITESPACE@8769..8770 " " - ARG@8770..8771 - EXPR_VAR@8770..8771 - NAME@8770..8771 - IDENT@8770..8771 "k" - R_PAREN@8771..8772 ")" - WHITESPACE@8772..8773 " " - THEN_KW@8773..8777 "then" - WHITESPACE@8777..8790 "\n " - TRUE_EXPR@8790..8831 - EXPR_APPLY@8790..8831 - EXPR_INDEX@8790..8804 - EXPR_VAR@8790..8793 - NAME@8790..8793 - IDENT@8790..8793 "std" - DOT@8793..8794 "." - NAME@8794..8804 - IDENT@8794..8804 "mergePatch" - ARGS_DESC@8804..8831 - L_PAREN@8804..8805 "(" - ARG@8805..8809 - EXPR_LITERAL@8805..8809 - NULL_KW@8805..8809 "null" - COMMA@8809..8810 "," - WHITESPACE@8810..8811 " " - ARG@8811..8819 - EXPR_INDEX_EXPR@8811..8819 - LHS_EXPR@8811..8816 - EXPR_VAR@8811..8816 - NAME@8811..8816 - IDENT@8811..8816 "patch" - L_BRACK@8816..8817 "[" - EXPR_VAR@8817..8818 - NAME@8817..8818 - IDENT@8817..8818 "k" - R_BRACK@8818..8819 "]" - R_PAREN@8819..8820 ")" - WHITESPACE@8820..8821 " " - TAILSTRICT_KW@8821..8831 "tailstrict" - WHITESPACE@8831..8842 "\n " - ELSE_KW@8842..8846 "else" - WHITESPACE@8846..8859 "\n " - FALSE_EXPR@8859..8912 - EXPR_APPLY@8859..8912 - EXPR_INDEX@8859..8873 - EXPR_VAR@8859..8862 - NAME@8859..8862 - IDENT@8859..8862 "std" - DOT@8862..8863 "." - NAME@8863..8873 - IDENT@8863..8873 "mergePatch" - ARGS_DESC@8873..8912 - L_PAREN@8873..8874 "(" - ARG@8874..8890 - EXPR_INDEX_EXPR@8874..8890 - LHS_EXPR@8874..8887 - EXPR_VAR@8874..8887 - NAME@8874..8887 - IDENT@8874..8887 "target_object" - L_BRACK@8887..8888 "[" - EXPR_VAR@8888..8889 - NAME@8888..8889 - IDENT@8888..8889 "k" - R_BRACK@8889..8890 "]" - COMMA@8890..8891 "," - WHITESPACE@8891..8892 " " - ARG@8892..8900 - EXPR_INDEX_EXPR@8892..8900 - LHS_EXPR@8892..8897 - EXPR_VAR@8892..8897 - NAME@8892..8897 - IDENT@8892..8897 "patch" - L_BRACK@8897..8898 "[" - EXPR_VAR@8898..8899 - NAME@8898..8899 - IDENT@8898..8899 "k" - R_BRACK@8899..8900 "]" - R_PAREN@8900..8901 ")" - WHITESPACE@8901..8902 " " - TAILSTRICT_KW@8902..8912 "tailstrict" - WHITESPACE@8912..8921 "\n " - FOR_SPEC@8921..8967 - FOR_KW@8921..8924 "for" - WHITESPACE@8924..8925 " " - NAME@8925..8926 - IDENT@8925..8926 "k" - WHITESPACE@8926..8927 " " - IN_KW@8927..8929 "in" - WHITESPACE@8929..8930 " " - EXPR_APPLY@8930..8967 - EXPR_INDEX@8930..8941 - EXPR_VAR@8930..8933 - NAME@8930..8933 - IDENT@8930..8933 "std" - DOT@8933..8934 "." - NAME@8934..8941 - IDENT@8934..8941 "setDiff" - ARGS_DESC@8941..8967 - L_PAREN@8941..8942 "(" - ARG@8942..8953 - EXPR_VAR@8942..8953 - NAME@8942..8953 - IDENT@8942..8953 "both_fields" - COMMA@8953..8954 "," - WHITESPACE@8954..8955 " " - ARG@8955..8966 - EXPR_VAR@8955..8966 - NAME@8955..8966 - IDENT@8955..8966 "null_fields" - R_PAREN@8966..8967 ")" - WHITESPACE@8967..8974 "\n " - R_BRACE@8974..8975 "}" - WHITESPACE@8975..8980 "\n " - ELSE_KW@8980..8984 "else" - WHITESPACE@8984..8991 "\n " - FALSE_EXPR@8991..8996 - EXPR_VAR@8991..8996 - NAME@8991..8996 - IDENT@8991..8996 "patch" + MEMBER_FIELD_METHOD@8208..8996 + FIELD_NAME_FIXED@8208..8218 + NAME@8208..8218 + IDENT@8208..8218 "mergePatch" + PARAMS_DESC@8218..8233 + L_PAREN@8218..8219 "(" + PARAM@8219..8225 + DESTRUCT_FULL@8219..8225 + NAME@8219..8225 + IDENT@8219..8225 "target" + COMMA@8225..8226 "," + WHITESPACE@8226..8227 " " + PARAM@8227..8232 + DESTRUCT_FULL@8227..8232 + NAME@8227..8232 + IDENT@8227..8232 "patch" + R_PAREN@8232..8233 ")" + COLONCOLON@8233..8235 "::" + WHITESPACE@8235..8240 "\n " + EXPR_IF_THEN_ELSE@8240..8996 + IF_KW@8240..8242 "if" + WHITESPACE@8242..8243 " " + EXPR_APPLY@8243..8262 + EXPR_INDEX@8243..8255 + EXPR_VAR@8243..8246 + NAME@8243..8246 + IDENT@8243..8246 "std" + DOT@8246..8247 "." + NAME@8247..8255 + IDENT@8247..8255 "isObject" + ARGS_DESC@8255..8262 + L_PAREN@8255..8256 "(" + ARG@8256..8261 + EXPR_VAR@8256..8261 + NAME@8256..8261 + IDENT@8256..8261 "patch" + R_PAREN@8261..8262 ")" + WHITESPACE@8262..8263 " " + THEN_KW@8263..8267 "then" + WHITESPACE@8267..8274 "\n " + TRUE_EXPR@8274..8975 + EXPR_LOCAL@8274..8975 + LOCAL_KW@8274..8279 "local" + WHITESPACE@8279..8280 " " + BIND_DESTRUCT@8280..8347 + DESTRUCT_FULL@8280..8293 + NAME@8280..8293 + IDENT@8280..8293 "target_object" + WHITESPACE@8293..8294 " " + ASSIGN@8294..8295 "=" + WHITESPACE@8295..8304 "\n " + EXPR_IF_THEN_ELSE@8304..8347 + IF_KW@8304..8306 "if" + WHITESPACE@8306..8307 " " + EXPR_APPLY@8307..8327 + EXPR_INDEX@8307..8319 + EXPR_VAR@8307..8310 + NAME@8307..8310 + IDENT@8307..8310 "std" + DOT@8310..8311 "." + NAME@8311..8319 + IDENT@8311..8319 "isObject" + ARGS_DESC@8319..8327 + L_PAREN@8319..8320 "(" + ARG@8320..8326 + EXPR_VAR@8320..8326 + NAME@8320..8326 + IDENT@8320..8326 "target" + R_PAREN@8326..8327 ")" + WHITESPACE@8327..8328 " " + THEN_KW@8328..8332 "then" + WHITESPACE@8332..8333 " " + TRUE_EXPR@8333..8339 + EXPR_VAR@8333..8339 + NAME@8333..8339 + IDENT@8333..8339 "target" + WHITESPACE@8339..8340 " " + ELSE_KW@8340..8344 "else" + WHITESPACE@8344..8345 " " + FALSE_EXPR@8345..8347 + EXPR_OBJECT@8345..8347 + OBJ_BODY_MEMBER_LIST@8345..8347 + L_BRACE@8345..8346 "{" + R_BRACE@8346..8347 "}" + SEMI@8347..8348 ";" + WHITESPACE@8348..8356 "\n\n " + EXPR_LOCAL@8356..8975 + LOCAL_KW@8356..8361 "local" + WHITESPACE@8361..8362 " " + BIND_DESTRUCT@8362..8461 + DESTRUCT_FULL@8362..8375 + NAME@8362..8375 + IDENT@8362..8375 "target_fields" + WHITESPACE@8375..8376 " " + ASSIGN@8376..8377 "=" + WHITESPACE@8377..8386 "\n " + EXPR_IF_THEN_ELSE@8386..8461 + IF_KW@8386..8388 "if" + WHITESPACE@8388..8389 " " + EXPR_APPLY@8389..8416 + EXPR_INDEX@8389..8401 + EXPR_VAR@8389..8392 + NAME@8389..8392 + IDENT@8389..8392 "std" + DOT@8392..8393 "." + NAME@8393..8401 + IDENT@8393..8401 "isObject" + ARGS_DESC@8401..8416 + L_PAREN@8401..8402 "(" + ARG@8402..8415 + EXPR_VAR@8402..8415 + NAME@8402..8415 + IDENT@8402..8415 "target_object" + R_PAREN@8415..8416 ")" + WHITESPACE@8416..8417 " " + THEN_KW@8417..8421 "then" + WHITESPACE@8421..8422 " " + TRUE_EXPR@8422..8453 + EXPR_APPLY@8422..8453 + EXPR_INDEX@8422..8438 + EXPR_VAR@8422..8425 + NAME@8422..8425 + IDENT@8422..8425 "std" + DOT@8425..8426 "." + NAME@8426..8438 + IDENT@8426..8438 "objectFields" + ARGS_DESC@8438..8453 + L_PAREN@8438..8439 "(" + ARG@8439..8452 + EXPR_VAR@8439..8452 + NAME@8439..8452 + IDENT@8439..8452 "target_object" + R_PAREN@8452..8453 ")" + WHITESPACE@8453..8454 " " + ELSE_KW@8454..8458 "else" + WHITESPACE@8458..8459 " " + FALSE_EXPR@8459..8461 + EXPR_ARRAY@8459..8461 + L_BRACK@8459..8460 "[" + R_BRACK@8460..8461 "]" + SEMI@8461..8462 ";" + WHITESPACE@8462..8470 "\n\n " + EXPR_LOCAL@8470..8975 + LOCAL_KW@8470..8475 "local" + WHITESPACE@8475..8476 " " + BIND_DESTRUCT@8476..8546 + DESTRUCT_FULL@8476..8487 + NAME@8476..8487 + IDENT@8476..8487 "null_fields" + WHITESPACE@8487..8488 " " + ASSIGN@8488..8489 "=" + WHITESPACE@8489..8490 " " + EXPR_ARRAY_COMP@8490..8546 + L_BRACK@8490..8491 "[" + EXPR_VAR@8491..8492 + NAME@8491..8492 + IDENT@8491..8492 "k" + WHITESPACE@8492..8493 " " + FOR_SPEC@8493..8525 + FOR_KW@8493..8496 "for" + WHITESPACE@8496..8497 " " + NAME@8497..8498 + IDENT@8497..8498 "k" + WHITESPACE@8498..8499 " " + IN_KW@8499..8501 "in" + WHITESPACE@8501..8502 " " + EXPR_APPLY@8502..8525 + EXPR_INDEX@8502..8518 + EXPR_VAR@8502..8505 + NAME@8502..8505 + IDENT@8502..8505 "std" + DOT@8505..8506 "." + NAME@8506..8518 + IDENT@8506..8518 "objectFields" + ARGS_DESC@8518..8525 + L_PAREN@8518..8519 "(" + ARG@8519..8524 + EXPR_VAR@8519..8524 + NAME@8519..8524 + IDENT@8519..8524 "patch" + R_PAREN@8524..8525 ")" + WHITESPACE@8525..8526 " " + IF_SPEC@8526..8545 + IF_KW@8526..8528 "if" + WHITESPACE@8528..8529 " " + EXPR_BINARY@8529..8545 + LHS_EXPR@8529..8537 + EXPR_INDEX_EXPR@8529..8537 + LHS_EXPR@8529..8534 + EXPR_VAR@8529..8534 + NAME@8529..8534 + IDENT@8529..8534 "patch" + L_BRACK@8534..8535 "[" + EXPR_VAR@8535..8536 + NAME@8535..8536 + IDENT@8535..8536 "k" + R_BRACK@8536..8537 "]" + WHITESPACE@8537..8538 " " + EQ@8538..8540 "==" + WHITESPACE@8540..8541 " " + EXPR_LITERAL@8541..8545 + NULL_KW@8541..8545 "null" + R_BRACK@8545..8546 "]" + SEMI@8546..8547 ";" + WHITESPACE@8547..8554 "\n " + EXPR_LOCAL@8554..8975 + LOCAL_KW@8554..8559 "local" + WHITESPACE@8559..8560 " " + BIND_DESTRUCT@8560..8626 + DESTRUCT_FULL@8560..8571 + NAME@8560..8571 + IDENT@8560..8571 "both_fields" + WHITESPACE@8571..8572 " " + ASSIGN@8572..8573 "=" + WHITESPACE@8573..8574 " " + EXPR_APPLY@8574..8626 + EXPR_INDEX@8574..8586 + EXPR_VAR@8574..8577 + NAME@8574..8577 + IDENT@8574..8577 "std" + DOT@8577..8578 "." + NAME@8578..8586 + IDENT@8578..8586 "setUnion" + ARGS_DESC@8586..8626 + L_PAREN@8586..8587 "(" + ARG@8587..8600 + EXPR_VAR@8587..8600 + NAME@8587..8600 + IDENT@8587..8600 "target_fields" + COMMA@8600..8601 "," + WHITESPACE@8601..8602 " " + ARG@8602..8625 + EXPR_APPLY@8602..8625 + EXPR_INDEX@8602..8618 + EXPR_VAR@8602..8605 + NAME@8602..8605 + IDENT@8602..8605 "std" + DOT@8605..8606 "." + NAME@8606..8618 + IDENT@8606..8618 "objectFields" + ARGS_DESC@8618..8625 + L_PAREN@8618..8619 "(" + ARG@8619..8624 + EXPR_VAR@8619..8624 + NAME@8619..8624 + IDENT@8619..8624 "patch" + R_PAREN@8624..8625 ")" + R_PAREN@8625..8626 ")" + SEMI@8626..8627 ";" + WHITESPACE@8627..8635 "\n\n " + EXPR_OBJECT@8635..8975 + OBJ_BODY_COMP@8635..8975 + L_BRACE@8635..8636 "{" + WHITESPACE@8636..8645 "\n " + MEMBER_FIELD_NORMAL@8645..8912 + FIELD_NAME_DYNAMIC@8645..8648 + L_BRACK@8645..8646 "[" + EXPR_VAR@8646..8647 + NAME@8646..8647 + IDENT@8646..8647 "k" + R_BRACK@8647..8648 "]" + COLON@8648..8649 ":" + WHITESPACE@8649..8660 "\n " + EXPR_IF_THEN_ELSE@8660..8912 + IF_KW@8660..8662 "if" + WHITESPACE@8662..8663 " " + EXPR_UNARY@8663..8687 + NOT@8663..8664 "!" + EXPR_APPLY@8664..8687 + EXPR_INDEX@8664..8677 + EXPR_VAR@8664..8667 + NAME@8664..8667 + IDENT@8664..8667 "std" + DOT@8667..8668 "." + NAME@8668..8677 + IDENT@8668..8677 "objectHas" + ARGS_DESC@8677..8687 + L_PAREN@8677..8678 "(" + ARG@8678..8683 + EXPR_VAR@8678..8683 + NAME@8678..8683 + IDENT@8678..8683 "patch" + COMMA@8683..8684 "," + WHITESPACE@8684..8685 " " + ARG@8685..8686 + EXPR_VAR@8685..8686 + NAME@8685..8686 + IDENT@8685..8686 "k" + R_PAREN@8686..8687 ")" + WHITESPACE@8687..8688 " " + THEN_KW@8688..8692 "then" + WHITESPACE@8692..8705 "\n " + TRUE_EXPR@8705..8721 + EXPR_INDEX_EXPR@8705..8721 + LHS_EXPR@8705..8718 + EXPR_VAR@8705..8718 + NAME@8705..8718 + IDENT@8705..8718 "target_object" + L_BRACK@8718..8719 "[" + EXPR_VAR@8719..8720 + NAME@8719..8720 + IDENT@8719..8720 "k" + R_BRACK@8720..8721 "]" + WHITESPACE@8721..8732 "\n " + ELSE_KW@8732..8736 "else" + WHITESPACE@8736..8737 " " + FALSE_EXPR@8737..8912 + EXPR_IF_THEN_ELSE@8737..8912 + IF_KW@8737..8739 "if" + WHITESPACE@8739..8740 " " + EXPR_UNARY@8740..8772 + NOT@8740..8741 "!" + EXPR_APPLY@8741..8772 + EXPR_INDEX@8741..8754 + EXPR_VAR@8741..8744 + NAME@8741..8744 + IDENT@8741..8744 "std" + DOT@8744..8745 "." + NAME@8745..8754 + IDENT@8745..8754 "objectHas" + ARGS_DESC@8754..8772 + L_PAREN@8754..8755 "(" + ARG@8755..8768 + EXPR_VAR@8755..8768 + NAME@8755..8768 + IDENT@8755..8768 "target_object" + COMMA@8768..8769 "," + WHITESPACE@8769..8770 " " + ARG@8770..8771 + EXPR_VAR@8770..8771 + NAME@8770..8771 + IDENT@8770..8771 "k" + R_PAREN@8771..8772 ")" + WHITESPACE@8772..8773 " " + THEN_KW@8773..8777 "then" + WHITESPACE@8777..8790 "\n " + TRUE_EXPR@8790..8831 + EXPR_APPLY@8790..8831 + EXPR_INDEX@8790..8804 + EXPR_VAR@8790..8793 + NAME@8790..8793 + IDENT@8790..8793 "std" + DOT@8793..8794 "." + NAME@8794..8804 + IDENT@8794..8804 "mergePatch" + ARGS_DESC@8804..8831 + L_PAREN@8804..8805 "(" + ARG@8805..8809 + EXPR_LITERAL@8805..8809 + NULL_KW@8805..8809 "null" + COMMA@8809..8810 "," + WHITESPACE@8810..8811 " " + ARG@8811..8819 + EXPR_INDEX_EXPR@8811..8819 + LHS_EXPR@8811..8816 + EXPR_VAR@8811..8816 + NAME@8811..8816 + IDENT@8811..8816 "patch" + L_BRACK@8816..8817 "[" + EXPR_VAR@8817..8818 + NAME@8817..8818 + IDENT@8817..8818 "k" + R_BRACK@8818..8819 "]" + R_PAREN@8819..8820 ")" + WHITESPACE@8820..8821 " " + TAILSTRICT_KW@8821..8831 "tailstrict" + WHITESPACE@8831..8842 "\n " + ELSE_KW@8842..8846 "else" + WHITESPACE@8846..8859 "\n " + FALSE_EXPR@8859..8912 + EXPR_APPLY@8859..8912 + EXPR_INDEX@8859..8873 + EXPR_VAR@8859..8862 + NAME@8859..8862 + IDENT@8859..8862 "std" + DOT@8862..8863 "." + NAME@8863..8873 + IDENT@8863..8873 "mergePatch" + ARGS_DESC@8873..8912 + L_PAREN@8873..8874 "(" + ARG@8874..8890 + EXPR_INDEX_EXPR@8874..8890 + LHS_EXPR@8874..8887 + EXPR_VAR@8874..8887 + NAME@8874..8887 + IDENT@8874..8887 "target_object" + L_BRACK@8887..8888 "[" + EXPR_VAR@8888..8889 + NAME@8888..8889 + IDENT@8888..8889 "k" + R_BRACK@8889..8890 "]" + COMMA@8890..8891 "," + WHITESPACE@8891..8892 " " + ARG@8892..8900 + EXPR_INDEX_EXPR@8892..8900 + LHS_EXPR@8892..8897 + EXPR_VAR@8892..8897 + NAME@8892..8897 + IDENT@8892..8897 "patch" + L_BRACK@8897..8898 "[" + EXPR_VAR@8898..8899 + NAME@8898..8899 + IDENT@8898..8899 "k" + R_BRACK@8899..8900 "]" + R_PAREN@8900..8901 ")" + WHITESPACE@8901..8902 " " + TAILSTRICT_KW@8902..8912 "tailstrict" + WHITESPACE@8912..8921 "\n " + FOR_SPEC@8921..8967 + FOR_KW@8921..8924 "for" + WHITESPACE@8924..8925 " " + NAME@8925..8926 + IDENT@8925..8926 "k" + WHITESPACE@8926..8927 " " + IN_KW@8927..8929 "in" + WHITESPACE@8929..8930 " " + EXPR_APPLY@8930..8967 + EXPR_INDEX@8930..8941 + EXPR_VAR@8930..8933 + NAME@8930..8933 + IDENT@8930..8933 "std" + DOT@8933..8934 "." + NAME@8934..8941 + IDENT@8934..8941 "setDiff" + ARGS_DESC@8941..8967 + L_PAREN@8941..8942 "(" + ARG@8942..8953 + EXPR_VAR@8942..8953 + NAME@8942..8953 + IDENT@8942..8953 "both_fields" + COMMA@8953..8954 "," + WHITESPACE@8954..8955 " " + ARG@8955..8966 + EXPR_VAR@8955..8966 + NAME@8955..8966 + IDENT@8955..8966 "null_fields" + R_PAREN@8966..8967 ")" + WHITESPACE@8967..8974 "\n " + R_BRACE@8974..8975 "}" + WHITESPACE@8975..8980 "\n " + ELSE_KW@8980..8984 "else" + WHITESPACE@8984..8991 "\n " + FALSE_EXPR@8991..8996 + EXPR_VAR@8991..8996 + NAME@8991..8996 + IDENT@8991..8996 "patch" COMMA@8996..8997 "," WHITESPACE@8997..9001 "\n\n " - MEMBER_FIELD@9001..9107 - FIELD_METHOD@9001..9107 - FIELD_NAME_FIXED@9001..9004 - NAME@9001..9004 - IDENT@9001..9004 "get" - PARAMS_DESC@9004..9041 - L_PAREN@9004..9005 "(" - PARAM@9005..9006 - DESTRUCT_FULL@9005..9006 - NAME@9005..9006 - IDENT@9005..9006 "o" - COMMA@9006..9007 "," - WHITESPACE@9007..9008 " " - PARAM@9008..9009 - DESTRUCT_FULL@9008..9009 - NAME@9008..9009 - IDENT@9008..9009 "f" - COMMA@9009..9010 "," - WHITESPACE@9010..9011 " " - PARAM@9011..9023 - DESTRUCT_FULL@9011..9018 - NAME@9011..9018 - IDENT@9011..9018 "default" - ASSIGN@9018..9019 "=" - EXPR_LITERAL@9019..9023 - NULL_KW@9019..9023 "null" - COMMA@9023..9024 "," - WHITESPACE@9024..9025 " " - PARAM@9025..9040 - DESTRUCT_FULL@9025..9035 - NAME@9025..9035 - IDENT@9025..9035 "inc_hidden" - ASSIGN@9035..9036 "=" - EXPR_LITERAL@9036..9040 - TRUE_KW@9036..9040 "true" - R_PAREN@9040..9041 ")" - COLONCOLON@9041..9043 "::" - WHITESPACE@9043..9048 "\n " - EXPR_IF_THEN_ELSE@9048..9107 - IF_KW@9048..9050 "if" - WHITESPACE@9050..9051 " " - EXPR_APPLY@9051..9084 - EXPR_INDEX@9051..9066 - EXPR_VAR@9051..9054 - NAME@9051..9054 - IDENT@9051..9054 "std" - DOT@9054..9055 "." - NAME@9055..9066 - IDENT@9055..9066 "objectHasEx" - ARGS_DESC@9066..9084 - L_PAREN@9066..9067 "(" - ARG@9067..9068 - EXPR_VAR@9067..9068 - NAME@9067..9068 - IDENT@9067..9068 "o" - COMMA@9068..9069 "," - WHITESPACE@9069..9070 " " - ARG@9070..9071 - EXPR_VAR@9070..9071 - NAME@9070..9071 - IDENT@9070..9071 "f" - COMMA@9071..9072 "," - WHITESPACE@9072..9073 " " - ARG@9073..9083 - EXPR_VAR@9073..9083 - NAME@9073..9083 - IDENT@9073..9083 "inc_hidden" - R_PAREN@9083..9084 ")" - WHITESPACE@9084..9085 " " - THEN_KW@9085..9089 "then" - WHITESPACE@9089..9090 " " - TRUE_EXPR@9090..9094 - EXPR_INDEX_EXPR@9090..9094 - LHS_EXPR@9090..9091 - EXPR_VAR@9090..9091 - NAME@9090..9091 - IDENT@9090..9091 "o" - L_BRACK@9091..9092 "[" - EXPR_VAR@9092..9093 - NAME@9092..9093 - IDENT@9092..9093 "f" - R_BRACK@9093..9094 "]" - WHITESPACE@9094..9095 " " - ELSE_KW@9095..9099 "else" - WHITESPACE@9099..9100 " " - FALSE_EXPR@9100..9107 - EXPR_VAR@9100..9107 - NAME@9100..9107 - IDENT@9100..9107 "default" + MEMBER_FIELD_METHOD@9001..9107 + FIELD_NAME_FIXED@9001..9004 + NAME@9001..9004 + IDENT@9001..9004 "get" + PARAMS_DESC@9004..9041 + L_PAREN@9004..9005 "(" + PARAM@9005..9006 + DESTRUCT_FULL@9005..9006 + NAME@9005..9006 + IDENT@9005..9006 "o" + COMMA@9006..9007 "," + WHITESPACE@9007..9008 " " + PARAM@9008..9009 + DESTRUCT_FULL@9008..9009 + NAME@9008..9009 + IDENT@9008..9009 "f" + COMMA@9009..9010 "," + WHITESPACE@9010..9011 " " + PARAM@9011..9023 + DESTRUCT_FULL@9011..9018 + NAME@9011..9018 + IDENT@9011..9018 "default" + ASSIGN@9018..9019 "=" + EXPR_LITERAL@9019..9023 + NULL_KW@9019..9023 "null" + COMMA@9023..9024 "," + WHITESPACE@9024..9025 " " + PARAM@9025..9040 + DESTRUCT_FULL@9025..9035 + NAME@9025..9035 + IDENT@9025..9035 "inc_hidden" + ASSIGN@9035..9036 "=" + EXPR_LITERAL@9036..9040 + TRUE_KW@9036..9040 "true" + R_PAREN@9040..9041 ")" + COLONCOLON@9041..9043 "::" + WHITESPACE@9043..9048 "\n " + EXPR_IF_THEN_ELSE@9048..9107 + IF_KW@9048..9050 "if" + WHITESPACE@9050..9051 " " + EXPR_APPLY@9051..9084 + EXPR_INDEX@9051..9066 + EXPR_VAR@9051..9054 + NAME@9051..9054 + IDENT@9051..9054 "std" + DOT@9054..9055 "." + NAME@9055..9066 + IDENT@9055..9066 "objectHasEx" + ARGS_DESC@9066..9084 + L_PAREN@9066..9067 "(" + ARG@9067..9068 + EXPR_VAR@9067..9068 + NAME@9067..9068 + IDENT@9067..9068 "o" + COMMA@9068..9069 "," + WHITESPACE@9069..9070 " " + ARG@9070..9071 + EXPR_VAR@9070..9071 + NAME@9070..9071 + IDENT@9070..9071 "f" + COMMA@9071..9072 "," + WHITESPACE@9072..9073 " " + ARG@9073..9083 + EXPR_VAR@9073..9083 + NAME@9073..9083 + IDENT@9073..9083 "inc_hidden" + R_PAREN@9083..9084 ")" + WHITESPACE@9084..9085 " " + THEN_KW@9085..9089 "then" + WHITESPACE@9089..9090 " " + TRUE_EXPR@9090..9094 + EXPR_INDEX_EXPR@9090..9094 + LHS_EXPR@9090..9091 + EXPR_VAR@9090..9091 + NAME@9090..9091 + IDENT@9090..9091 "o" + L_BRACK@9091..9092 "[" + EXPR_VAR@9092..9093 + NAME@9092..9093 + IDENT@9092..9093 "f" + R_BRACK@9093..9094 "]" + WHITESPACE@9094..9095 " " + ELSE_KW@9095..9099 "else" + WHITESPACE@9099..9100 " " + FALSE_EXPR@9100..9107 + EXPR_VAR@9100..9107 + NAME@9100..9107 + IDENT@9100..9107 "default" COMMA@9107..9108 "," WHITESPACE@9108..9112 "\n\n " - MEMBER_FIELD@9112..9162 - FIELD_METHOD@9112..9162 - FIELD_NAME_FIXED@9112..9124 - NAME@9112..9124 - IDENT@9112..9124 "objectFields" - PARAMS_DESC@9124..9127 - L_PAREN@9124..9125 "(" - PARAM@9125..9126 - DESTRUCT_FULL@9125..9126 - NAME@9125..9126 - IDENT@9125..9126 "o" - R_PAREN@9126..9127 ")" - COLONCOLON@9127..9129 "::" - WHITESPACE@9129..9134 "\n " - EXPR_APPLY@9134..9162 - EXPR_INDEX@9134..9152 - EXPR_VAR@9134..9137 - NAME@9134..9137 - IDENT@9134..9137 "std" - DOT@9137..9138 "." - NAME@9138..9152 - IDENT@9138..9152 "objectFieldsEx" - ARGS_DESC@9152..9162 - L_PAREN@9152..9153 "(" - ARG@9153..9154 - EXPR_VAR@9153..9154 - NAME@9153..9154 - IDENT@9153..9154 "o" - COMMA@9154..9155 "," - WHITESPACE@9155..9156 " " - ARG@9156..9161 - EXPR_LITERAL@9156..9161 - FALSE_KW@9156..9161 "false" - R_PAREN@9161..9162 ")" + MEMBER_FIELD_METHOD@9112..9162 + FIELD_NAME_FIXED@9112..9124 + NAME@9112..9124 + IDENT@9112..9124 "objectFields" + PARAMS_DESC@9124..9127 + L_PAREN@9124..9125 "(" + PARAM@9125..9126 + DESTRUCT_FULL@9125..9126 + NAME@9125..9126 + IDENT@9125..9126 "o" + R_PAREN@9126..9127 ")" + COLONCOLON@9127..9129 "::" + WHITESPACE@9129..9134 "\n " + EXPR_APPLY@9134..9162 + EXPR_INDEX@9134..9152 + EXPR_VAR@9134..9137 + NAME@9134..9137 + IDENT@9134..9137 "std" + DOT@9137..9138 "." + NAME@9138..9152 + IDENT@9138..9152 "objectFieldsEx" + ARGS_DESC@9152..9162 + L_PAREN@9152..9153 "(" + ARG@9153..9154 + EXPR_VAR@9153..9154 + NAME@9153..9154 + IDENT@9153..9154 "o" + COMMA@9154..9155 "," + WHITESPACE@9155..9156 " " + ARG@9156..9161 + EXPR_LITERAL@9156..9161 + FALSE_KW@9156..9161 "false" + R_PAREN@9161..9162 ")" COMMA@9162..9163 "," WHITESPACE@9163..9167 "\n\n " - MEMBER_FIELD@9167..9219 - FIELD_METHOD@9167..9219 - FIELD_NAME_FIXED@9167..9182 - NAME@9167..9182 - IDENT@9167..9182 "objectFieldsAll" - PARAMS_DESC@9182..9185 - L_PAREN@9182..9183 "(" - PARAM@9183..9184 - DESTRUCT_FULL@9183..9184 - NAME@9183..9184 - IDENT@9183..9184 "o" - R_PAREN@9184..9185 ")" - COLONCOLON@9185..9187 "::" - WHITESPACE@9187..9192 "\n " - EXPR_APPLY@9192..9219 - EXPR_INDEX@9192..9210 - EXPR_VAR@9192..9195 - NAME@9192..9195 - IDENT@9192..9195 "std" - DOT@9195..9196 "." - NAME@9196..9210 - IDENT@9196..9210 "objectFieldsEx" - ARGS_DESC@9210..9219 - L_PAREN@9210..9211 "(" - ARG@9211..9212 - EXPR_VAR@9211..9212 - NAME@9211..9212 - IDENT@9211..9212 "o" - COMMA@9212..9213 "," - WHITESPACE@9213..9214 " " - ARG@9214..9218 - EXPR_LITERAL@9214..9218 - TRUE_KW@9214..9218 "true" - R_PAREN@9218..9219 ")" + MEMBER_FIELD_METHOD@9167..9219 + FIELD_NAME_FIXED@9167..9182 + NAME@9167..9182 + IDENT@9167..9182 "objectFieldsAll" + PARAMS_DESC@9182..9185 + L_PAREN@9182..9183 "(" + PARAM@9183..9184 + DESTRUCT_FULL@9183..9184 + NAME@9183..9184 + IDENT@9183..9184 "o" + R_PAREN@9184..9185 ")" + COLONCOLON@9185..9187 "::" + WHITESPACE@9187..9192 "\n " + EXPR_APPLY@9192..9219 + EXPR_INDEX@9192..9210 + EXPR_VAR@9192..9195 + NAME@9192..9195 + IDENT@9192..9195 "std" + DOT@9195..9196 "." + NAME@9196..9210 + IDENT@9196..9210 "objectFieldsEx" + ARGS_DESC@9210..9219 + L_PAREN@9210..9211 "(" + ARG@9211..9212 + EXPR_VAR@9211..9212 + NAME@9211..9212 + IDENT@9211..9212 "o" + COMMA@9212..9213 "," + WHITESPACE@9213..9214 " " + ARG@9214..9218 + EXPR_LITERAL@9214..9218 + TRUE_KW@9214..9218 "true" + R_PAREN@9218..9219 ")" COMMA@9219..9220 "," WHITESPACE@9220..9224 "\n\n " - MEMBER_FIELD@9224..9274 - FIELD_METHOD@9224..9274 - FIELD_NAME_FIXED@9224..9233 - NAME@9224..9233 - IDENT@9224..9233 "objectHas" - PARAMS_DESC@9233..9239 - L_PAREN@9233..9234 "(" - PARAM@9234..9235 - DESTRUCT_FULL@9234..9235 - NAME@9234..9235 - IDENT@9234..9235 "o" - COMMA@9235..9236 "," - WHITESPACE@9236..9237 " " - PARAM@9237..9238 - DESTRUCT_FULL@9237..9238 - NAME@9237..9238 - IDENT@9237..9238 "f" - R_PAREN@9238..9239 ")" - COLONCOLON@9239..9241 "::" - WHITESPACE@9241..9246 "\n " - EXPR_APPLY@9246..9274 - EXPR_INDEX@9246..9261 - EXPR_VAR@9246..9249 - NAME@9246..9249 - IDENT@9246..9249 "std" - DOT@9249..9250 "." - NAME@9250..9261 - IDENT@9250..9261 "objectHasEx" - ARGS_DESC@9261..9274 - L_PAREN@9261..9262 "(" - ARG@9262..9263 - EXPR_VAR@9262..9263 - NAME@9262..9263 - IDENT@9262..9263 "o" - COMMA@9263..9264 "," - WHITESPACE@9264..9265 " " - ARG@9265..9266 - EXPR_VAR@9265..9266 - NAME@9265..9266 - IDENT@9265..9266 "f" - COMMA@9266..9267 "," - WHITESPACE@9267..9268 " " - ARG@9268..9273 - EXPR_LITERAL@9268..9273 - FALSE_KW@9268..9273 "false" - R_PAREN@9273..9274 ")" + MEMBER_FIELD_METHOD@9224..9274 + FIELD_NAME_FIXED@9224..9233 + NAME@9224..9233 + IDENT@9224..9233 "objectHas" + PARAMS_DESC@9233..9239 + L_PAREN@9233..9234 "(" + PARAM@9234..9235 + DESTRUCT_FULL@9234..9235 + NAME@9234..9235 + IDENT@9234..9235 "o" + COMMA@9235..9236 "," + WHITESPACE@9236..9237 " " + PARAM@9237..9238 + DESTRUCT_FULL@9237..9238 + NAME@9237..9238 + IDENT@9237..9238 "f" + R_PAREN@9238..9239 ")" + COLONCOLON@9239..9241 "::" + WHITESPACE@9241..9246 "\n " + EXPR_APPLY@9246..9274 + EXPR_INDEX@9246..9261 + EXPR_VAR@9246..9249 + NAME@9246..9249 + IDENT@9246..9249 "std" + DOT@9249..9250 "." + NAME@9250..9261 + IDENT@9250..9261 "objectHasEx" + ARGS_DESC@9261..9274 + L_PAREN@9261..9262 "(" + ARG@9262..9263 + EXPR_VAR@9262..9263 + NAME@9262..9263 + IDENT@9262..9263 "o" + COMMA@9263..9264 "," + WHITESPACE@9264..9265 " " + ARG@9265..9266 + EXPR_VAR@9265..9266 + NAME@9265..9266 + IDENT@9265..9266 "f" + COMMA@9266..9267 "," + WHITESPACE@9267..9268 " " + ARG@9268..9273 + EXPR_LITERAL@9268..9273 + FALSE_KW@9268..9273 "false" + R_PAREN@9273..9274 ")" COMMA@9274..9275 "," WHITESPACE@9275..9279 "\n\n " - MEMBER_FIELD@9279..9331 - FIELD_METHOD@9279..9331 - FIELD_NAME_FIXED@9279..9291 - NAME@9279..9291 - IDENT@9279..9291 "objectHasAll" - PARAMS_DESC@9291..9297 - L_PAREN@9291..9292 "(" - PARAM@9292..9293 - DESTRUCT_FULL@9292..9293 - NAME@9292..9293 - IDENT@9292..9293 "o" - COMMA@9293..9294 "," - WHITESPACE@9294..9295 " " - PARAM@9295..9296 - DESTRUCT_FULL@9295..9296 - NAME@9295..9296 - IDENT@9295..9296 "f" - R_PAREN@9296..9297 ")" - COLONCOLON@9297..9299 "::" - WHITESPACE@9299..9304 "\n " - EXPR_APPLY@9304..9331 - EXPR_INDEX@9304..9319 - EXPR_VAR@9304..9307 - NAME@9304..9307 - IDENT@9304..9307 "std" - DOT@9307..9308 "." - NAME@9308..9319 - IDENT@9308..9319 "objectHasEx" - ARGS_DESC@9319..9331 - L_PAREN@9319..9320 "(" - ARG@9320..9321 - EXPR_VAR@9320..9321 - NAME@9320..9321 - IDENT@9320..9321 "o" - COMMA@9321..9322 "," - WHITESPACE@9322..9323 " " - ARG@9323..9324 - EXPR_VAR@9323..9324 - NAME@9323..9324 - IDENT@9323..9324 "f" - COMMA@9324..9325 "," - WHITESPACE@9325..9326 " " - ARG@9326..9330 - EXPR_LITERAL@9326..9330 - TRUE_KW@9326..9330 "true" - R_PAREN@9330..9331 ")" + MEMBER_FIELD_METHOD@9279..9331 + FIELD_NAME_FIXED@9279..9291 + NAME@9279..9291 + IDENT@9279..9291 "objectHasAll" + PARAMS_DESC@9291..9297 + L_PAREN@9291..9292 "(" + PARAM@9292..9293 + DESTRUCT_FULL@9292..9293 + NAME@9292..9293 + IDENT@9292..9293 "o" + COMMA@9293..9294 "," + WHITESPACE@9294..9295 " " + PARAM@9295..9296 + DESTRUCT_FULL@9295..9296 + NAME@9295..9296 + IDENT@9295..9296 "f" + R_PAREN@9296..9297 ")" + COLONCOLON@9297..9299 "::" + WHITESPACE@9299..9304 "\n " + EXPR_APPLY@9304..9331 + EXPR_INDEX@9304..9319 + EXPR_VAR@9304..9307 + NAME@9304..9307 + IDENT@9304..9307 "std" + DOT@9307..9308 "." + NAME@9308..9319 + IDENT@9308..9319 "objectHasEx" + ARGS_DESC@9319..9331 + L_PAREN@9319..9320 "(" + ARG@9320..9321 + EXPR_VAR@9320..9321 + NAME@9320..9321 + IDENT@9320..9321 "o" + COMMA@9321..9322 "," + WHITESPACE@9322..9323 " " + ARG@9323..9324 + EXPR_VAR@9323..9324 + NAME@9323..9324 + IDENT@9323..9324 "f" + COMMA@9324..9325 "," + WHITESPACE@9325..9326 " " + ARG@9326..9330 + EXPR_LITERAL@9326..9330 + TRUE_KW@9326..9330 "true" + R_PAREN@9330..9331 ")" COMMA@9331..9332 "," WHITESPACE@9332..9336 "\n\n " - MEMBER_FIELD@9336..9393 - FIELD_METHOD@9336..9393 - FIELD_NAME_FIXED@9336..9348 - NAME@9336..9348 - IDENT@9336..9348 "objectValues" - PARAMS_DESC@9348..9351 - L_PAREN@9348..9349 "(" - PARAM@9349..9350 - DESTRUCT_FULL@9349..9350 - NAME@9349..9350 - IDENT@9349..9350 "o" - R_PAREN@9350..9351 ")" - COLONCOLON@9351..9353 "::" - WHITESPACE@9353..9358 "\n " - EXPR_ARRAY_COMP@9358..9393 - L_BRACK@9358..9359 "[" - EXPR_INDEX_EXPR@9359..9363 - LHS_EXPR@9359..9360 - EXPR_VAR@9359..9360 - NAME@9359..9360 - IDENT@9359..9360 "o" - L_BRACK@9360..9361 "[" - EXPR_VAR@9361..9362 - NAME@9361..9362 - IDENT@9361..9362 "k" - R_BRACK@9362..9363 "]" - WHITESPACE@9363..9364 " " - FOR_SPEC@9364..9392 - FOR_KW@9364..9367 "for" - WHITESPACE@9367..9368 " " - NAME@9368..9369 - IDENT@9368..9369 "k" - WHITESPACE@9369..9370 " " - IN_KW@9370..9372 "in" - WHITESPACE@9372..9373 " " - EXPR_APPLY@9373..9392 - EXPR_INDEX@9373..9389 - EXPR_VAR@9373..9376 - NAME@9373..9376 - IDENT@9373..9376 "std" - DOT@9376..9377 "." - NAME@9377..9389 - IDENT@9377..9389 "objectFields" - ARGS_DESC@9389..9392 - L_PAREN@9389..9390 "(" - ARG@9390..9391 - EXPR_VAR@9390..9391 - NAME@9390..9391 - IDENT@9390..9391 "o" - R_PAREN@9391..9392 ")" - R_BRACK@9392..9393 "]" + MEMBER_FIELD_METHOD@9336..9393 + FIELD_NAME_FIXED@9336..9348 + NAME@9336..9348 + IDENT@9336..9348 "objectValues" + PARAMS_DESC@9348..9351 + L_PAREN@9348..9349 "(" + PARAM@9349..9350 + DESTRUCT_FULL@9349..9350 + NAME@9349..9350 + IDENT@9349..9350 "o" + R_PAREN@9350..9351 ")" + COLONCOLON@9351..9353 "::" + WHITESPACE@9353..9358 "\n " + EXPR_ARRAY_COMP@9358..9393 + L_BRACK@9358..9359 "[" + EXPR_INDEX_EXPR@9359..9363 + LHS_EXPR@9359..9360 + EXPR_VAR@9359..9360 + NAME@9359..9360 + IDENT@9359..9360 "o" + L_BRACK@9360..9361 "[" + EXPR_VAR@9361..9362 + NAME@9361..9362 + IDENT@9361..9362 "k" + R_BRACK@9362..9363 "]" + WHITESPACE@9363..9364 " " + FOR_SPEC@9364..9392 + FOR_KW@9364..9367 "for" + WHITESPACE@9367..9368 " " + NAME@9368..9369 + IDENT@9368..9369 "k" + WHITESPACE@9369..9370 " " + IN_KW@9370..9372 "in" + WHITESPACE@9372..9373 " " + EXPR_APPLY@9373..9392 + EXPR_INDEX@9373..9389 + EXPR_VAR@9373..9376 + NAME@9373..9376 + IDENT@9373..9376 "std" + DOT@9376..9377 "." + NAME@9377..9389 + IDENT@9377..9389 "objectFields" + ARGS_DESC@9389..9392 + L_PAREN@9389..9390 "(" + ARG@9390..9391 + EXPR_VAR@9390..9391 + NAME@9390..9391 + IDENT@9390..9391 "o" + R_PAREN@9391..9392 ")" + R_BRACK@9392..9393 "]" COMMA@9393..9394 "," WHITESPACE@9394..9398 "\n\n " - MEMBER_FIELD@9398..9461 - FIELD_METHOD@9398..9461 - FIELD_NAME_FIXED@9398..9413 - NAME@9398..9413 - IDENT@9398..9413 "objectValuesAll" - PARAMS_DESC@9413..9416 - L_PAREN@9413..9414 "(" - PARAM@9414..9415 - DESTRUCT_FULL@9414..9415 - NAME@9414..9415 - IDENT@9414..9415 "o" - R_PAREN@9415..9416 ")" - COLONCOLON@9416..9418 "::" - WHITESPACE@9418..9423 "\n " - EXPR_ARRAY_COMP@9423..9461 - L_BRACK@9423..9424 "[" - EXPR_INDEX_EXPR@9424..9428 - LHS_EXPR@9424..9425 - EXPR_VAR@9424..9425 - NAME@9424..9425 - IDENT@9424..9425 "o" - L_BRACK@9425..9426 "[" - EXPR_VAR@9426..9427 - NAME@9426..9427 - IDENT@9426..9427 "k" - R_BRACK@9427..9428 "]" - WHITESPACE@9428..9429 " " - FOR_SPEC@9429..9460 - FOR_KW@9429..9432 "for" - WHITESPACE@9432..9433 " " - NAME@9433..9434 - IDENT@9433..9434 "k" - WHITESPACE@9434..9435 " " - IN_KW@9435..9437 "in" - WHITESPACE@9437..9438 " " - EXPR_APPLY@9438..9460 - EXPR_INDEX@9438..9457 - EXPR_VAR@9438..9441 - NAME@9438..9441 - IDENT@9438..9441 "std" - DOT@9441..9442 "." - NAME@9442..9457 - IDENT@9442..9457 "objectFieldsAll" - ARGS_DESC@9457..9460 - L_PAREN@9457..9458 "(" - ARG@9458..9459 - EXPR_VAR@9458..9459 - NAME@9458..9459 - IDENT@9458..9459 "o" - R_PAREN@9459..9460 ")" - R_BRACK@9460..9461 "]" + MEMBER_FIELD_METHOD@9398..9461 + FIELD_NAME_FIXED@9398..9413 + NAME@9398..9413 + IDENT@9398..9413 "objectValuesAll" + PARAMS_DESC@9413..9416 + L_PAREN@9413..9414 "(" + PARAM@9414..9415 + DESTRUCT_FULL@9414..9415 + NAME@9414..9415 + IDENT@9414..9415 "o" + R_PAREN@9415..9416 ")" + COLONCOLON@9416..9418 "::" + WHITESPACE@9418..9423 "\n " + EXPR_ARRAY_COMP@9423..9461 + L_BRACK@9423..9424 "[" + EXPR_INDEX_EXPR@9424..9428 + LHS_EXPR@9424..9425 + EXPR_VAR@9424..9425 + NAME@9424..9425 + IDENT@9424..9425 "o" + L_BRACK@9425..9426 "[" + EXPR_VAR@9426..9427 + NAME@9426..9427 + IDENT@9426..9427 "k" + R_BRACK@9427..9428 "]" + WHITESPACE@9428..9429 " " + FOR_SPEC@9429..9460 + FOR_KW@9429..9432 "for" + WHITESPACE@9432..9433 " " + NAME@9433..9434 + IDENT@9433..9434 "k" + WHITESPACE@9434..9435 " " + IN_KW@9435..9437 "in" + WHITESPACE@9437..9438 " " + EXPR_APPLY@9438..9460 + EXPR_INDEX@9438..9457 + EXPR_VAR@9438..9441 + NAME@9438..9441 + IDENT@9438..9441 "std" + DOT@9441..9442 "." + NAME@9442..9457 + IDENT@9442..9457 "objectFieldsAll" + ARGS_DESC@9457..9460 + L_PAREN@9457..9458 "(" + ARG@9458..9459 + EXPR_VAR@9458..9459 + NAME@9458..9459 + IDENT@9458..9459 "o" + R_PAREN@9459..9460 ")" + R_BRACK@9460..9461 "]" COMMA@9461..9462 "," WHITESPACE@9462..9466 "\n\n " - MEMBER_FIELD@9466..9600 - FIELD_METHOD@9466..9600 - FIELD_NAME_FIXED@9466..9477 - NAME@9466..9477 - IDENT@9466..9477 "resolvePath" - PARAMS_DESC@9477..9483 - L_PAREN@9477..9478 "(" - PARAM@9478..9479 - DESTRUCT_FULL@9478..9479 - NAME@9478..9479 - IDENT@9478..9479 "f" - COMMA@9479..9480 "," - WHITESPACE@9480..9481 " " - PARAM@9481..9482 - DESTRUCT_FULL@9481..9482 - NAME@9481..9482 - IDENT@9481..9482 "r" - R_PAREN@9482..9483 ")" - COLONCOLON@9483..9485 "::" - WHITESPACE@9485..9490 "\n " - EXPR_LOCAL@9490..9600 - LOCAL_KW@9490..9495 "local" - WHITESPACE@9495..9496 " " - BIND_DESTRUCT@9496..9519 - DESTRUCT_FULL@9496..9499 - NAME@9496..9499 - IDENT@9496..9499 "arr" - WHITESPACE@9499..9500 " " - ASSIGN@9500..9501 "=" - WHITESPACE@9501..9502 " " - EXPR_APPLY@9502..9519 - EXPR_INDEX@9502..9511 - EXPR_VAR@9502..9505 - NAME@9502..9505 - IDENT@9502..9505 "std" - DOT@9505..9506 "." - NAME@9506..9511 - IDENT@9506..9511 "split" - ARGS_DESC@9511..9519 - L_PAREN@9511..9512 "(" - ARG@9512..9513 - EXPR_VAR@9512..9513 - NAME@9512..9513 - IDENT@9512..9513 "f" - COMMA@9513..9514 "," - WHITESPACE@9514..9515 " " - ARG@9515..9518 - EXPR_STRING@9515..9518 - STRING_SINGLE@9515..9518 "'/'" - R_PAREN@9518..9519 ")" - SEMI@9519..9520 ";" - WHITESPACE@9520..9525 "\n " - EXPR_APPLY@9525..9600 - EXPR_INDEX@9525..9533 - EXPR_VAR@9525..9528 - NAME@9525..9528 - IDENT@9525..9528 "std" - DOT@9528..9529 "." - NAME@9529..9533 - IDENT@9529..9533 "join" - ARGS_DESC@9533..9600 - L_PAREN@9533..9534 "(" - ARG@9534..9537 - EXPR_STRING@9534..9537 - STRING_SINGLE@9534..9537 "'/'" - COMMA@9537..9538 "," - WHITESPACE@9538..9539 " " - ARG@9539..9599 - EXPR_BINARY@9539..9599 - LHS_EXPR@9539..9593 - EXPR_APPLY@9539..9593 - EXPR_INDEX@9539..9552 - EXPR_VAR@9539..9542 - NAME@9539..9542 - IDENT@9539..9542 "std" - DOT@9542..9543 "." - NAME@9543..9552 - IDENT@9543..9552 "makeArray" - ARGS_DESC@9552..9593 - L_PAREN@9552..9553 "(" - ARG@9553..9572 - EXPR_BINARY@9553..9572 - LHS_EXPR@9553..9568 - EXPR_APPLY@9553..9568 - EXPR_INDEX@9553..9563 - EXPR_VAR@9553..9556 - NAME@9553..9556 - IDENT@9553..9556 "std" - DOT@9556..9557 "." - NAME@9557..9563 - IDENT@9557..9563 "length" - ARGS_DESC@9563..9568 - L_PAREN@9563..9564 "(" - ARG@9564..9567 - EXPR_VAR@9564..9567 - NAME@9564..9567 - IDENT@9564..9567 "arr" - R_PAREN@9567..9568 ")" - WHITESPACE@9568..9569 " " - MINUS@9569..9570 "-" - WHITESPACE@9570..9571 " " - EXPR_NUMBER@9571..9572 - FLOAT@9571..9572 "1" - COMMA@9572..9573 "," - WHITESPACE@9573..9574 " " - ARG@9574..9592 - EXPR_FUNCTION@9574..9592 - FUNCTION_KW@9574..9582 "function" - PARAMS_DESC@9582..9585 - L_PAREN@9582..9583 "(" - PARAM@9583..9584 - DESTRUCT_FULL@9583..9584 - NAME@9583..9584 - IDENT@9583..9584 "i" - R_PAREN@9584..9585 ")" - WHITESPACE@9585..9586 " " - EXPR_INDEX_EXPR@9586..9592 - LHS_EXPR@9586..9589 - EXPR_VAR@9586..9589 - NAME@9586..9589 - IDENT@9586..9589 "arr" - L_BRACK@9589..9590 "[" - EXPR_VAR@9590..9591 - NAME@9590..9591 - IDENT@9590..9591 "i" - R_BRACK@9591..9592 "]" - R_PAREN@9592..9593 ")" - WHITESPACE@9593..9594 " " - PLUS@9594..9595 "+" - WHITESPACE@9595..9596 " " - EXPR_ARRAY@9596..9599 - L_BRACK@9596..9597 "[" - EXPR_VAR@9597..9598 - NAME@9597..9598 - IDENT@9597..9598 "r" - R_BRACK@9598..9599 "]" - R_PAREN@9599..9600 ")" + MEMBER_FIELD_METHOD@9466..9600 + FIELD_NAME_FIXED@9466..9477 + NAME@9466..9477 + IDENT@9466..9477 "resolvePath" + PARAMS_DESC@9477..9483 + L_PAREN@9477..9478 "(" + PARAM@9478..9479 + DESTRUCT_FULL@9478..9479 + NAME@9478..9479 + IDENT@9478..9479 "f" + COMMA@9479..9480 "," + WHITESPACE@9480..9481 " " + PARAM@9481..9482 + DESTRUCT_FULL@9481..9482 + NAME@9481..9482 + IDENT@9481..9482 "r" + R_PAREN@9482..9483 ")" + COLONCOLON@9483..9485 "::" + WHITESPACE@9485..9490 "\n " + EXPR_LOCAL@9490..9600 + LOCAL_KW@9490..9495 "local" + WHITESPACE@9495..9496 " " + BIND_DESTRUCT@9496..9519 + DESTRUCT_FULL@9496..9499 + NAME@9496..9499 + IDENT@9496..9499 "arr" + WHITESPACE@9499..9500 " " + ASSIGN@9500..9501 "=" + WHITESPACE@9501..9502 " " + EXPR_APPLY@9502..9519 + EXPR_INDEX@9502..9511 + EXPR_VAR@9502..9505 + NAME@9502..9505 + IDENT@9502..9505 "std" + DOT@9505..9506 "." + NAME@9506..9511 + IDENT@9506..9511 "split" + ARGS_DESC@9511..9519 + L_PAREN@9511..9512 "(" + ARG@9512..9513 + EXPR_VAR@9512..9513 + NAME@9512..9513 + IDENT@9512..9513 "f" + COMMA@9513..9514 "," + WHITESPACE@9514..9515 " " + ARG@9515..9518 + EXPR_STRING@9515..9518 + STRING_SINGLE@9515..9518 "'/'" + R_PAREN@9518..9519 ")" + SEMI@9519..9520 ";" + WHITESPACE@9520..9525 "\n " + EXPR_APPLY@9525..9600 + EXPR_INDEX@9525..9533 + EXPR_VAR@9525..9528 + NAME@9525..9528 + IDENT@9525..9528 "std" + DOT@9528..9529 "." + NAME@9529..9533 + IDENT@9529..9533 "join" + ARGS_DESC@9533..9600 + L_PAREN@9533..9534 "(" + ARG@9534..9537 + EXPR_STRING@9534..9537 + STRING_SINGLE@9534..9537 "'/'" + COMMA@9537..9538 "," + WHITESPACE@9538..9539 " " + ARG@9539..9599 + EXPR_BINARY@9539..9599 + LHS_EXPR@9539..9593 + EXPR_APPLY@9539..9593 + EXPR_INDEX@9539..9552 + EXPR_VAR@9539..9542 + NAME@9539..9542 + IDENT@9539..9542 "std" + DOT@9542..9543 "." + NAME@9543..9552 + IDENT@9543..9552 "makeArray" + ARGS_DESC@9552..9593 + L_PAREN@9552..9553 "(" + ARG@9553..9572 + EXPR_BINARY@9553..9572 + LHS_EXPR@9553..9568 + EXPR_APPLY@9553..9568 + EXPR_INDEX@9553..9563 + EXPR_VAR@9553..9556 + NAME@9553..9556 + IDENT@9553..9556 "std" + DOT@9556..9557 "." + NAME@9557..9563 + IDENT@9557..9563 "length" + ARGS_DESC@9563..9568 + L_PAREN@9563..9564 "(" + ARG@9564..9567 + EXPR_VAR@9564..9567 + NAME@9564..9567 + IDENT@9564..9567 "arr" + R_PAREN@9567..9568 ")" + WHITESPACE@9568..9569 " " + MINUS@9569..9570 "-" + WHITESPACE@9570..9571 " " + EXPR_NUMBER@9571..9572 + FLOAT@9571..9572 "1" + COMMA@9572..9573 "," + WHITESPACE@9573..9574 " " + ARG@9574..9592 + EXPR_FUNCTION@9574..9592 + FUNCTION_KW@9574..9582 "function" + PARAMS_DESC@9582..9585 + L_PAREN@9582..9583 "(" + PARAM@9583..9584 + DESTRUCT_FULL@9583..9584 + NAME@9583..9584 + IDENT@9583..9584 "i" + R_PAREN@9584..9585 ")" + WHITESPACE@9585..9586 " " + EXPR_INDEX_EXPR@9586..9592 + LHS_EXPR@9586..9589 + EXPR_VAR@9586..9589 + NAME@9586..9589 + IDENT@9586..9589 "arr" + L_BRACK@9589..9590 "[" + EXPR_VAR@9590..9591 + NAME@9590..9591 + IDENT@9590..9591 "i" + R_BRACK@9591..9592 "]" + R_PAREN@9592..9593 ")" + WHITESPACE@9593..9594 " " + PLUS@9594..9595 "+" + WHITESPACE@9595..9596 " " + EXPR_ARRAY@9596..9599 + L_BRACK@9596..9597 "[" + EXPR_VAR@9597..9598 + NAME@9597..9598 + IDENT@9597..9598 "r" + R_BRACK@9598..9599 "]" + R_PAREN@9599..9600 ")" COMMA@9600..9601 "," WHITESPACE@9601..9605 "\n\n " - MEMBER_FIELD@9605..10058 - FIELD_METHOD@9605..10058 - FIELD_NAME_FIXED@9605..9610 - NAME@9605..9610 - IDENT@9605..9610 "prune" - PARAMS_DESC@9610..9613 - L_PAREN@9610..9611 "(" - PARAM@9611..9612 - DESTRUCT_FULL@9611..9612 - NAME@9611..9612 - IDENT@9611..9612 "a" - R_PAREN@9612..9613 ")" - COLONCOLON@9613..9615 "::" - WHITESPACE@9615..9620 "\n " - EXPR_LOCAL@9620..10058 - LOCAL_KW@9620..9625 "local" - WHITESPACE@9625..9626 " " - BIND_FUNCTION@9626..9823 - NAME@9626..9635 - IDENT@9626..9635 "isContent" - PARAMS_DESC@9635..9638 - L_PAREN@9635..9636 "(" - PARAM@9636..9637 - DESTRUCT_FULL@9636..9637 - NAME@9636..9637 - IDENT@9636..9637 "b" - R_PAREN@9637..9638 ")" - WHITESPACE@9638..9639 " " - ASSIGN@9639..9640 "=" - WHITESPACE@9640..9647 "\n " - EXPR_IF_THEN_ELSE@9647..9823 - IF_KW@9647..9649 "if" - WHITESPACE@9649..9650 " " - EXPR_BINARY@9650..9659 - LHS_EXPR@9650..9651 - EXPR_VAR@9650..9651 - NAME@9650..9651 - IDENT@9650..9651 "b" - WHITESPACE@9651..9652 " " - EQ@9652..9654 "==" - WHITESPACE@9654..9655 " " - EXPR_LITERAL@9655..9659 - NULL_KW@9655..9659 "null" - WHITESPACE@9659..9660 " " - THEN_KW@9660..9664 "then" - WHITESPACE@9664..9673 "\n " - TRUE_EXPR@9673..9678 - EXPR_LITERAL@9673..9678 - FALSE_KW@9673..9678 "false" - WHITESPACE@9678..9685 "\n " - ELSE_KW@9685..9689 "else" - WHITESPACE@9689..9690 " " - FALSE_EXPR@9690..9823 - EXPR_IF_THEN_ELSE@9690..9823 - IF_KW@9690..9692 "if" - WHITESPACE@9692..9693 " " - EXPR_APPLY@9693..9707 - EXPR_INDEX@9693..9704 - EXPR_VAR@9693..9696 - NAME@9693..9696 - IDENT@9693..9696 "std" - DOT@9696..9697 "." - NAME@9697..9704 - IDENT@9697..9704 "isArray" - ARGS_DESC@9704..9707 - L_PAREN@9704..9705 "(" - ARG@9705..9706 - EXPR_VAR@9705..9706 - NAME@9705..9706 - IDENT@9705..9706 "b" - R_PAREN@9706..9707 ")" - WHITESPACE@9707..9708 " " - THEN_KW@9708..9712 "then" - WHITESPACE@9712..9721 "\n " - TRUE_EXPR@9721..9738 - EXPR_BINARY@9721..9738 - LHS_EXPR@9721..9734 - EXPR_APPLY@9721..9734 - EXPR_INDEX@9721..9731 - EXPR_VAR@9721..9724 - NAME@9721..9724 - IDENT@9721..9724 "std" - DOT@9724..9725 "." - NAME@9725..9731 - IDENT@9725..9731 "length" - ARGS_DESC@9731..9734 - L_PAREN@9731..9732 "(" - ARG@9732..9733 - EXPR_VAR@9732..9733 - NAME@9732..9733 - IDENT@9732..9733 "b" - R_PAREN@9733..9734 ")" - WHITESPACE@9734..9735 " " - GT@9735..9736 ">" - WHITESPACE@9736..9737 " " - EXPR_NUMBER@9737..9738 - FLOAT@9737..9738 "0" - WHITESPACE@9738..9745 "\n " - ELSE_KW@9745..9749 "else" - WHITESPACE@9749..9750 " " - FALSE_EXPR@9750..9823 - EXPR_IF_THEN_ELSE@9750..9823 - IF_KW@9750..9752 "if" - WHITESPACE@9752..9753 " " - EXPR_APPLY@9753..9768 - EXPR_INDEX@9753..9765 - EXPR_VAR@9753..9756 - NAME@9753..9756 - IDENT@9753..9756 "std" - DOT@9756..9757 "." - NAME@9757..9765 - IDENT@9757..9765 "isObject" - ARGS_DESC@9765..9768 - L_PAREN@9765..9766 "(" - ARG@9766..9767 - EXPR_VAR@9766..9767 - NAME@9766..9767 - IDENT@9766..9767 "b" - R_PAREN@9767..9768 ")" - WHITESPACE@9768..9769 " " - THEN_KW@9769..9773 "then" - WHITESPACE@9773..9782 "\n " - TRUE_EXPR@9782..9799 - EXPR_BINARY@9782..9799 - LHS_EXPR@9782..9795 - EXPR_APPLY@9782..9795 - EXPR_INDEX@9782..9792 - EXPR_VAR@9782..9785 - NAME@9782..9785 - IDENT@9782..9785 "std" - DOT@9785..9786 "." - NAME@9786..9792 - IDENT@9786..9792 "length" - ARGS_DESC@9792..9795 - L_PAREN@9792..9793 "(" - ARG@9793..9794 - EXPR_VAR@9793..9794 - NAME@9793..9794 - IDENT@9793..9794 "b" - R_PAREN@9794..9795 ")" - WHITESPACE@9795..9796 " " - GT@9796..9797 ">" - WHITESPACE@9797..9798 " " - EXPR_NUMBER@9798..9799 - FLOAT@9798..9799 "0" - WHITESPACE@9799..9806 "\n " - ELSE_KW@9806..9810 "else" - WHITESPACE@9810..9819 "\n " - FALSE_EXPR@9819..9823 - EXPR_LITERAL@9819..9823 - TRUE_KW@9819..9823 "true" - SEMI@9823..9824 ";" - WHITESPACE@9824..9829 "\n " - EXPR_IF_THEN_ELSE@9829..10058 - IF_KW@9829..9831 "if" - WHITESPACE@9831..9832 " " - EXPR_APPLY@9832..9846 - EXPR_INDEX@9832..9843 - EXPR_VAR@9832..9835 - NAME@9832..9835 - IDENT@9832..9835 "std" - DOT@9835..9836 "." - NAME@9836..9843 - IDENT@9836..9843 "isArray" - ARGS_DESC@9843..9846 - L_PAREN@9843..9844 "(" - ARG@9844..9845 - EXPR_VAR@9844..9845 - NAME@9844..9845 - IDENT@9844..9845 "a" - R_PAREN@9845..9846 ")" - WHITESPACE@9846..9847 " " - THEN_KW@9847..9851 "then" - WHITESPACE@9851..9858 "\n " - TRUE_EXPR@9858..9908 - EXPR_ARRAY_COMP@9858..9908 - L_BRACK@9858..9859 "[" - EXPR_APPLY@9859..9871 - EXPR_INDEX@9859..9868 - EXPR_VAR@9859..9862 - NAME@9859..9862 - IDENT@9859..9862 "std" - DOT@9862..9863 "." - NAME@9863..9868 - IDENT@9863..9868 "prune" - ARGS_DESC@9868..9871 - L_PAREN@9868..9869 "(" - ARG@9869..9870 - EXPR_VAR@9869..9870 - NAME@9869..9870 - IDENT@9869..9870 "x" - R_PAREN@9870..9871 ")" - WHITESPACE@9871..9872 " " - FOR_SPEC@9872..9882 - FOR_KW@9872..9875 "for" - WHITESPACE@9875..9876 " " - NAME@9876..9877 - IDENT@9876..9877 "x" - WHITESPACE@9877..9878 " " - IN_KW@9878..9880 "in" - WHITESPACE@9880..9881 " " - EXPR_VAR@9881..9882 - NAME@9881..9882 - IDENT@9881..9882 "a" - WHITESPACE@9882..9883 " " - IF_SPEC@9883..9907 - IF_KW@9883..9885 "if" - WHITESPACE@9885..9886 " " - EXPR_APPLY@9886..9907 - EXPR_VAR@9886..9895 - NAME@9886..9895 - IDENT@9886..9895 "isContent" - ARGS_DESC@9895..9907 - L_PAREN@9895..9896 "(" - ARG@9896..9906 - EXPR_APPLY@9896..9906 - EXPR_INDEX@9896..9903 - EXPR_LITERAL@9896..9897 - DOLLAR@9896..9897 "$" - DOT@9897..9898 "." - NAME@9898..9903 - IDENT@9898..9903 "prune" - ARGS_DESC@9903..9906 - L_PAREN@9903..9904 "(" - ARG@9904..9905 - EXPR_VAR@9904..9905 - NAME@9904..9905 - IDENT@9904..9905 "x" - R_PAREN@9905..9906 ")" - R_PAREN@9906..9907 ")" - R_BRACK@9907..9908 "]" - WHITESPACE@9908..9913 "\n " - ELSE_KW@9913..9917 "else" - WHITESPACE@9917..9918 " " - FALSE_EXPR@9918..10058 - EXPR_IF_THEN_ELSE@9918..10058 - IF_KW@9918..9920 "if" - WHITESPACE@9920..9921 " " - EXPR_APPLY@9921..9936 - EXPR_INDEX@9921..9933 - EXPR_VAR@9921..9924 - NAME@9921..9924 - IDENT@9921..9924 "std" - DOT@9924..9925 "." - NAME@9925..9933 - IDENT@9925..9933 "isObject" - ARGS_DESC@9933..9936 - L_PAREN@9933..9934 "(" - ARG@9934..9935 - EXPR_VAR@9934..9935 - NAME@9934..9935 - IDENT@9934..9935 "a" - R_PAREN@9935..9936 ")" - WHITESPACE@9936..9937 " " - THEN_KW@9937..9941 "then" - WHITESPACE@9941..9942 " " - TRUE_EXPR@9942..10045 - EXPR_OBJECT@9942..10045 - OBJ_BODY_MEMBER_LIST@9942..10045 - L_BRACE@9942..9943 "{" - WHITESPACE@9943..9950 "\n " - MEMBER_FIELD@9950..10039 - FIELD_NORMAL@9950..9968 - FIELD_NAME_DYNAMIC@9950..9953 - L_BRACK@9950..9951 "[" - EXPR_VAR@9951..9952 - NAME@9951..9952 - IDENT@9951..9952 "x" - R_BRACK@9952..9953 "]" - COLON@9953..9954 ":" - WHITESPACE@9954..9955 " " - EXPR_APPLY@9955..9968 - EXPR_INDEX@9955..9962 - EXPR_LITERAL@9955..9956 - DOLLAR@9955..9956 "$" - DOT@9956..9957 "." - NAME@9957..9962 - IDENT@9957..9962 "prune" - ARGS_DESC@9962..9968 - L_PAREN@9962..9963 "(" - ARG@9963..9967 - EXPR_INDEX_EXPR@9963..9967 - LHS_EXPR@9963..9964 - EXPR_VAR@9963..9964 - NAME@9963..9964 - IDENT@9963..9964 "a" - L_BRACK@9964..9965 "[" - EXPR_VAR@9965..9966 - NAME@9965..9966 - IDENT@9965..9966 "x" - R_BRACK@9966..9967 "]" - R_PAREN@9967..9968 ")" - WHITESPACE@9968..9975 "\n " - FOR_SPEC@9975..10003 - FOR_KW@9975..9978 "for" - WHITESPACE@9978..9979 " " - NAME@9979..9980 - IDENT@9979..9980 "x" - WHITESPACE@9980..9981 " " - IN_KW@9981..9983 "in" - WHITESPACE@9983..9984 " " - EXPR_APPLY@9984..10003 - EXPR_INDEX@9984..10000 - EXPR_VAR@9984..9987 - NAME@9984..9987 - IDENT@9984..9987 "std" - DOT@9987..9988 "." - NAME@9988..10000 - IDENT@9988..10000 "objectFields" - ARGS_DESC@10000..10003 - L_PAREN@10000..10001 "(" - ARG@10001..10002 - EXPR_VAR@10001..10002 - NAME@10001..10002 - IDENT@10001..10002 "a" - R_PAREN@10002..10003 ")" - WHITESPACE@10003..10010 "\n " - IF_SPEC@10010..10039 - IF_KW@10010..10012 "if" - WHITESPACE@10012..10013 " " - EXPR_APPLY@10013..10039 - EXPR_VAR@10013..10022 - NAME@10013..10022 - IDENT@10013..10022 "isContent" - ARGS_DESC@10022..10039 - L_PAREN@10022..10023 "(" - ARG@10023..10038 - EXPR_APPLY@10023..10038 - EXPR_INDEX@10023..10032 - EXPR_VAR@10023..10026 - NAME@10023..10026 - IDENT@10023..10026 "std" - DOT@10026..10027 "." - NAME@10027..10032 - IDENT@10027..10032 "prune" - ARGS_DESC@10032..10038 - L_PAREN@10032..10033 "(" - ARG@10033..10037 - EXPR_INDEX_EXPR@10033..10037 - LHS_EXPR@10033..10034 - EXPR_VAR@10033..10034 - NAME@10033..10034 - IDENT@10033..10034 "a" - L_BRACK@10034..10035 "[" - EXPR_VAR@10035..10036 - NAME@10035..10036 - IDENT@10035..10036 "x" - R_BRACK@10036..10037 "]" - R_PAREN@10037..10038 ")" - R_PAREN@10038..10039 ")" - WHITESPACE@10039..10044 "\n " - R_BRACE@10044..10045 "}" - WHITESPACE@10045..10046 " " - ELSE_KW@10046..10050 "else" - WHITESPACE@10050..10057 "\n " - FALSE_EXPR@10057..10058 - EXPR_VAR@10057..10058 - NAME@10057..10058 - IDENT@10057..10058 "a" + MEMBER_FIELD_METHOD@9605..10058 + FIELD_NAME_FIXED@9605..9610 + NAME@9605..9610 + IDENT@9605..9610 "prune" + PARAMS_DESC@9610..9613 + L_PAREN@9610..9611 "(" + PARAM@9611..9612 + DESTRUCT_FULL@9611..9612 + NAME@9611..9612 + IDENT@9611..9612 "a" + R_PAREN@9612..9613 ")" + COLONCOLON@9613..9615 "::" + WHITESPACE@9615..9620 "\n " + EXPR_LOCAL@9620..10058 + LOCAL_KW@9620..9625 "local" + WHITESPACE@9625..9626 " " + BIND_FUNCTION@9626..9823 + NAME@9626..9635 + IDENT@9626..9635 "isContent" + PARAMS_DESC@9635..9638 + L_PAREN@9635..9636 "(" + PARAM@9636..9637 + DESTRUCT_FULL@9636..9637 + NAME@9636..9637 + IDENT@9636..9637 "b" + R_PAREN@9637..9638 ")" + WHITESPACE@9638..9639 " " + ASSIGN@9639..9640 "=" + WHITESPACE@9640..9647 "\n " + EXPR_IF_THEN_ELSE@9647..9823 + IF_KW@9647..9649 "if" + WHITESPACE@9649..9650 " " + EXPR_BINARY@9650..9659 + LHS_EXPR@9650..9651 + EXPR_VAR@9650..9651 + NAME@9650..9651 + IDENT@9650..9651 "b" + WHITESPACE@9651..9652 " " + EQ@9652..9654 "==" + WHITESPACE@9654..9655 " " + EXPR_LITERAL@9655..9659 + NULL_KW@9655..9659 "null" + WHITESPACE@9659..9660 " " + THEN_KW@9660..9664 "then" + WHITESPACE@9664..9673 "\n " + TRUE_EXPR@9673..9678 + EXPR_LITERAL@9673..9678 + FALSE_KW@9673..9678 "false" + WHITESPACE@9678..9685 "\n " + ELSE_KW@9685..9689 "else" + WHITESPACE@9689..9690 " " + FALSE_EXPR@9690..9823 + EXPR_IF_THEN_ELSE@9690..9823 + IF_KW@9690..9692 "if" + WHITESPACE@9692..9693 " " + EXPR_APPLY@9693..9707 + EXPR_INDEX@9693..9704 + EXPR_VAR@9693..9696 + NAME@9693..9696 + IDENT@9693..9696 "std" + DOT@9696..9697 "." + NAME@9697..9704 + IDENT@9697..9704 "isArray" + ARGS_DESC@9704..9707 + L_PAREN@9704..9705 "(" + ARG@9705..9706 + EXPR_VAR@9705..9706 + NAME@9705..9706 + IDENT@9705..9706 "b" + R_PAREN@9706..9707 ")" + WHITESPACE@9707..9708 " " + THEN_KW@9708..9712 "then" + WHITESPACE@9712..9721 "\n " + TRUE_EXPR@9721..9738 + EXPR_BINARY@9721..9738 + LHS_EXPR@9721..9734 + EXPR_APPLY@9721..9734 + EXPR_INDEX@9721..9731 + EXPR_VAR@9721..9724 + NAME@9721..9724 + IDENT@9721..9724 "std" + DOT@9724..9725 "." + NAME@9725..9731 + IDENT@9725..9731 "length" + ARGS_DESC@9731..9734 + L_PAREN@9731..9732 "(" + ARG@9732..9733 + EXPR_VAR@9732..9733 + NAME@9732..9733 + IDENT@9732..9733 "b" + R_PAREN@9733..9734 ")" + WHITESPACE@9734..9735 " " + GT@9735..9736 ">" + WHITESPACE@9736..9737 " " + EXPR_NUMBER@9737..9738 + FLOAT@9737..9738 "0" + WHITESPACE@9738..9745 "\n " + ELSE_KW@9745..9749 "else" + WHITESPACE@9749..9750 " " + FALSE_EXPR@9750..9823 + EXPR_IF_THEN_ELSE@9750..9823 + IF_KW@9750..9752 "if" + WHITESPACE@9752..9753 " " + EXPR_APPLY@9753..9768 + EXPR_INDEX@9753..9765 + EXPR_VAR@9753..9756 + NAME@9753..9756 + IDENT@9753..9756 "std" + DOT@9756..9757 "." + NAME@9757..9765 + IDENT@9757..9765 "isObject" + ARGS_DESC@9765..9768 + L_PAREN@9765..9766 "(" + ARG@9766..9767 + EXPR_VAR@9766..9767 + NAME@9766..9767 + IDENT@9766..9767 "b" + R_PAREN@9767..9768 ")" + WHITESPACE@9768..9769 " " + THEN_KW@9769..9773 "then" + WHITESPACE@9773..9782 "\n " + TRUE_EXPR@9782..9799 + EXPR_BINARY@9782..9799 + LHS_EXPR@9782..9795 + EXPR_APPLY@9782..9795 + EXPR_INDEX@9782..9792 + EXPR_VAR@9782..9785 + NAME@9782..9785 + IDENT@9782..9785 "std" + DOT@9785..9786 "." + NAME@9786..9792 + IDENT@9786..9792 "length" + ARGS_DESC@9792..9795 + L_PAREN@9792..9793 "(" + ARG@9793..9794 + EXPR_VAR@9793..9794 + NAME@9793..9794 + IDENT@9793..9794 "b" + R_PAREN@9794..9795 ")" + WHITESPACE@9795..9796 " " + GT@9796..9797 ">" + WHITESPACE@9797..9798 " " + EXPR_NUMBER@9798..9799 + FLOAT@9798..9799 "0" + WHITESPACE@9799..9806 "\n " + ELSE_KW@9806..9810 "else" + WHITESPACE@9810..9819 "\n " + FALSE_EXPR@9819..9823 + EXPR_LITERAL@9819..9823 + TRUE_KW@9819..9823 "true" + SEMI@9823..9824 ";" + WHITESPACE@9824..9829 "\n " + EXPR_IF_THEN_ELSE@9829..10058 + IF_KW@9829..9831 "if" + WHITESPACE@9831..9832 " " + EXPR_APPLY@9832..9846 + EXPR_INDEX@9832..9843 + EXPR_VAR@9832..9835 + NAME@9832..9835 + IDENT@9832..9835 "std" + DOT@9835..9836 "." + NAME@9836..9843 + IDENT@9836..9843 "isArray" + ARGS_DESC@9843..9846 + L_PAREN@9843..9844 "(" + ARG@9844..9845 + EXPR_VAR@9844..9845 + NAME@9844..9845 + IDENT@9844..9845 "a" + R_PAREN@9845..9846 ")" + WHITESPACE@9846..9847 " " + THEN_KW@9847..9851 "then" + WHITESPACE@9851..9858 "\n " + TRUE_EXPR@9858..9908 + EXPR_ARRAY_COMP@9858..9908 + L_BRACK@9858..9859 "[" + EXPR_APPLY@9859..9871 + EXPR_INDEX@9859..9868 + EXPR_VAR@9859..9862 + NAME@9859..9862 + IDENT@9859..9862 "std" + DOT@9862..9863 "." + NAME@9863..9868 + IDENT@9863..9868 "prune" + ARGS_DESC@9868..9871 + L_PAREN@9868..9869 "(" + ARG@9869..9870 + EXPR_VAR@9869..9870 + NAME@9869..9870 + IDENT@9869..9870 "x" + R_PAREN@9870..9871 ")" + WHITESPACE@9871..9872 " " + FOR_SPEC@9872..9882 + FOR_KW@9872..9875 "for" + WHITESPACE@9875..9876 " " + NAME@9876..9877 + IDENT@9876..9877 "x" + WHITESPACE@9877..9878 " " + IN_KW@9878..9880 "in" + WHITESPACE@9880..9881 " " + EXPR_VAR@9881..9882 + NAME@9881..9882 + IDENT@9881..9882 "a" + WHITESPACE@9882..9883 " " + IF_SPEC@9883..9907 + IF_KW@9883..9885 "if" + WHITESPACE@9885..9886 " " + EXPR_APPLY@9886..9907 + EXPR_VAR@9886..9895 + NAME@9886..9895 + IDENT@9886..9895 "isContent" + ARGS_DESC@9895..9907 + L_PAREN@9895..9896 "(" + ARG@9896..9906 + EXPR_APPLY@9896..9906 + EXPR_INDEX@9896..9903 + EXPR_LITERAL@9896..9897 + DOLLAR@9896..9897 "$" + DOT@9897..9898 "." + NAME@9898..9903 + IDENT@9898..9903 "prune" + ARGS_DESC@9903..9906 + L_PAREN@9903..9904 "(" + ARG@9904..9905 + EXPR_VAR@9904..9905 + NAME@9904..9905 + IDENT@9904..9905 "x" + R_PAREN@9905..9906 ")" + R_PAREN@9906..9907 ")" + R_BRACK@9907..9908 "]" + WHITESPACE@9908..9913 "\n " + ELSE_KW@9913..9917 "else" + WHITESPACE@9917..9918 " " + FALSE_EXPR@9918..10058 + EXPR_IF_THEN_ELSE@9918..10058 + IF_KW@9918..9920 "if" + WHITESPACE@9920..9921 " " + EXPR_APPLY@9921..9936 + EXPR_INDEX@9921..9933 + EXPR_VAR@9921..9924 + NAME@9921..9924 + IDENT@9921..9924 "std" + DOT@9924..9925 "." + NAME@9925..9933 + IDENT@9925..9933 "isObject" + ARGS_DESC@9933..9936 + L_PAREN@9933..9934 "(" + ARG@9934..9935 + EXPR_VAR@9934..9935 + NAME@9934..9935 + IDENT@9934..9935 "a" + R_PAREN@9935..9936 ")" + WHITESPACE@9936..9937 " " + THEN_KW@9937..9941 "then" + WHITESPACE@9941..9942 " " + TRUE_EXPR@9942..10045 + EXPR_OBJECT@9942..10045 + OBJ_BODY_COMP@9942..10045 + L_BRACE@9942..9943 "{" + WHITESPACE@9943..9950 "\n " + MEMBER_FIELD_NORMAL@9950..9968 + FIELD_NAME_DYNAMIC@9950..9953 + L_BRACK@9950..9951 "[" + EXPR_VAR@9951..9952 + NAME@9951..9952 + IDENT@9951..9952 "x" + R_BRACK@9952..9953 "]" + COLON@9953..9954 ":" + WHITESPACE@9954..9955 " " + EXPR_APPLY@9955..9968 + EXPR_INDEX@9955..9962 + EXPR_LITERAL@9955..9956 + DOLLAR@9955..9956 "$" + DOT@9956..9957 "." + NAME@9957..9962 + IDENT@9957..9962 "prune" + ARGS_DESC@9962..9968 + L_PAREN@9962..9963 "(" + ARG@9963..9967 + EXPR_INDEX_EXPR@9963..9967 + LHS_EXPR@9963..9964 + EXPR_VAR@9963..9964 + NAME@9963..9964 + IDENT@9963..9964 "a" + L_BRACK@9964..9965 "[" + EXPR_VAR@9965..9966 + NAME@9965..9966 + IDENT@9965..9966 "x" + R_BRACK@9966..9967 "]" + R_PAREN@9967..9968 ")" + WHITESPACE@9968..9975 "\n " + FOR_SPEC@9975..10003 + FOR_KW@9975..9978 "for" + WHITESPACE@9978..9979 " " + NAME@9979..9980 + IDENT@9979..9980 "x" + WHITESPACE@9980..9981 " " + IN_KW@9981..9983 "in" + WHITESPACE@9983..9984 " " + EXPR_APPLY@9984..10003 + EXPR_INDEX@9984..10000 + EXPR_VAR@9984..9987 + NAME@9984..9987 + IDENT@9984..9987 "std" + DOT@9987..9988 "." + NAME@9988..10000 + IDENT@9988..10000 "objectFields" + ARGS_DESC@10000..10003 + L_PAREN@10000..10001 "(" + ARG@10001..10002 + EXPR_VAR@10001..10002 + NAME@10001..10002 + IDENT@10001..10002 "a" + R_PAREN@10002..10003 ")" + WHITESPACE@10003..10010 "\n " + IF_SPEC@10010..10039 + IF_KW@10010..10012 "if" + WHITESPACE@10012..10013 " " + EXPR_APPLY@10013..10039 + EXPR_VAR@10013..10022 + NAME@10013..10022 + IDENT@10013..10022 "isContent" + ARGS_DESC@10022..10039 + L_PAREN@10022..10023 "(" + ARG@10023..10038 + EXPR_APPLY@10023..10038 + EXPR_INDEX@10023..10032 + EXPR_VAR@10023..10026 + NAME@10023..10026 + IDENT@10023..10026 "std" + DOT@10026..10027 "." + NAME@10027..10032 + IDENT@10027..10032 "prune" + ARGS_DESC@10032..10038 + L_PAREN@10032..10033 "(" + ARG@10033..10037 + EXPR_INDEX_EXPR@10033..10037 + LHS_EXPR@10033..10034 + EXPR_VAR@10033..10034 + NAME@10033..10034 + IDENT@10033..10034 "a" + L_BRACK@10034..10035 "[" + EXPR_VAR@10035..10036 + NAME@10035..10036 + IDENT@10035..10036 "x" + R_BRACK@10036..10037 "]" + R_PAREN@10037..10038 ")" + R_PAREN@10038..10039 ")" + WHITESPACE@10039..10044 "\n " + R_BRACE@10044..10045 "}" + WHITESPACE@10045..10046 " " + ELSE_KW@10046..10050 "else" + WHITESPACE@10050..10057 "\n " + FALSE_EXPR@10057..10058 + EXPR_VAR@10057..10058 + NAME@10057..10058 + IDENT@10057..10058 "a" COMMA@10058..10059 "," WHITESPACE@10059..10063 "\n\n " - MEMBER_FIELD@10063..10278 - FIELD_METHOD@10063..10278 - FIELD_NAME_FIXED@10063..10067 - NAME@10063..10067 - IDENT@10063..10067 "find" - PARAMS_DESC@10067..10079 - L_PAREN@10067..10068 "(" - PARAM@10068..10073 - DESTRUCT_FULL@10068..10073 - NAME@10068..10073 - IDENT@10068..10073 "value" - COMMA@10073..10074 "," - WHITESPACE@10074..10075 " " - PARAM@10075..10078 - DESTRUCT_FULL@10075..10078 - NAME@10075..10078 - IDENT@10075..10078 "arr" - R_PAREN@10078..10079 ")" - COLONCOLON@10079..10081 "::" - WHITESPACE@10081..10086 "\n " - EXPR_IF_THEN_ELSE@10086..10278 - IF_KW@10086..10088 "if" - WHITESPACE@10088..10089 " " - EXPR_UNARY@10089..10106 - NOT@10089..10090 "!" - EXPR_APPLY@10090..10106 - EXPR_INDEX@10090..10101 - EXPR_VAR@10090..10093 - NAME@10090..10093 - IDENT@10090..10093 "std" - DOT@10093..10094 "." - NAME@10094..10101 - IDENT@10094..10101 "isArray" - ARGS_DESC@10101..10106 - L_PAREN@10101..10102 "(" - ARG@10102..10105 - EXPR_VAR@10102..10105 - NAME@10102..10105 - IDENT@10102..10105 "arr" - R_PAREN@10105..10106 ")" - WHITESPACE@10106..10107 " " - THEN_KW@10107..10111 "then" - WHITESPACE@10111..10118 "\n " - TRUE_EXPR@10118..10188 - EXPR_ERROR@10118..10188 - ERROR_KW@10118..10123 "error" - WHITESPACE@10123..10124 " " - EXPR_BINARY@10124..10188 - LHS_EXPR@10124..10172 - EXPR_STRING@10124..10172 - STRING_SINGLE@10124..10172 "'find second paramete ..." - WHITESPACE@10172..10173 " " - PLUS@10173..10174 "+" - WHITESPACE@10174..10175 " " - EXPR_APPLY@10175..10188 - EXPR_INDEX@10175..10183 - EXPR_VAR@10175..10178 - NAME@10175..10178 - IDENT@10175..10178 "std" - DOT@10178..10179 "." - NAME@10179..10183 - IDENT@10179..10183 "type" - ARGS_DESC@10183..10188 - L_PAREN@10183..10184 "(" - ARG@10184..10187 - EXPR_VAR@10184..10187 - NAME@10184..10187 - IDENT@10184..10187 "arr" - R_PAREN@10187..10188 ")" - WHITESPACE@10188..10193 "\n " - ELSE_KW@10193..10197 "else" - WHITESPACE@10197..10204 "\n " - FALSE_EXPR@10204..10278 - EXPR_APPLY@10204..10278 - EXPR_INDEX@10204..10214 - EXPR_VAR@10204..10207 - NAME@10204..10207 - IDENT@10204..10207 "std" - DOT@10207..10208 "." - NAME@10208..10214 - IDENT@10208..10214 "filter" - ARGS_DESC@10214..10278 - L_PAREN@10214..10215 "(" - ARG@10215..10242 - EXPR_FUNCTION@10215..10242 - FUNCTION_KW@10215..10223 "function" - PARAMS_DESC@10223..10226 - L_PAREN@10223..10224 "(" - PARAM@10224..10225 - DESTRUCT_FULL@10224..10225 - NAME@10224..10225 - IDENT@10224..10225 "i" - R_PAREN@10225..10226 ")" - WHITESPACE@10226..10227 " " - EXPR_BINARY@10227..10242 - LHS_EXPR@10227..10233 - EXPR_INDEX_EXPR@10227..10233 - LHS_EXPR@10227..10230 - EXPR_VAR@10227..10230 - NAME@10227..10230 - IDENT@10227..10230 "arr" - L_BRACK@10230..10231 "[" - EXPR_VAR@10231..10232 - NAME@10231..10232 - IDENT@10231..10232 "i" - R_BRACK@10232..10233 "]" - WHITESPACE@10233..10234 " " - EQ@10234..10236 "==" - WHITESPACE@10236..10237 " " - EXPR_VAR@10237..10242 - NAME@10237..10242 - IDENT@10237..10242 "value" - COMMA@10242..10243 "," - WHITESPACE@10243..10244 " " - ARG@10244..10277 - EXPR_APPLY@10244..10277 - EXPR_INDEX@10244..10253 - EXPR_VAR@10244..10247 - NAME@10244..10247 - IDENT@10244..10247 "std" - DOT@10247..10248 "." - NAME@10248..10253 - IDENT@10248..10253 "range" - ARGS_DESC@10253..10277 - L_PAREN@10253..10254 "(" - ARG@10254..10255 - EXPR_NUMBER@10254..10255 - FLOAT@10254..10255 "0" - COMMA@10255..10256 "," - WHITESPACE@10256..10257 " " - ARG@10257..10276 - EXPR_BINARY@10257..10276 - LHS_EXPR@10257..10272 - EXPR_APPLY@10257..10272 - EXPR_INDEX@10257..10267 - EXPR_VAR@10257..10260 - NAME@10257..10260 - IDENT@10257..10260 "std" - DOT@10260..10261 "." - NAME@10261..10267 - IDENT@10261..10267 "length" - ARGS_DESC@10267..10272 - L_PAREN@10267..10268 "(" - ARG@10268..10271 - EXPR_VAR@10268..10271 - NAME@10268..10271 - IDENT@10268..10271 "arr" - R_PAREN@10271..10272 ")" - WHITESPACE@10272..10273 " " - MINUS@10273..10274 "-" - WHITESPACE@10274..10275 " " - EXPR_NUMBER@10275..10276 - FLOAT@10275..10276 "1" - R_PAREN@10276..10277 ")" - R_PAREN@10277..10278 ")" + MEMBER_FIELD_METHOD@10063..10278 + FIELD_NAME_FIXED@10063..10067 + NAME@10063..10067 + IDENT@10063..10067 "find" + PARAMS_DESC@10067..10079 + L_PAREN@10067..10068 "(" + PARAM@10068..10073 + DESTRUCT_FULL@10068..10073 + NAME@10068..10073 + IDENT@10068..10073 "value" + COMMA@10073..10074 "," + WHITESPACE@10074..10075 " " + PARAM@10075..10078 + DESTRUCT_FULL@10075..10078 + NAME@10075..10078 + IDENT@10075..10078 "arr" + R_PAREN@10078..10079 ")" + COLONCOLON@10079..10081 "::" + WHITESPACE@10081..10086 "\n " + EXPR_IF_THEN_ELSE@10086..10278 + IF_KW@10086..10088 "if" + WHITESPACE@10088..10089 " " + EXPR_UNARY@10089..10106 + NOT@10089..10090 "!" + EXPR_APPLY@10090..10106 + EXPR_INDEX@10090..10101 + EXPR_VAR@10090..10093 + NAME@10090..10093 + IDENT@10090..10093 "std" + DOT@10093..10094 "." + NAME@10094..10101 + IDENT@10094..10101 "isArray" + ARGS_DESC@10101..10106 + L_PAREN@10101..10102 "(" + ARG@10102..10105 + EXPR_VAR@10102..10105 + NAME@10102..10105 + IDENT@10102..10105 "arr" + R_PAREN@10105..10106 ")" + WHITESPACE@10106..10107 " " + THEN_KW@10107..10111 "then" + WHITESPACE@10111..10118 "\n " + TRUE_EXPR@10118..10188 + EXPR_ERROR@10118..10188 + ERROR_KW@10118..10123 "error" + WHITESPACE@10123..10124 " " + EXPR_BINARY@10124..10188 + LHS_EXPR@10124..10172 + EXPR_STRING@10124..10172 + STRING_SINGLE@10124..10172 "'find second paramete ..." + WHITESPACE@10172..10173 " " + PLUS@10173..10174 "+" + WHITESPACE@10174..10175 " " + EXPR_APPLY@10175..10188 + EXPR_INDEX@10175..10183 + EXPR_VAR@10175..10178 + NAME@10175..10178 + IDENT@10175..10178 "std" + DOT@10178..10179 "." + NAME@10179..10183 + IDENT@10179..10183 "type" + ARGS_DESC@10183..10188 + L_PAREN@10183..10184 "(" + ARG@10184..10187 + EXPR_VAR@10184..10187 + NAME@10184..10187 + IDENT@10184..10187 "arr" + R_PAREN@10187..10188 ")" + WHITESPACE@10188..10193 "\n " + ELSE_KW@10193..10197 "else" + WHITESPACE@10197..10204 "\n " + FALSE_EXPR@10204..10278 + EXPR_APPLY@10204..10278 + EXPR_INDEX@10204..10214 + EXPR_VAR@10204..10207 + NAME@10204..10207 + IDENT@10204..10207 "std" + DOT@10207..10208 "." + NAME@10208..10214 + IDENT@10208..10214 "filter" + ARGS_DESC@10214..10278 + L_PAREN@10214..10215 "(" + ARG@10215..10242 + EXPR_FUNCTION@10215..10242 + FUNCTION_KW@10215..10223 "function" + PARAMS_DESC@10223..10226 + L_PAREN@10223..10224 "(" + PARAM@10224..10225 + DESTRUCT_FULL@10224..10225 + NAME@10224..10225 + IDENT@10224..10225 "i" + R_PAREN@10225..10226 ")" + WHITESPACE@10226..10227 " " + EXPR_BINARY@10227..10242 + LHS_EXPR@10227..10233 + EXPR_INDEX_EXPR@10227..10233 + LHS_EXPR@10227..10230 + EXPR_VAR@10227..10230 + NAME@10227..10230 + IDENT@10227..10230 "arr" + L_BRACK@10230..10231 "[" + EXPR_VAR@10231..10232 + NAME@10231..10232 + IDENT@10231..10232 "i" + R_BRACK@10232..10233 "]" + WHITESPACE@10233..10234 " " + EQ@10234..10236 "==" + WHITESPACE@10236..10237 " " + EXPR_VAR@10237..10242 + NAME@10237..10242 + IDENT@10237..10242 "value" + COMMA@10242..10243 "," + WHITESPACE@10243..10244 " " + ARG@10244..10277 + EXPR_APPLY@10244..10277 + EXPR_INDEX@10244..10253 + EXPR_VAR@10244..10247 + NAME@10244..10247 + IDENT@10244..10247 "std" + DOT@10247..10248 "." + NAME@10248..10253 + IDENT@10248..10253 "range" + ARGS_DESC@10253..10277 + L_PAREN@10253..10254 "(" + ARG@10254..10255 + EXPR_NUMBER@10254..10255 + FLOAT@10254..10255 "0" + COMMA@10255..10256 "," + WHITESPACE@10256..10257 " " + ARG@10257..10276 + EXPR_BINARY@10257..10276 + LHS_EXPR@10257..10272 + EXPR_APPLY@10257..10272 + EXPR_INDEX@10257..10267 + EXPR_VAR@10257..10260 + NAME@10257..10260 + IDENT@10257..10260 "std" + DOT@10260..10261 "." + NAME@10261..10267 + IDENT@10261..10267 "length" + ARGS_DESC@10267..10272 + L_PAREN@10267..10268 "(" + ARG@10268..10271 + EXPR_VAR@10268..10271 + NAME@10268..10271 + IDENT@10268..10271 "arr" + R_PAREN@10271..10272 ")" + WHITESPACE@10272..10273 " " + MINUS@10273..10274 "-" + WHITESPACE@10274..10275 " " + EXPR_NUMBER@10275..10276 + FLOAT@10275..10276 "1" + R_PAREN@10276..10277 ")" + R_PAREN@10277..10278 ")" COMMA@10278..10279 "," WHITESPACE@10279..10280 "\n" R_BRACE@10280..10281 "}" --- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__wrong_field_end.snap +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__wrong_field_end.snap @@ -2,37 +2,47 @@ source: crates/jrsonnet-rowan-parser/src/tests.rs expression: "{\n\ta: 1;\n\tb: 2;\n}\n" --- -SOURCE_FILE@0..11 - EXPR_OBJECT@0..8 - OBJ_BODY_MEMBER_LIST@0..8 +SOURCE_FILE@0..18 + EXPR_OBJECT@0..17 + OBJ_BODY_MEMBER_LIST@0..17 L_BRACE@0..1 "{" WHITESPACE@1..3 "\n\t" - MEMBER_FIELD@3..7 - FIELD_NORMAL@3..7 - FIELD_NAME_FIXED@3..4 - NAME@3..4 - IDENT@3..4 "a" - COLON@4..5 ":" - WHITESPACE@5..6 " " - EXPR_NUMBER@6..7 - FLOAT@6..7 "1" + MEMBER_FIELD_NORMAL@3..7 + FIELD_NAME_FIXED@3..4 + NAME@3..4 + IDENT@3..4 "a" + COLON@4..5 ":" + WHITESPACE@5..6 " " + EXPR_NUMBER@6..7 + FLOAT@6..7 "1" ERROR_UNEXPECTED_TOKEN@7..8 SEMI@7..8 ";" - WHITESPACE@8..10 "\n\t" - ERROR_UNEXPECTED_TOKEN@10..11 - IDENT@10..11 "b" + WHITESPACE@8..10 "\n\t" + MEMBER_FIELD_NORMAL@10..14 + FIELD_NAME_FIXED@10..11 + NAME@10..11 + IDENT@10..11 "b" + COLON@11..12 ":" + WHITESPACE@12..13 " " + EXPR_NUMBER@13..14 + FLOAT@13..14 "2" + ERROR_UNEXPECTED_TOKEN@14..15 + SEMI@14..15 ";" + WHITESPACE@15..16 "\n" + R_BRACE@16..17 "}" + WHITESPACE@17..18 "\n" === -LocatedSyntaxError { error: Unexpected { expected: Unnamed(R_BRACE), found: SEMI }, range: 7..8 } -LocatedSyntaxError { error: Unexpected { expected: Unnamed(EOF), found: IDENT }, range: 10..11 } +LocatedSyntaxError { error: Unexpected { expected: Named("comma"), found: SEMI }, range: 7..8 } +LocatedSyntaxError { error: Unexpected { expected: Named("comma"), found: SEMI }, range: 14..15 } === x syntax error ,-[1:1] 1 | { 2 | a: 1; : | - : `-- expected R_BRACE, found SEMI + : `-- expected comma, found SEMI 3 | b: 2; - : | - : `-- expected EOF, found IDENT + : | + : `-- expected comma, found SEMI 4 | } `---- --- a/crates/jrsonnet-rowan-parser/src/tests.rs +++ b/crates/jrsonnet-rowan-parser/src/tests.rs @@ -118,12 +118,6 @@ 1 "# - array_comp => r#" - [a for a in [1, 2, 3]] - "# - array_comp_incompatible_with_multiple_elems => r#" - [a for a in [1, 2, 3], b] - "# no_rhs => r#" a + @@ -186,6 +180,50 @@ local * = 1; a " + arr_compspec => r#" + [a for a in [1, 2, 3]] + "# + arr_compspec_comma => " + [a, for a in [1, 2, 3]] + " + arr_compspec_no_elems => " + [for a in [1, 2, 3]] + " + arr_compspec_incompatible_with_multiple_elems => r#" + [a for a in [1, 2, 3], b] + "# + arr_compspec_incompatible_with_multiple_elems_w => r#" + [a, b, for a in [1, 2, 3], c] + "# + + obj_compspec => r#" + {a:1 for a in [1, 2, 3]} + "# + obj_compspec_comma => " + {a:1, for a in [1, 2, 3]} + " + obj_compspec_no_elems => " + {for a in [1, 2, 3]} + " + obj_compspec_incompatible_with_multiple_elems => r#" + {a:1 for a in [1, 2, 3], b:1} + "# + obj_compspec_incompatible_with_multiple_elems_w => r#" + {a:1, b:1, for a in [1, 2, 3], c:1} + "# + + local_method => r#" + local + a(x) = x, + a = function(x) x, + ; c + "# + obj_method => r#" + { + a(x): x, + a: function(x) x, + } + "# ); #[test] --- a/crates/jrsonnet-rowan-parser/src/token_set.rs +++ b/crates/jrsonnet-rowan-parser/src/token_set.rs @@ -1,3 +1,5 @@ +use std::fmt; + use crate::SyntaxKind; #[derive(Clone, Copy, Default)] @@ -21,11 +23,55 @@ pub const fn union(self, other: SyntaxKindSet) -> SyntaxKindSet { SyntaxKindSet(self.0 | other.0) } + pub const fn with(self, kind: SyntaxKind) -> SyntaxKindSet { + SyntaxKindSet(self.0 | mask(kind)) + } pub const fn contains(&self, kind: SyntaxKind) -> bool { self.0 & mask(kind) != 0 } } +impl fmt::Display for SyntaxKindSet { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let mut v = self.0; + let mut variants = >::new(); + for i in 0..128 { + if v & 1 == 1 { + variants.push(SyntaxKind::from_raw(i)) + } + v >>= 1; + if v == 0 { + break; + } + } + for (i, v) in variants.iter().enumerate() { + if i == 0 { + } else if i == variants.len() - 1 { + write!(f, " or ")?; + } else { + write!(f, ", ")?; + } + write!(f, "{v:?}")?; + } + Ok(()) + } +} +impl fmt::Debug for SyntaxKindSet { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let mut v = self.0; + let mut variants = >::new(); + for i in 0..128 { + if v & 1 == 1 { + variants.push(SyntaxKind::from_raw(i)) + } + v >>= 1; + if v == 0 { + break; + } + } + f.debug_tuple("SyntaxKindSet").field(&variants).finish() + } +} const fn mask(kind: SyntaxKind) -> u128 { 1u128 << (kind as u128) -- gitstuff