1 | # Types that don't depend on Id. (To break dependency)
|
2 |
|
3 | module types {
|
4 | bool_arg_type = Undefined | Path | Int | Str | Other
|
5 | redir_arg_type = Path | Desc | Here
|
6 |
|
7 | opt_group = StrictAll | YshUpgrade | YshAll
|
8 | generate [integers]
|
9 |
|
10 | # Fifteen lexer modes for OSH
|
11 |
|
12 | lex_mode =
|
13 | Undefined
|
14 | | Comment
|
15 |
|
16 | | ShCommand
|
17 | | ShCommandBrack # pseudo lexer mode for lazy arg list
|
18 |
|
19 | | Backtick # preprocessing before Outer
|
20 | | DBracket
|
21 |
|
22 | | SQ_Raw | DQ | SQ_C | J8_Str
|
23 |
|
24 | | Arith
|
25 | | ExtGlob
|
26 | | VSub_1 | VSub_2 | VSub_ArgUnquoted | VSub_ArgDQ
|
27 | | BashRegex | BashRegexChars
|
28 | | FuncParens # for Id.LookAhead_FuncParens
|
29 |
|
30 | # Two for printf builtin
|
31 | | PrintfOuter | PrintfPercent
|
32 |
|
33 | # YSH/eggex both use Expr
|
34 | | Expr # var x = 1 + 2 * 3; echo $f(a, b + 1)
|
35 |
|
36 | # Unused. TODO: consider this representation
|
37 | word_mode =
|
38 | ShCommand # These three correspond to lex_mode
|
39 | | ShCommandBrack # for lazy arg list assert [42 === x]
|
40 |
|
41 | | DBracket
|
42 | | BashRegex
|
43 |
|
44 |
|
45 | # More possibilities
|
46 | # - printf formatting ${x %05d}. I think that is mostly in expression mode
|
47 | # like ${x|html} or ${x|title}
|
48 |
|
49 | # CommandParser context
|
50 | # Note: cmd_mode_e.Hay is better done with CommandParser.hay_attrs_stack,
|
51 | # which is nested
|
52 | cmd_mode =
|
53 | Shell # Top level, and inside shell-style functions
|
54 | | Func # Inside a func, return (x) is required
|
55 | | Proc # Inside proc { } -- shell assignments are disallowed
|
56 | }
|