(command.CommandList
  children: [
    (C {(Id.KW_Set set)} {(-o)} {(nounset)})
    (C {(Id.KW_Set set)} {(-o)} {(pipefail)})
    (C {(Id.KW_Set set)} {(-o)} {(errexit)})
    (C {(source)} {(build/common.sh)})
    (command.ShFunction
      name: download-re2c
      body: 
        (command.BraceGroup
          children: [
            (C {(mkdir)} {(-p)} {(_deps)})
            (C {(wget)} {(--directory)} {(_deps)} 
              {(https) (Id.Lit_Other ':') 
                (//github.com/skvadrik/re2c/releases/download/1.0.3/re2c-1.0.3.tar.gz)
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: install-re2c
      body: 
        (command.BraceGroup
          children: [
            (C {(cd)} {(_deps)})
            (command.Simple
              words: [{(tar)} {(-x)} {(-z)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Less val:'<' span_id:154)
                  fd: -1
                  arg_word: {(re2c-1.0.3.tar.gz)}
                )
              ]
            )
            (C {(cd)} {(re2c-1.0.3)})
            (C {(./configure)})
            (C {(make)})
          ]
        )
    )
    (command.ShFunction
      name: re2c
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: (C {(_deps/re2c-1.0.3/re2c)} {(DQ ($ Id.VSub_At '$@'))})
              terminator: (Token id:Id.Op_Semi val:';' span_id:183)
            )
          ]
        )
    )
    (command.ShFunction
      name: download-clang
      body: 
        (command.BraceGroup
          children: [
            (C {(wget)} {(--directory)} {(_deps)} 
              {(http) (Id.Lit_Other ':') (//releases.llvm.org/5.0.1/clang) (Id.Lit_Other '+') 
                (llvm-5.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz)
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: extract-clang
      body: 
        (command.BraceGroup
          children: [
            (C {(cd)} {(_deps)})
            (command.TimeBlock
              pipeline: 
                (command.Simple
                  words: [{(tar)} {(-x)} {(--xz)}]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Less val:'<' span_id:232)
                      fd: -1
                      arg_word: {(clang) (Id.Lit_Star '*') (.tar.xz)}
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: types-gen
      body: 
        (command.BraceGroup
          children: [
            (command.Simple
              words: [{(osh/ast_gen.py)} {(DQ ($ Id.VSub_At '$@'))}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:257)
                  fd: -1
                  arg_word: {(_devbuild/gen/osh-types.h)}
                )
              ]
              more_env: [(env_pair name:PYTHONPATH val:{(.)} spids:[248])]
            )
          ]
        )
    )
    (command.ShFunction
      name: id-gen
      body: 
        (command.BraceGroup
          children: [
            (command.Simple
              words: [{(core/id_kind_gen.py)} {(c)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:278)
                  fd: -1
                  arg_word: {(_devbuild/gen/id.h)}
                )
              ]
              more_env: [(env_pair name:PYTHONPATH val:{(.)} spids:[271])]
            )
          ]
        )
    )
    (command.ShFunction
      name: lexer-gen
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: 
                (command.Simple
                  words: [{(core/lexer_gen.py)} {(DQ ($ Id.VSub_At '$@'))}]
                  more_env: [(env_pair name:PYTHONPATH val:{(.)} spids:[291])]
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:299)
            )
          ]
        )
    )
    (command.ShFunction
      name: osh-lex-gen
      body: 
        (command.BraceGroup
          children: [
            (command.Simple
              words: [{(lexer-gen)} {(c)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:321)
                  fd: -1
                  arg_word: {(_devbuild/gen/osh-lex.re2c.h)}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: print-regex
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: (C {(lexer-gen)} {(print-regex)})
              terminator: (Token id:Id.Op_Semi val:';' span_id:337)
            )
          ]
        )
    )
    (command.ShFunction
      name: print-all
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: (C {(lexer-gen)} {(print-all)})
              terminator: (Token id:Id.Op_Semi val:';' span_id:350)
            )
          ]
        )
    )
    (command.ShFunction
      name: osh-lex-gen-native
      body: 
        (command.BraceGroup
          children: [
            (C {(re2c)} {(-W)} {(-Wno-match-empty-string)} {(-Werror)} {(-o)} {(_devbuild/gen/osh-lex.h)} 
              {(_devbuild/gen/osh-lex.re2c.h)}
            )
          ]
        )
    )
    (command.ShFunction
      name: ast-id-lex
      body: 
        (command.BraceGroup
          children: [
            (C {(mkdir)} {(-p)} {(_devbuild/gen)})
            (C {(log)} {(DQ ('-- Generating AST, IDs, and lexer in _devbuild/gen'))})
            (C {(types-gen)})
            (C {(id-gen)})
            (C {(osh-lex-gen)})
            (C {(osh-lex-gen-native)})
          ]
        )
    )
    (command.ShFunction
      name: bloaty
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: 
                (C 
                  {(word_part.TildeSub token:(Token id:Id.Lit_TildeLike val:'~' span_id:444)) 
                    (/git/other/bloaty/bloaty)
                  } {(DQ ($ Id.VSub_At '$@'))}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:450)
            )
          ]
        )
    )
    (command.ShFunction
      name: stats
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(Id.Lit_VarLike 'obj=') (_devbuild/py-ext/x86_64/fastlex.so)})
            (C {(nm)} {($ Id.VSub_DollarName '$obj')})
            (C {(echo)})
            (C {(bloaty)} {($ Id.VSub_DollarName '$obj')})
            (C {(echo)})
            (C {(bloaty)} {(-d)} {(symbols)} {($ Id.VSub_DollarName '$obj')})
            (C {(echo)})
            (C {(ls)} {(-l)} {($ Id.VSub_DollarName '$obj')})
            (C {(echo)})
          ]
        )
    )
    (command.ShFunction
      name: gen-cpp
      body: 
        (command.BraceGroup
          children: [
            (command.Simple
              words: [{(asdl/gen_cpp.py)} {(cpp)} {(osh/osh.asdl)}]
              more_env: [(env_pair name:PYTHONPATH val:{(.)} spids:[545])]
            )
          ]
        )
    )
    (C {(DQ ($ Id.VSub_At '$@'))})
  ]
)