Shell-Parser
view release on metacpan or search on metacpan
lib/Shell/Parser.pm view on Meta::CPAN
C<bourne> - the standard Bourne shell
=item *
C<csh> - the C shell
=item *
C<tcsh> - the TENEX C shell
=item *
C<korn88> - the Korn shell, 1988 version
=item *
C<korn93> - the Korn shell 1993 version
=item *
C<bash> - GNU Bourne Again SHell
=item *
C<zsh> - the Z shell
=back
Returns the current syntax when called with no argument, or the previous
syntax when affecting a new one.
=cut
# Note:
# - keywords are the "reserved words" in *sh man pages
# - builtins are the "builtin commands" in *sh man pages
my %shell_syntaxes = (
bourne => {
name => 'Bourne shell',
metachars => [ qw{ ; & ( ) | < > } ],
keywords => [ qw(
! { } case do done elif else esac for if fi in then until while
) ],
builtins => [ qw(
alias bg break cd command continue eval exec exit export fc fg
getopts hash jobid jobs local pwd read readonly return select
set setvar shift trap ulimit umask unalias unset wait
) ],
},
csh => {
name => 'C-shell',
metachars => [ qw{ ; & ( ) | < > } ],
keywords => [ qw(
breaksw case default else end endif endsw foreach if switch then while
) ],
builtins => [ qw(
% @ alias alloc bg break cd chdir continue dirs echo eval exec
exit fg glob goto hashstat history jobs kill limit login logout
nice nohup notify onintr popd pushd rehash repeat set setenv
shift source stop suspend time umask unalias unhash unlimit unset
unsetenv wait which
) ],
},
tcsh => {
name => 'TENEX C-shell',
metachars => [ qw{ ; & ( ) | < > } ],
keywords => [ qw(
breaksw case default else end endif endsw foreach if switch then while
) ],
builtins => [ qw(
: % @ alias alloc bg bindkey break builtins bye cd chdir complete
continue dirs echo echotc eval exec exit fg filetest getspath
getxvers glob goto hashstat history hup inlib jobs kill limit log
login logout ls-F migrate newgrp nice nohup notify onintr popd
printenv pushd rehash repeat rootnode sched set setenv setpath
setspath settc setty setxvers shift source stop suspend telltc
time umask unalias uncomplete unhash universe unlimit unset
unsetenv ver wait warp watchlog where which
) ],
},
korn88 => {
name => 'Korn shell 88',
metachars => [ qw{ ; & ( ) | < > } ],
keywords => [ qw(
{ } [[ ]] case do done elif else esac fi for function if select
time then until while
) ],
builtins => [ qw(
: . alias bg break continue cd command echo eval exec exit export
fc fg getopts hash jobs kill let login newgrp print pwd read
readonly return set shift stop suspend test times trap type
typeset ulimit umask unalias unset wait whence
) ],
},
korn93 => {
name => 'Korn shell 93',
metachars => [ qw{ ; & ( ) | < > } ],
keywords => [ qw(
! { } [[ ]] case do done elif else esac fi for function if select
then time until while
) ],
builtins => [ qw(
: . alias bg break builtin cd command continue disown echo eval
exec exit export false fg getconf getopts hist jobs kill let newgrp
print printf string pwd read readonly return set shift sleep trap
true typeset ulimit umask unalias unset wait whence
) ],
},
bash => {
name => 'Bourne Again SHell',
metachars => [ qw{ ; & ( ) | < > } ],
keywords => [ qw(
! { } [[ ]] case do done elif else esac fi for function if in
select then time until while
) ],
builtins => [ qw(
: . alias bg bind break builtin cd command compgen complete
continue declare dirs disown echo enable eval exec exit export
fc fg getopts hash help history jobs kill let local logout popd
printf pushd pwd read readonly return set shift shopt source
suspend test times trap type typeset ulimit umask unalias unset
wait
) ],
},
zsh => {
name => 'Z shell',
metachars => [ qw{ ; & ( ) | < > } ],
keywords => [ qw(
! { } [[ case coproc do done elif else end esac fi for foreach
function if in nocorrect repeat select then time until while
) ],
builtins => [ qw(
: . [ alias autoload bg bindkey break builtin bye cap cd chdir
clone command comparguments compcall compctl compdescribe compfiles
( run in 1.464 second using v1.01-cache-2.11-cpan-0b5f733616e )