From 54b5dfba4df6ddbfdafe7d93e0aa265b67591b2e Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Sun, 17 Jan 2021 20:13:34 -0800 Subject: Added shell grammar --- grammars/shell.bp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 grammars/shell.bp (limited to 'grammars/shell.bp') diff --git a/grammars/shell.bp b/grammars/shell.bp new file mode 100644 index 0000000..2e2b60a --- /dev/null +++ b/grammars/shell.bp @@ -0,0 +1,19 @@ +# Syntax definition for some Shell-specific patterns +# +# NOTE: this is *NOT* intended to be a complete definition of the language's +# syntax! Providing a full language grammar is overkill, because the intended +# use case is finding/replacing string patterns. This task does not require a +# full parse tree, and having one makes the task considerably more complicated. +# See the accompanying README.md for more info. + +comment: `#..$ +string: `"..`" % (`\./subcommand/\n) / `'..`' % \n / "<<" _ @delim=id _$ ..(^delim$)%\n +subcommand: `` .. `` % \n / "$" parens +keyword: |( + "echo" / "read" / "set" / "unset" / "readonly" / "shift" / "export" / "if" / "fi" / + "else" / "while" / "do" / "done" / "for" / "until" / "case" / "esac" / "break" / + "continue" / "exit" / "return" / "trap" / "wait" / "eval" / "exec" / "ulimit" / "umask" +)| +function-def: ^_ ["function"_] id _ `(_`) >(__`{) +function: function-def __ braces +var: `$ (id / braces) -- cgit v1.2.3