#bash #interpreter #subset #compiler

app srash

Bash解释器/编译器。可能不会支持所有功能。

1 个不稳定版本

0.0.0 2023年3月22日

#59 in #subset

MIT 许可证

37KB
880

Irsh

描述

类似Bash的解释器,可能也是编译器?设计为用于具有最小依赖的交互式shell,可能不会支持所有Bash语法。

特性

  • 支持独特的bash变量/函数声明语法
  • 始终假设在$之后有一个{,并且括号/括号正确关闭
  • 忽略由于未关闭的块/引号而产生的边缘情况,并崩溃以实现更简单(更快?)的实现
  • 没有默认值的函数/程序参数被认为是强制性的
  • 只有一级子命令
  • 子命令只能在双引号字符串的开头使用
  • 子命令仅限于变量/单词和重定向符号
  • 不支持嵌套引号
  • 不支持(目前?)多行字符串
  • 声明变量时,值必须加引号

限制

  • 可能在某些边缘情况下失败
  • 仅实现&>&重定向
  • 仅支持${alphanum},不支持$@或$*或其他任何形式
  • 如果子命令未关闭,则会产生无限循环
  • 如果$()没有"",则会产生无限循环

目标

  • 解析具有作用域和默认值的bash变量
  • 通过function关键字解析bash函数
  • 支持外部命令的调用
  • 实现基本bash功能的一个子集
  • 支持stdout/err重定向

无运行时依赖