(command.CommandList
  children: [
    (C {<set>} {<-o>} {<nounset>})
    (C {<set>} {<-o>} {<pipefail>})
    (C {<set>} {<-o>} {<errexit>})
    (C {<source>} {<'build/common.sh'>})
    (command.ShFunction
      name: download-re2c
      body: 
        (BraceGroup
          children: [
            (C {<mkdir>} {<-p>} {<_deps>})
            (C {<wget>} {<--directory>} {<_deps>} 
              {<https> <Id.Lit_Colon ':'> 
                <'//github.com/skvadrik/re2c/releases/download/1.0.3/re2c-1.0.3.tar.gz'>
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: install-re2c
      body: 
        (BraceGroup
          children: [
            (C {<cd>} {<_deps>})
            (command.Simple
              words: [{<tar>} {<-x>} {<-z>}]
              redirects: [
                (redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {<re2c-1.0.3.tar.gz>}
                )
              ]
              do_fork: T
            )
            (C {<cd>} {<re2c-1.0.3>})
            (C {<'./configure'>})
            (C {<make>})
          ]
        )
    )
    (command.ShFunction
      name: re2c
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: (C {<'_deps/re2c-1.0.3/re2c'>} {(DQ ($ Id.VSub_At '$@'))})
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (command.ShFunction
      name: download-clang
      body: 
        (BraceGroup
          children: [
            (C {<wget>} {<--directory>} {<_deps>} 
              {<http> <Id.Lit_Colon ':'> <'//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: 
        (BraceGroup
          children: [
            (C {<cd>} {<_deps>})
            (command.TimeBlock
              pipeline: 
                (command.Simple
                  words: [{<tar>} {<-x>} {<--xz>}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Less '<'>
                      loc: (redir_loc.Fd fd:0)
                      arg: {<clang> <Id.Lit_Star '*'> <.tar.xz>}
                    )
                  ]
                  do_fork: T
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: types-gen
      body: 
        (BraceGroup
          children: [
            (command.Simple
              words: [{<'osh/ast_gen.py'>} {(DQ ($ Id.VSub_At '$@'))}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'_devbuild/gen/osh-types.h'>}
                )
              ]
              more_env: [(env_pair name:PYTHONPATH val:{<.>} spids:[248])]
              do_fork: T
            )
          ]
        )
    )
    (command.ShFunction
      name: id-gen
      body: 
        (BraceGroup
          children: [
            (command.Simple
              words: [{<'core/id_kind_gen.py'>} {<c>}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'_devbuild/gen/id.h'>}
                )
              ]
              more_env: [(env_pair name:PYTHONPATH val:{<.>} spids:[271])]
              do_fork: T
            )
          ]
        )
    )
    (command.ShFunction
      name: lexer-gen
      body: 
        (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])]
                  do_fork: T
                )
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (command.ShFunction
      name: osh-lex-gen
      body: 
        (BraceGroup
          children: [
            (command.Simple
              words: [{<lexer-gen>} {<c>}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'_devbuild/gen/osh-lex.re2c.h'>}
                )
              ]
              do_fork: T
            )
          ]
        )
    )
    (command.ShFunction
      name: print-regex
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: (C {<lexer-gen>} {<print-regex>})
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (command.ShFunction
      name: print-all
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: (C {<lexer-gen>} {<print-all>})
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (command.ShFunction
      name: osh-lex-gen-native
      body: 
        (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: 
        (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: 
        (BraceGroup
          children: [
            (command.Sentence
              child: 
                (C {(word_part.TildeSub token:<Id.Lit_TildeLike '~'>) <'/git/other/bloaty/bloaty'>} 
                  {(DQ ($ Id.VSub_At '$@'))}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (command.ShFunction
      name: stats
      body: 
        (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: 
        (BraceGroup
          children: [
            (command.Simple
              words: [{<'asdl/gen_cpp.py'>} {<cpp>} {<'osh/osh.asdl'>}]
              more_env: [(env_pair name:PYTHONPATH val:{<.>} spids:[545])]
              do_fork: T
            )
          ]
        )
    )
    (C {(DQ ($ Id.VSub_At '$@'))})
  ]
)