diff --git a/crates/deno_task_shell/src/grammar.pest b/crates/deno_task_shell/src/grammar.pest index 600cedd..b5fc4ea 100644 --- a/crates/deno_task_shell/src/grammar.pest +++ b/crates/deno_task_shell/src/grammar.pest @@ -8,7 +8,7 @@ COMMENT = _{ "#" ~ (!NEWLINE ~ ANY)* } QUOTED_WORD = { DOUBLE_QUOTED | SINGLE_QUOTED } UNQUOTED_PENDING_WORD = ${ - (!(WHITESPACE | OPERATOR | NEWLINE) ~ ( + (!(RESERVED_WORD | WHITESPACE | OPERATOR | NEWLINE) ~ ( EXIT_STATUS | UNQUOTED_ESCAPE_CHAR | SUB_COMMAND | @@ -102,8 +102,8 @@ pipeline = !{ Bang? ~ pipe_sequence } pipe_sequence = !{ command ~ ((StdoutStderr | Stdout) ~ linebreak ~ pipe_sequence)? } command = !{ - simple_command | compound_command ~ redirect_list? | + simple_command | function_definition } @@ -185,7 +185,7 @@ simple_command = !{ cmd_prefix = !{ (io_redirect | ASSIGNMENT_WORD)+ } cmd_suffix = !{ (io_redirect | UNQUOTED_PENDING_WORD)+ } -cmd_name = @{ (RESERVED_WORD | UNQUOTED_PENDING_WORD) } +cmd_name = @{ (UNQUOTED_PENDING_WORD) } cmd_word = @{ (ASSIGNMENT_WORD | UNQUOTED_PENDING_WORD) } redirect_list = !{ io_redirect+ } diff --git a/crates/deno_task_shell/src/parser.rs b/crates/deno_task_shell/src/parser.rs index 27919df..6b30d9f 100644 --- a/crates/deno_task_shell/src/parser.rs +++ b/crates/deno_task_shell/src/parser.rs @@ -574,6 +574,7 @@ fn parse_pipe_sequence(pair: Pair) -> Result { fn parse_command(pair: Pair) -> Result { let inner = pair.into_inner().next().unwrap(); + println!("inner: {:?}", inner); match inner.as_rule() { Rule::simple_command => parse_simple_command(inner), Rule::compound_command => parse_compound_command(inner), @@ -609,7 +610,9 @@ fn parse_simple_command(pair: Pair) -> Result { } } Rule::cmd_word | Rule::cmd_name => { - args.push(parse_word(item.into_inner().next().unwrap())?) + println!("cmd_word: {:?}", item); + println!("cmd_word: {:?}", item.into_inner()); + // args.push(parse_word(item.into_inner().next().unwrap())?) } Rule::cmd_suffix => { for suffix in item.into_inner() {