About to rework lexer and parser return types
This commit is contained in:
@@ -157,22 +157,23 @@ bitflags! {
|
|||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct LexFlags: u32 {
|
pub struct LexFlags: u32 {
|
||||||
/// Return comment tokens
|
/// Return comment tokens
|
||||||
const LEX_COMMENTS = 0b00000001;
|
const LEX_COMMENTS = 0b000000001;
|
||||||
/// Allow unfinished input
|
/// Allow unfinished input
|
||||||
const LEX_UNFINISHED = 0b00000010;
|
const LEX_UNFINISHED = 0b000000010;
|
||||||
/// The next string-type token is a command name
|
/// The next string-type token is a command name
|
||||||
const NEXT_IS_CMD = 0b00000100;
|
const NEXT_IS_CMD = 0b000000100;
|
||||||
/// We are in a quotation, so quoting rules apply
|
/// We are in a quotation, so quoting rules apply
|
||||||
const IN_QUOTE = 0b00001000;
|
const IN_QUOTE = 0b000001000;
|
||||||
/// Only lex strings; used in expansions
|
/// Only lex strings; used in expansions
|
||||||
const RAW = 0b00010000;
|
const RAW = 0b000010000;
|
||||||
/// The lexer has not produced any tokens yet
|
/// The lexer has not produced any tokens yet
|
||||||
const FRESH = 0b00010000;
|
const FRESH = 0b000010000;
|
||||||
/// The lexer has no more tokens to produce
|
/// The lexer has no more tokens to produce
|
||||||
const STALE = 0b00100000;
|
const STALE = 0b000100000;
|
||||||
/// The lexer's cursor is in a brace group
|
/// The lexer's cursor is in a brace group
|
||||||
const IN_BRC_GRP = 0b01000000;
|
const IN_BRC_GRP = 0b001000000;
|
||||||
const EXPECTING_IN = 0b10000000;
|
const EXPECTING_IN = 0b010000000;
|
||||||
|
const IN_CASE = 0b100000000;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -193,7 +194,6 @@ impl LexStream {
|
|||||||
/// `LexStream.slice(1..)`
|
/// `LexStream.slice(1..)`
|
||||||
///
|
///
|
||||||
pub fn slice<R: RangeBounds<usize>>(&self, range: R) -> Option<&str> {
|
pub fn slice<R: RangeBounds<usize>>(&self, range: R) -> Option<&str> {
|
||||||
// Sketchy downcast
|
|
||||||
let start = match range.start_bound() {
|
let start = match range.start_bound() {
|
||||||
Bound::Included(&start) => start,
|
Bound::Included(&start) => start,
|
||||||
Bound::Excluded(&start) => start + 1,
|
Bound::Excluded(&start) => start + 1,
|
||||||
@@ -314,6 +314,7 @@ impl LexStream {
|
|||||||
let mut pos = self.cursor;
|
let mut pos = self.cursor;
|
||||||
let mut chars = slice.chars().peekable();
|
let mut chars = slice.chars().peekable();
|
||||||
|
|
||||||
|
if self.flags.contains(LexFlags::IN_CASE) {
|
||||||
if let Some(count) = case_pat_lookahead(chars.clone()) {
|
if let Some(count) = case_pat_lookahead(chars.clone()) {
|
||||||
pos += count;
|
pos += count;
|
||||||
let casepat_tk = self.get_token(self.cursor..pos, TkRule::CasePattern);
|
let casepat_tk = self.get_token(self.cursor..pos, TkRule::CasePattern);
|
||||||
@@ -321,6 +322,7 @@ impl LexStream {
|
|||||||
self.set_next_is_cmd(true);
|
self.set_next_is_cmd(true);
|
||||||
return Ok(casepat_tk)
|
return Ok(casepat_tk)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
while let Some(ch) = chars.next() {
|
while let Some(ch) = chars.next() {
|
||||||
match ch {
|
match ch {
|
||||||
@@ -532,6 +534,7 @@ impl LexStream {
|
|||||||
"case" | "select" | "for" => {
|
"case" | "select" | "for" => {
|
||||||
new_tk.mark(TkFlags::KEYWORD);
|
new_tk.mark(TkFlags::KEYWORD);
|
||||||
self.flags |= LexFlags::EXPECTING_IN;
|
self.flags |= LexFlags::EXPECTING_IN;
|
||||||
|
self.flags |= LexFlags::IN_CASE;
|
||||||
self.set_next_is_cmd(false);
|
self.set_next_is_cmd(false);
|
||||||
}
|
}
|
||||||
"in" if self.flags.contains(LexFlags::EXPECTING_IN) => {
|
"in" if self.flags.contains(LexFlags::EXPECTING_IN) => {
|
||||||
@@ -539,6 +542,9 @@ impl LexStream {
|
|||||||
self.flags &= !LexFlags::EXPECTING_IN;
|
self.flags &= !LexFlags::EXPECTING_IN;
|
||||||
}
|
}
|
||||||
_ if is_keyword(text) => {
|
_ if is_keyword(text) => {
|
||||||
|
if text == "esac" && self.flags.contains(LexFlags::IN_CASE) {
|
||||||
|
self.flags &= !LexFlags::IN_CASE;
|
||||||
|
}
|
||||||
new_tk.mark(TkFlags::KEYWORD);
|
new_tk.mark(TkFlags::KEYWORD);
|
||||||
}
|
}
|
||||||
_ if is_assignment(text) => {
|
_ if is_assignment(text) => {
|
||||||
|
|||||||
@@ -1006,6 +1006,9 @@ impl ParseStream {
|
|||||||
let mut assignments = vec![];
|
let mut assignments = vec![];
|
||||||
|
|
||||||
while let Some(prefix_tk) = tk_iter.next() {
|
while let Some(prefix_tk) = tk_iter.next() {
|
||||||
|
if let TkRule::CasePattern = prefix_tk.class {
|
||||||
|
return Err(parse_err_full("Found case pattern in command", &prefix_tk.span))
|
||||||
|
}
|
||||||
let is_cmd = prefix_tk.flags.contains(TkFlags::IS_CMD);
|
let is_cmd = prefix_tk.flags.contains(TkFlags::IS_CMD);
|
||||||
let is_assignment = prefix_tk.flags.contains(TkFlags::ASSIGN);
|
let is_assignment = prefix_tk.flags.contains(TkFlags::ASSIGN);
|
||||||
let is_keyword = prefix_tk.flags.contains(TkFlags::KEYWORD);
|
let is_keyword = prefix_tk.flags.contains(TkFlags::KEYWORD);
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
use std::{env, os::unix::fs::PermissionsExt, path::{Path, PathBuf}, sync::Arc};
|
use std::{env, os::unix::fs::PermissionsExt, path::{Path, PathBuf}, sync::Arc};
|
||||||
use crate::prelude::*;
|
use crate::{builtin::BUILTINS, prelude::*};
|
||||||
|
|
||||||
use rustyline::highlight::Highlighter;
|
use rustyline::highlight::Highlighter;
|
||||||
use crate::{libsh::term::{Style, StyleSet, Styled}, parse::lex::{LexFlags, LexStream, Tk, TkFlags, TkRule}, state::read_logic};
|
use crate::{libsh::term::{Style, StyleSet, Styled}, parse::lex::{LexFlags, LexStream, Tk, TkFlags, TkRule}, state::read_logic};
|
||||||
@@ -70,7 +70,9 @@ impl FernHighlighter {
|
|||||||
l.get_func(raw).is_some() || l.get_alias(raw).is_some()
|
l.get_func(raw).is_some() || l.get_alias(raw).is_some()
|
||||||
});
|
});
|
||||||
|
|
||||||
if is_alias_or_function || is_in_path {
|
let is_builtin = BUILTINS.contains(&raw);
|
||||||
|
|
||||||
|
if is_alias_or_function || is_in_path || is_builtin {
|
||||||
raw.styled(Style::Green)
|
raw.styled(Style::Green)
|
||||||
} else {
|
} else {
|
||||||
raw.styled(Style::Bold | Style::Red)
|
raw.styled(Style::Bold | Style::Red)
|
||||||
|
|||||||
@@ -1,187 +0,0 @@
|
|||||||
---
|
|
||||||
source: src/tests/lexer.rs
|
|
||||||
assertion_line: 51
|
|
||||||
expression: tokens
|
|
||||||
---
|
|
||||||
[
|
|
||||||
Ok(
|
|
||||||
Tk {
|
|
||||||
class: SOI,
|
|
||||||
span: Span {
|
|
||||||
range: 0..0,
|
|
||||||
source: "case $foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
),
|
|
||||||
Ok(
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 0..4,
|
|
||||||
source: "case $foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
KEYWORD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
),
|
|
||||||
Ok(
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 5..9,
|
|
||||||
source: "case $foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
),
|
|
||||||
Ok(
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 10..12,
|
|
||||||
source: "case $foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
KEYWORD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
),
|
|
||||||
Ok(
|
|
||||||
Tk {
|
|
||||||
class: CasePattern,
|
|
||||||
span: Span {
|
|
||||||
range: 13..17,
|
|
||||||
source: "case $foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
),
|
|
||||||
Ok(
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 18..21,
|
|
||||||
source: "case $foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
),
|
|
||||||
Ok(
|
|
||||||
Tk {
|
|
||||||
class: Sep,
|
|
||||||
span: Span {
|
|
||||||
range: 21..24,
|
|
||||||
source: "case $foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
),
|
|
||||||
Ok(
|
|
||||||
Tk {
|
|
||||||
class: CasePattern,
|
|
||||||
span: Span {
|
|
||||||
range: 24..28,
|
|
||||||
source: "case $foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
),
|
|
||||||
Ok(
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 29..32,
|
|
||||||
source: "case $foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
),
|
|
||||||
Ok(
|
|
||||||
Tk {
|
|
||||||
class: Sep,
|
|
||||||
span: Span {
|
|
||||||
range: 32..35,
|
|
||||||
source: "case $foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
),
|
|
||||||
Ok(
|
|
||||||
Tk {
|
|
||||||
class: CasePattern,
|
|
||||||
span: Span {
|
|
||||||
range: 35..39,
|
|
||||||
source: "case $foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
),
|
|
||||||
Ok(
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 40..43,
|
|
||||||
source: "case $foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
),
|
|
||||||
Ok(
|
|
||||||
Tk {
|
|
||||||
class: Sep,
|
|
||||||
span: Span {
|
|
||||||
range: 43..46,
|
|
||||||
source: "case $foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
),
|
|
||||||
Ok(
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 46..50,
|
|
||||||
source: "case $foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
KEYWORD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
),
|
|
||||||
Ok(
|
|
||||||
Tk {
|
|
||||||
class: EOI,
|
|
||||||
span: Span {
|
|
||||||
range: 50..50,
|
|
||||||
source: "case $foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
),
|
|
||||||
]
|
|
||||||
@@ -1,596 +0,0 @@
|
|||||||
---
|
|
||||||
source: src/tests/parser.rs
|
|
||||||
assertion_line: 166
|
|
||||||
expression: nodes
|
|
||||||
---
|
|
||||||
[
|
|
||||||
Ok(
|
|
||||||
Node {
|
|
||||||
class: Conjunction {
|
|
||||||
elements: [
|
|
||||||
ConjunctNode {
|
|
||||||
cmd: Node {
|
|
||||||
class: CaseNode {
|
|
||||||
pattern: Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 5..8,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
case_blocks: [
|
|
||||||
CaseNode {
|
|
||||||
pattern: Tk {
|
|
||||||
class: CasePattern,
|
|
||||||
span: Span {
|
|
||||||
range: 13..17,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
body: [
|
|
||||||
Node {
|
|
||||||
class: Pipeline {
|
|
||||||
cmds: [
|
|
||||||
Node {
|
|
||||||
class: Command {
|
|
||||||
assignments: [],
|
|
||||||
argv: [
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 18..21,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
flags: NdFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
redirs: [],
|
|
||||||
tokens: [
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 18..21,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Sep,
|
|
||||||
span: Span {
|
|
||||||
range: 21..27,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
pipe_err: false,
|
|
||||||
},
|
|
||||||
flags: NdFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
redirs: [],
|
|
||||||
tokens: [
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 18..21,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Sep,
|
|
||||||
span: Span {
|
|
||||||
range: 21..27,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
CaseNode {
|
|
||||||
pattern: Tk {
|
|
||||||
class: CasePattern,
|
|
||||||
span: Span {
|
|
||||||
range: 27..31,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
body: [
|
|
||||||
Node {
|
|
||||||
class: Pipeline {
|
|
||||||
cmds: [
|
|
||||||
Node {
|
|
||||||
class: Command {
|
|
||||||
assignments: [],
|
|
||||||
argv: [
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 32..35,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
flags: NdFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
redirs: [],
|
|
||||||
tokens: [
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 32..35,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Sep,
|
|
||||||
span: Span {
|
|
||||||
range: 35..41,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
pipe_err: false,
|
|
||||||
},
|
|
||||||
flags: NdFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
redirs: [],
|
|
||||||
tokens: [
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 32..35,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Sep,
|
|
||||||
span: Span {
|
|
||||||
range: 35..41,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
CaseNode {
|
|
||||||
pattern: Tk {
|
|
||||||
class: CasePattern,
|
|
||||||
span: Span {
|
|
||||||
range: 41..45,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
body: [
|
|
||||||
Node {
|
|
||||||
class: Pipeline {
|
|
||||||
cmds: [
|
|
||||||
Node {
|
|
||||||
class: Command {
|
|
||||||
assignments: [],
|
|
||||||
argv: [
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 46..49,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
flags: NdFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
redirs: [],
|
|
||||||
tokens: [
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 46..49,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Sep,
|
|
||||||
span: Span {
|
|
||||||
range: 49..54,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
pipe_err: false,
|
|
||||||
},
|
|
||||||
flags: NdFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
redirs: [],
|
|
||||||
tokens: [
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 46..49,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Sep,
|
|
||||||
span: Span {
|
|
||||||
range: 49..54,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
flags: NdFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
redirs: [],
|
|
||||||
tokens: [
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 0..4,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
KEYWORD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 5..8,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 9..11,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
KEYWORD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Sep,
|
|
||||||
span: Span {
|
|
||||||
range: 11..13,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: CasePattern,
|
|
||||||
span: Span {
|
|
||||||
range: 13..17,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 18..21,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Sep,
|
|
||||||
span: Span {
|
|
||||||
range: 21..27,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: CasePattern,
|
|
||||||
span: Span {
|
|
||||||
range: 27..31,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 32..35,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Sep,
|
|
||||||
span: Span {
|
|
||||||
range: 35..41,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: CasePattern,
|
|
||||||
span: Span {
|
|
||||||
range: 41..45,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 46..49,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Sep,
|
|
||||||
span: Span {
|
|
||||||
range: 49..54,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 54..58,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
KEYWORD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
operator: Null,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
flags: NdFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
redirs: [],
|
|
||||||
tokens: [
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 0..4,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
KEYWORD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 5..8,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 9..11,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
KEYWORD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Sep,
|
|
||||||
span: Span {
|
|
||||||
range: 11..13,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: CasePattern,
|
|
||||||
span: Span {
|
|
||||||
range: 13..17,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 18..21,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Sep,
|
|
||||||
span: Span {
|
|
||||||
range: 21..27,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: CasePattern,
|
|
||||||
span: Span {
|
|
||||||
range: 27..31,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 32..35,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Sep,
|
|
||||||
span: Span {
|
|
||||||
range: 35..41,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: CasePattern,
|
|
||||||
span: Span {
|
|
||||||
range: 41..45,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 46..49,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Sep,
|
|
||||||
span: Span {
|
|
||||||
range: 49..54,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 54..58,
|
|
||||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
KEYWORD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
),
|
|
||||||
]
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,576 +0,0 @@
|
|||||||
---
|
|
||||||
source: src/tests/parser.rs
|
|
||||||
assertion_line: 149
|
|
||||||
expression: nodes
|
|
||||||
---
|
|
||||||
[
|
|
||||||
Ok(
|
|
||||||
Node {
|
|
||||||
class: Conjunction {
|
|
||||||
elements: [
|
|
||||||
ConjunctNode {
|
|
||||||
cmd: Node {
|
|
||||||
class: CaseNode {
|
|
||||||
pattern: Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 5..8,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
case_blocks: [
|
|
||||||
CaseNode {
|
|
||||||
pattern: Tk {
|
|
||||||
class: CasePattern,
|
|
||||||
span: Span {
|
|
||||||
range: 12..16,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
body: [
|
|
||||||
Node {
|
|
||||||
class: Pipeline {
|
|
||||||
cmds: [
|
|
||||||
Node {
|
|
||||||
class: Command {
|
|
||||||
assignments: [],
|
|
||||||
argv: [
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 17..20,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
flags: NdFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
redirs: [],
|
|
||||||
tokens: [
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 17..20,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Sep,
|
|
||||||
span: Span {
|
|
||||||
range: 20..23,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
pipe_err: false,
|
|
||||||
},
|
|
||||||
flags: NdFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
redirs: [],
|
|
||||||
tokens: [
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 17..20,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Sep,
|
|
||||||
span: Span {
|
|
||||||
range: 20..23,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
CaseNode {
|
|
||||||
pattern: Tk {
|
|
||||||
class: CasePattern,
|
|
||||||
span: Span {
|
|
||||||
range: 23..27,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
body: [
|
|
||||||
Node {
|
|
||||||
class: Pipeline {
|
|
||||||
cmds: [
|
|
||||||
Node {
|
|
||||||
class: Command {
|
|
||||||
assignments: [],
|
|
||||||
argv: [
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 28..31,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
flags: NdFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
redirs: [],
|
|
||||||
tokens: [
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 28..31,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Sep,
|
|
||||||
span: Span {
|
|
||||||
range: 31..34,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
pipe_err: false,
|
|
||||||
},
|
|
||||||
flags: NdFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
redirs: [],
|
|
||||||
tokens: [
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 28..31,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Sep,
|
|
||||||
span: Span {
|
|
||||||
range: 31..34,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
CaseNode {
|
|
||||||
pattern: Tk {
|
|
||||||
class: CasePattern,
|
|
||||||
span: Span {
|
|
||||||
range: 34..38,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
body: [
|
|
||||||
Node {
|
|
||||||
class: Pipeline {
|
|
||||||
cmds: [
|
|
||||||
Node {
|
|
||||||
class: Command {
|
|
||||||
assignments: [],
|
|
||||||
argv: [
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 39..42,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
flags: NdFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
redirs: [],
|
|
||||||
tokens: [
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 39..42,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Sep,
|
|
||||||
span: Span {
|
|
||||||
range: 42..45,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
pipe_err: false,
|
|
||||||
},
|
|
||||||
flags: NdFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
redirs: [],
|
|
||||||
tokens: [
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 39..42,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Sep,
|
|
||||||
span: Span {
|
|
||||||
range: 42..45,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
flags: NdFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
redirs: [],
|
|
||||||
tokens: [
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 0..4,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
KEYWORD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 5..8,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 9..11,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
KEYWORD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: CasePattern,
|
|
||||||
span: Span {
|
|
||||||
range: 12..16,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 17..20,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Sep,
|
|
||||||
span: Span {
|
|
||||||
range: 20..23,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: CasePattern,
|
|
||||||
span: Span {
|
|
||||||
range: 23..27,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 28..31,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Sep,
|
|
||||||
span: Span {
|
|
||||||
range: 31..34,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: CasePattern,
|
|
||||||
span: Span {
|
|
||||||
range: 34..38,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 39..42,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Sep,
|
|
||||||
span: Span {
|
|
||||||
range: 42..45,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 45..49,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
KEYWORD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
operator: Null,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
flags: NdFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
redirs: [],
|
|
||||||
tokens: [
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 0..4,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
KEYWORD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 5..8,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 9..11,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
KEYWORD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: CasePattern,
|
|
||||||
span: Span {
|
|
||||||
range: 12..16,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 17..20,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Sep,
|
|
||||||
span: Span {
|
|
||||||
range: 20..23,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: CasePattern,
|
|
||||||
span: Span {
|
|
||||||
range: 23..27,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 28..31,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Sep,
|
|
||||||
span: Span {
|
|
||||||
range: 31..34,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: CasePattern,
|
|
||||||
span: Span {
|
|
||||||
range: 34..38,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 39..42,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
IS_CMD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Sep,
|
|
||||||
span: Span {
|
|
||||||
range: 42..45,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
0x0,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
Tk {
|
|
||||||
class: Str,
|
|
||||||
span: Span {
|
|
||||||
range: 45..49,
|
|
||||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
|
||||||
},
|
|
||||||
flags: TkFlags(
|
|
||||||
KEYWORD,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
),
|
|
||||||
]
|
|
||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user