sys

A set of unix utils in hare!
Log | Files | Refs | README

spec (1701B)


      1 rcsh - the "really cool shell"
      2 
      3 BNF:
      4 
      5 prog 	: imports fns exprs
      6 
      7 imports	: import imports
      8 	| import
      9 
     10 import	: "import" NAME
     11 
     12 fns	: fn fns
     13 	| fn
     14 
     15 fn	: "func" NAME(args) '{' exprs '}'
     16 
     17 args	: arg ',' args
     18 	| arg
     19 
     20 arg	: NAME
     21 
     22 exprs	: expr exprs
     23 	| expr
     24 
     25 expr	: fcall
     26 	| try '{' exprs '}' catch '{' exprs '}'
     27 	| "throw" except
     28 	| value '>' '{' exprs '}'	// makes exprs stdin NAME
     29 	| value '<' '{' exprs '}'	// makes exprs stdout NAME 
     30 	| value '<' '<' '{' exprs '}'	// makes exprs stdout NAME (append)
     31 	| value '<>' '{' exprs '}'	// makes exprs stdin and stdout NAME
     32 	| expr | value
     33 	| expr > value
     34 	| expr < value
     35 	| expr >> value
     36 	| NAME '=' value
     37 	| cd value
     38 
     39 
     40 value	: '$' NAME
     41 	| STRING
     42 	| $(expr)			// makes stdout the value
     43 	| fcall
     44 
     45 fcall	: NAME '(' values ')'
     46 
     47 values	: value, values
     48 	| value
     49 
     50 except	: EPERM	| ENOENT | ESRCH | EINTR | EIO | ENXIO | E2BIG | ENOEXEC | EBADF | ECHILD | EAGAIN | ENOMEM | EACCES | EFAULT | ENOTBLK | EBUSY | EEXIST | EXDEV | ENODEV | ENOTDIR | EISDIR | EINVAL | ENFILE | EMFILE | ENOTTY | ETXTBSY | EFBIG | ENOSPC | ESPIPE | EROFS | EMLINK | EPIPE | EDOM | ERANGE | EDEADLK | ENAMETOOLONG | ENOLCK | ENOSYS | ENOTEMPTY | ELOOP | ENOMSG | EIDRM | ECHRNG | EL2NSYNC | EL3HLT | EL3RST | ELNRNG | EUNATCH | ENOCSI | EL2HLT | EBADE | EBADR | EXFULL | ENOANO | EBADRQC | EBADSLT | EBFONT | ENOSTR | ENODATA | ETIME | ENOSR | ENONET | ENOPKG | EREMOTE | ENOLINK | EADV | ESRMNT | ECOMM | EPROTO | EMULTIHOP | EDOTDOT | EBADMSG | EOVERFLOW | ENOTUNIQ | EBADFD | EREMCHG | ELIBACC | ELIBBAD | ELIBSCN | ELIBMAX | ELIBEXEC | EILSEQ | ERESTART | ESTRPIPE | EUSERS | ENOTSOCK | EDESTADDRREQ | EMSGSIZE | EPROTOTYPE | ENOPROTOOPT | EPROTONOSUPPORT | ESOCKTNOSUPPORT | EOPNOTSUPP