Implemented logic for loops and if statements
This commit is contained in:
@@ -5,7 +5,7 @@ expression: nodes
|
||||
[
|
||||
Ok(
|
||||
Node {
|
||||
class: CmdList {
|
||||
class: Conjunction {
|
||||
elements: [
|
||||
ConjunctNode {
|
||||
cmd: Node {
|
||||
|
||||
@@ -5,7 +5,7 @@ expression: nodes
|
||||
[
|
||||
Ok(
|
||||
Node {
|
||||
class: CmdList {
|
||||
class: Conjunction {
|
||||
elements: [
|
||||
ConjunctNode {
|
||||
cmd: Node {
|
||||
|
||||
@@ -5,7 +5,7 @@ expression: nodes
|
||||
[
|
||||
Ok(
|
||||
Node {
|
||||
class: CmdList {
|
||||
class: Conjunction {
|
||||
elements: [
|
||||
ConjunctNode {
|
||||
cmd: Node {
|
||||
|
||||
@@ -5,7 +5,7 @@ expression: nodes
|
||||
[
|
||||
Ok(
|
||||
Node {
|
||||
class: CmdList {
|
||||
class: Conjunction {
|
||||
elements: [
|
||||
ConjunctNode {
|
||||
cmd: Node {
|
||||
|
||||
435
src/tests/snapshots/fern__tests__parser__parse_if_redirs.snap
Normal file
435
src/tests/snapshots/fern__tests__parser__parse_if_redirs.snap
Normal file
@@ -0,0 +1,435 @@
|
||||
---
|
||||
source: src/tests/parser.rs
|
||||
expression: nodes
|
||||
---
|
||||
[
|
||||
Ok(
|
||||
Node {
|
||||
class: Conjunction {
|
||||
elements: [
|
||||
ConjunctNode {
|
||||
cmd: Node {
|
||||
class: IfNode {
|
||||
cond_nodes: [
|
||||
CondNode {
|
||||
cond: Node {
|
||||
class: Pipeline {
|
||||
cmds: [
|
||||
Node {
|
||||
class: Command {
|
||||
assignments: [],
|
||||
argv: [
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 3..6,
|
||||
source: "if foo; then echo bar; fi > file.txt",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
],
|
||||
},
|
||||
flags: NdFlags(
|
||||
0x0,
|
||||
),
|
||||
redirs: [],
|
||||
tokens: [
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 3..6,
|
||||
source: "if foo; then echo bar; fi > file.txt",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Sep,
|
||||
span: Span {
|
||||
range: 6..8,
|
||||
source: "if foo; then echo bar; fi > file.txt",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
pipe_err: false,
|
||||
},
|
||||
flags: NdFlags(
|
||||
0x0,
|
||||
),
|
||||
redirs: [],
|
||||
tokens: [
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 3..6,
|
||||
source: "if foo; then echo bar; fi > file.txt",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Sep,
|
||||
span: Span {
|
||||
range: 6..8,
|
||||
source: "if foo; then echo bar; fi > file.txt",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
],
|
||||
},
|
||||
body: [
|
||||
Node {
|
||||
class: Pipeline {
|
||||
cmds: [
|
||||
Node {
|
||||
class: Command {
|
||||
assignments: [],
|
||||
argv: [
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 13..17,
|
||||
source: "if foo; then echo bar; fi > file.txt",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD | BUILTIN,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 18..21,
|
||||
source: "if foo; then echo bar; fi > file.txt",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
],
|
||||
},
|
||||
flags: NdFlags(
|
||||
0x0,
|
||||
),
|
||||
redirs: [],
|
||||
tokens: [
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 13..17,
|
||||
source: "if foo; then echo bar; fi > file.txt",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD | BUILTIN,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 18..21,
|
||||
source: "if foo; then echo bar; fi > file.txt",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Sep,
|
||||
span: Span {
|
||||
range: 21..23,
|
||||
source: "if foo; then echo bar; fi > file.txt",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
pipe_err: false,
|
||||
},
|
||||
flags: NdFlags(
|
||||
0x0,
|
||||
),
|
||||
redirs: [],
|
||||
tokens: [
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 13..17,
|
||||
source: "if foo; then echo bar; fi > file.txt",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD | BUILTIN,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 18..21,
|
||||
source: "if foo; then echo bar; fi > file.txt",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Sep,
|
||||
span: Span {
|
||||
range: 21..23,
|
||||
source: "if foo; then echo bar; fi > file.txt",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
else_block: [],
|
||||
},
|
||||
flags: NdFlags(
|
||||
0x0,
|
||||
),
|
||||
redirs: [
|
||||
Redir {
|
||||
io_mode: File {
|
||||
tgt_fd: 1,
|
||||
file: File {
|
||||
fd: 3,
|
||||
path: "/home/pagedmov/Coding/projects/rust/fern/file.txt",
|
||||
read: false,
|
||||
write: true,
|
||||
},
|
||||
},
|
||||
class: Output,
|
||||
},
|
||||
],
|
||||
tokens: [
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 0..2,
|
||||
source: "if foo; then echo bar; fi > file.txt",
|
||||
},
|
||||
flags: TkFlags(
|
||||
KEYWORD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 3..6,
|
||||
source: "if foo; then echo bar; fi > file.txt",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Sep,
|
||||
span: Span {
|
||||
range: 6..8,
|
||||
source: "if foo; then echo bar; fi > file.txt",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 8..12,
|
||||
source: "if foo; then echo bar; fi > file.txt",
|
||||
},
|
||||
flags: TkFlags(
|
||||
KEYWORD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 13..17,
|
||||
source: "if foo; then echo bar; fi > file.txt",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD | BUILTIN,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 18..21,
|
||||
source: "if foo; then echo bar; fi > file.txt",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Sep,
|
||||
span: Span {
|
||||
range: 21..23,
|
||||
source: "if foo; then echo bar; fi > file.txt",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 23..25,
|
||||
source: "if foo; then echo bar; fi > file.txt",
|
||||
},
|
||||
flags: TkFlags(
|
||||
KEYWORD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Redir,
|
||||
span: Span {
|
||||
range: 26..27,
|
||||
source: "if foo; then echo bar; fi > file.txt",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 28..36,
|
||||
source: "if foo; then echo bar; fi > file.txt",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
],
|
||||
},
|
||||
operator: Null,
|
||||
},
|
||||
],
|
||||
},
|
||||
flags: NdFlags(
|
||||
0x0,
|
||||
),
|
||||
redirs: [],
|
||||
tokens: [
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 0..2,
|
||||
source: "if foo; then echo bar; fi > file.txt",
|
||||
},
|
||||
flags: TkFlags(
|
||||
KEYWORD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 3..6,
|
||||
source: "if foo; then echo bar; fi > file.txt",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Sep,
|
||||
span: Span {
|
||||
range: 6..8,
|
||||
source: "if foo; then echo bar; fi > file.txt",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 8..12,
|
||||
source: "if foo; then echo bar; fi > file.txt",
|
||||
},
|
||||
flags: TkFlags(
|
||||
KEYWORD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 13..17,
|
||||
source: "if foo; then echo bar; fi > file.txt",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD | BUILTIN,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 18..21,
|
||||
source: "if foo; then echo bar; fi > file.txt",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Sep,
|
||||
span: Span {
|
||||
range: 21..23,
|
||||
source: "if foo; then echo bar; fi > file.txt",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 23..25,
|
||||
source: "if foo; then echo bar; fi > file.txt",
|
||||
},
|
||||
flags: TkFlags(
|
||||
KEYWORD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Redir,
|
||||
span: Span {
|
||||
range: 26..27,
|
||||
source: "if foo; then echo bar; fi > file.txt",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 28..36,
|
||||
source: "if foo; then echo bar; fi > file.txt",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
],
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -5,7 +5,7 @@ expression: nodes
|
||||
[
|
||||
Ok(
|
||||
Node {
|
||||
class: CmdList {
|
||||
class: Conjunction {
|
||||
elements: [
|
||||
ConjunctNode {
|
||||
cmd: Node {
|
||||
|
||||
@@ -5,7 +5,7 @@ expression: nodes
|
||||
[
|
||||
Ok(
|
||||
Node {
|
||||
class: CmdList {
|
||||
class: Conjunction {
|
||||
elements: [
|
||||
ConjunctNode {
|
||||
cmd: Node {
|
||||
|
||||
@@ -5,7 +5,7 @@ expression: nodes
|
||||
[
|
||||
Ok(
|
||||
Node {
|
||||
class: CmdList {
|
||||
class: Conjunction {
|
||||
elements: [
|
||||
ConjunctNode {
|
||||
cmd: Node {
|
||||
|
||||
@@ -5,7 +5,7 @@ expression: nodes
|
||||
[
|
||||
Ok(
|
||||
Node {
|
||||
class: CmdList {
|
||||
class: Conjunction {
|
||||
elements: [
|
||||
ConjunctNode {
|
||||
cmd: Node {
|
||||
|
||||
@@ -5,7 +5,7 @@ expression: nodes
|
||||
[
|
||||
Ok(
|
||||
Node {
|
||||
class: CmdList {
|
||||
class: Conjunction {
|
||||
elements: [
|
||||
ConjunctNode {
|
||||
cmd: Node {
|
||||
|
||||
@@ -5,7 +5,7 @@ expression: nodes
|
||||
[
|
||||
Ok(
|
||||
Node {
|
||||
class: CmdList {
|
||||
class: Conjunction {
|
||||
elements: [
|
||||
ConjunctNode {
|
||||
cmd: Node {
|
||||
@@ -198,7 +198,7 @@ expression: nodes
|
||||
),
|
||||
Ok(
|
||||
Node {
|
||||
class: CmdList {
|
||||
class: Conjunction {
|
||||
elements: [
|
||||
ConjunctNode {
|
||||
cmd: Node {
|
||||
@@ -391,7 +391,7 @@ expression: nodes
|
||||
),
|
||||
Ok(
|
||||
Node {
|
||||
class: CmdList {
|
||||
class: Conjunction {
|
||||
elements: [
|
||||
ConjunctNode {
|
||||
cmd: Node {
|
||||
|
||||
@@ -5,7 +5,7 @@ expression: nodes
|
||||
[
|
||||
Ok(
|
||||
Node {
|
||||
class: CmdList {
|
||||
class: Conjunction {
|
||||
elements: [
|
||||
ConjunctNode {
|
||||
cmd: Node {
|
||||
|
||||
@@ -5,7 +5,7 @@ expression: nodes
|
||||
[
|
||||
Ok(
|
||||
Node {
|
||||
class: CmdList {
|
||||
class: Conjunction {
|
||||
elements: [
|
||||
ConjunctNode {
|
||||
cmd: Node {
|
||||
|
||||
Reference in New Issue
Block a user