(command.CommandList children: [ (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-o>} {<nounset>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-o>} {<pipefail>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-o>} {<errexit>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <source> more_env: [] words: [{<source>} {<'test/common.sh'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <source> more_env: [] words: [{<source>} {<'benchmarks/common.sh'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <readonly> more_env: [] words: [{<readonly>} {<Id.Lit_VarLike 'BASE_DIR='> <'_tmp/osh-parser'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <readonly> more_env: [] words: [ {<readonly>} {<Id.Lit_VarLike 'SORTED='> ($ Id.VSub_DollarName BASE_DIR) <'/tmp/sorted.txt'>} ] redirects: [] do_fork: T ) (command.ShFunction name_tok: <write-sorted-manifest> name: write-sorted-manifest body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'files='> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 1> var_name: 1 suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {<benchmarks> <Id.Lit_Slash '/'> <osh-parser-files.txt>} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'counts='> ($ Id.VSub_DollarName BASE_DIR) <'/tmp/line-counts.txt'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'csv_out='> ($ Id.VSub_Number 2)}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-v>} {(SQ <'^#'>)} {($ Id.VSub_DollarName files)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <xargs> more_env: [] words: [{<xargs>} {<wc>} {<-l>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-n>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName counts)} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {($ Id.VSub_DollarName counts)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <awk> more_env: [] words: [{<awk>} {(SQ <'$2 != "total" { print $2 }'>)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName SORTED)} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {($ Id.VSub_DollarName counts)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <awk> more_env: [] words: [ {<awk>} { (SQ <'\n'> <' BEGIN { print "num_lines,path" }\n'> <' $2 != "total" { print $1 "," $2 }'> ) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName csv_out)} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <parser-task> name: parser-task body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'raw_dir='> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'job_id='> ($ Id.VSub_Number 2)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'host='> ($ Id.VSub_Number 3)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'host_hash='> ($ Id.VSub_Number 4)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'sh_path='> ($ Id.VSub_Number 5)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'shell_hash='> ($ Id.VSub_Number 6)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'script_path='> ($ Id.VSub_Number 7)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'--- '> ($ Id.VSub_DollarName sh_path) <' '> ($ Id.VSub_DollarName script_path) <' ---'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'times_out='> (DQ ($ Id.VSub_DollarName raw_dir) <'/'> ($ Id.VSub_DollarName host) <.> ($ Id.VSub_DollarName job_id) <.times.csv> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'vm_out_dir='> (DQ ($ Id.VSub_DollarName raw_dir) <'/'> ($ Id.VSub_DollarName host) <.> ($ Id.VSub_DollarName job_id) <.virtual-memory> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {<-p>} {($ Id.VSub_DollarName vm_out_dir)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<shell_name>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'shell_name='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'shell_name='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'shell_name='> name:shell_name) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <basename> more_env: [] words: [{<basename>} {($ Id.VSub_DollarName sh_path)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'extra_args='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'extra_args='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'extra_args='> name:extra_args) op: assign_op.Equal rhs: {(SQ )} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {(DQ ($ Id.VSub_DollarName shell_name))} {<Id.Lit_Equals '='>} {(SQ <osh>)} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<script_name>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<vm_out_path>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'script_name='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'script_name='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'script_name='> name: script_name ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <basename> more_env: [] words: [{<basename>} {($ Id.VSub_DollarName script_path)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'vm_out_path='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'vm_out_path='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'vm_out_path='> name: vm_out_path ) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name vm_out_dir) <'/'> (${ Id.VSub_Name shell_name) <-> (${ Id.VSub_Name shell_hash) <__> (${ Id.VSub_Name script_name) <.txt> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'extra_args='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'extra_args='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'extra_args='> name:extra_args) op: assign_op.Equal rhs: { (DQ <'--ast-format none --parser-mem-dump '> ($ Id.VSub_DollarName vm_out_path) ) } ) ] redirects: [] ) ] spids: [313 328] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <'benchmarks/time.py'> more_env: [] words: [ {<'benchmarks/time.py'>} {<--output>} {($ Id.VSub_DollarName times_out)} {<--field>} {(DQ ($ Id.VSub_DollarName host))} {<--field>} {(DQ ($ Id.VSub_DollarName host_hash))} {<--field>} {(DQ ($ Id.VSub_DollarName shell_name))} {<--field>} {(DQ ($ Id.VSub_DollarName shell_hash))} {<--field>} {(DQ ($ Id.VSub_DollarName script_path))} {<-->} {(DQ ($ Id.VSub_DollarName sh_path))} {<-n>} {($ Id.VSub_DollarName extra_args)} {(DQ ($ Id.VSub_DollarName script_path))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<FAILED>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <print-tasks> name: print-tasks body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'provenance='> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {($ Id.VSub_DollarName provenance)}] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<fields>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Pipeline children: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {($ Id.VSub_DollarName sorted)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <xargs> more_env: [] words: [ {<xargs>} {<-n>} {<1>} {<-->} {<echo>} {($ Id.VSub_DollarName fields)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] ops: [<Id.Op_Pipe _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <readonly> more_env: [] words: [ {<readonly>} {<Id.Lit_VarLike 'HEADER='> (SQ <'status,elapsed_secs,host_name,host_hash,shell_name,shell_hash,path'>) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <readonly> more_env: [] words: [{<readonly>} {<Id.Lit_VarLike 'NUM_COLUMNS='> <6>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <measure> name: measure body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'provenance='> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'raw_dir='> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 2> var_name: 2 suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {($ Id.VSub_DollarName BASE_DIR) <Id.Lit_Slash '/'> <raw>} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'name='> (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <basename> more_env: [] words: [{<basename>} {($ Id.VSub_DollarName provenance)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'prefix='> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name name> var_name: name suffix_op: (suffix_op.Unary op:<Id.VOp1_Percent '%'> arg_word:{<.provenance.txt>}) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'times_out='> (DQ ($ Id.VSub_DollarName raw_dir) <'/'> ($ Id.VSub_DollarName prefix) <.times.csv>) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'lines_out='> (DQ ($ Id.VSub_DollarName raw_dir) <'/'> ($ Id.VSub_DollarName prefix) <.lines.csv>) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <mkdir> more_env: [] words: [ {<mkdir>} {<-p>} (word.BracedTree parts: [ ($ Id.VSub_DollarName BASE_DIR) <'/'> (word_part.BracedTuple words:[{<tmp>} {<raw>} {<stage1>}]) ] ) {($ Id.VSub_DollarName raw_dir)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <write-sorted-manifest> more_env: [] words: [{<write-sorted-manifest>} {(SQ )} {($ Id.VSub_DollarName lines_out)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'sorted='> ($ Id.VSub_DollarName SORTED)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName HEADER)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName times_out)} ) ] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'tasks='> ($ Id.VSub_DollarName BASE_DIR) <'/tasks.txt'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <print-tasks> more_env: [] words: [{<print-tasks>} {($ Id.VSub_DollarName provenance)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName tasks)} ) ] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {($ Id.VSub_DollarName tasks)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <xargs> more_env: [] words: [ {<xargs>} {<-n>} {($ Id.VSub_DollarName NUM_COLUMNS)} {<-->} {($ Id.VSub_Number 0)} {<parser-task>} {($ Id.VSub_DollarName raw_dir)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Simple blame_tok: <cp> more_env: [] words: [{<cp>} {<-v>} {($ Id.VSub_DollarName provenance)} {($ Id.VSub_DollarName raw_dir)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <fake-other-host> name: fake-other-host body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'dir='> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 1> var_name: 1 suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {<_tmp> <Id.Lit_Slash '/'> <osh-parser> <Id.Lit_Slash '/'> <raw>} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [entry] iterable: (for_iter.Words words: [{($ Id.VSub_DollarName dir) <'/lisa'> <Id.Lit_Star '*'>}] ) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'fake='> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name entry> var_name: entry suffix_op: (suffix_op.PatSub pat: {<lisa>} replace: {<flanders>} replace_mode: Id.Undefined_Tok slash_tok: <Id.VOp2_Slash _> ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <mv> more_env: [] words: [{<mv>} {<-v>} {($ Id.VSub_DollarName entry)} {($ Id.VSub_DollarName fake)}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {($ Id.VSub_DollarName fake)}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-i>} {(SQ <'s/lisa/flanders/g'>)} {($ Id.VSub_DollarName fake)} ] redirects: [] do_fork: T ) ] spids: [807 816] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <stage1> name: stage1 body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'raw_dir='> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 1> var_name: 1 suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {($ Id.VSub_DollarName BASE_DIR) <Id.Lit_Slash '/'> <raw>} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'out='> ($ Id.VSub_DollarName BASE_DIR) <'/stage1'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {<-p>} {($ Id.VSub_DollarName out)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'vm_csv='> ($ Id.VSub_DollarName out) <'/virtual-memory.csv'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<-a>} {<Id.Lit_VarLike 'x='> (ShArrayLiteral left: <Id.Op_LParen _> words: [ {($ Id.VSub_DollarName raw_dir) <'/flanders.'> <Id.Lit_Star '*'> <.virtual-memory> } ] right: <Id.Right_ShArrayLiteral _> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<-a>} {<Id.Lit_VarLike 'y='> (ShArrayLiteral left: <Id.Op_LParen _> words: [ {($ Id.VSub_DollarName raw_dir) <'/lisa.'> <Id.Lit_Star '*'> <.virtual-memory>} ] right: <Id.Right_ShArrayLiteral _> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <'benchmarks/virtual_memory.py'> more_env: [] words: [ {<'benchmarks/virtual_memory.py'>} {<osh-parser>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name x> var_name: x bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id:Id.Node_UnaryMinus child:{<Id.Lit_Digits 1>}) ) right: <Id.Right_DollarBrace '}'> ) } { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name y> var_name: y bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id:Id.Node_UnaryMinus child:{<Id.Lit_Digits 1>}) ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName vm_csv)} ) ] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'times_csv='> ($ Id.VSub_DollarName out) <'/times.csv'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<-a>} {<Id.Lit_VarLike 'a='> (ShArrayLiteral left: <Id.Op_LParen _> words: [ {($ Id.VSub_DollarName raw_dir) <'/flanders.'> <Id.Lit_Star '*'> <.times.csv>} ] right: <Id.Right_ShArrayLiteral _> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<-a>} {<Id.Lit_VarLike 'b='> (ShArrayLiteral left: <Id.Op_LParen _> words: [{($ Id.VSub_DollarName raw_dir) <'/lisa.'> <Id.Lit_Star '*'> <.times.csv>}] right: <Id.Right_ShArrayLiteral _> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <csv-concat> more_env: [] words: [ {<csv-concat>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name a> var_name: a bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id:Id.Node_UnaryMinus child:{<Id.Lit_Digits 1>}) ) right: <Id.Right_DollarBrace '}'> ) } { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name b> var_name: b bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id:Id.Node_UnaryMinus child:{<Id.Lit_Digits 1>}) ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName times_csv)} ) ] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'raw_data_csv='> ($ Id.VSub_DollarName out) <'/raw-data.csv'>} ] redirects: [] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <path>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name a> var_name: a bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id:Id.Node_UnaryMinus child:{<Id.Lit_Digits 1>}) ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name b> var_name: b bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id:Id.Node_UnaryMinus child:{<Id.Lit_Digits 1>}) ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName raw_data_csv)} ) ] right: <Id.Lit_RBrace '}'> ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'lines_csv='> ($ Id.VSub_DollarName out) <'/lines.csv'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<-a>} {<Id.Lit_VarLike 'c='> (ShArrayLiteral left: <Id.Op_LParen _> words: [ {($ Id.VSub_DollarName raw_dir) <'/flanders.'> <Id.Lit_Star '*'> <.lines.csv>} ] right: <Id.Right_ShArrayLiteral _> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<-a>} {<Id.Lit_VarLike 'd='> (ShArrayLiteral left: <Id.Op_LParen _> words: [{($ Id.VSub_DollarName raw_dir) <'/lisa.'> <Id.Lit_Star '*'> <.lines.csv>}] right: <Id.Right_ShArrayLiteral _> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'left='> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name c> var_name: c bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id:Id.Node_UnaryMinus child:{<Id.Lit_Digits 1>}) ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'right='> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name d> var_name: d bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Unary op_id:Id.Node_UnaryMinus child:{<Id.Lit_Digits 1>}) ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <diff> more_env: [] words: [ {<diff>} {($ Id.VSub_DollarName left)} {($ Id.VSub_DollarName right)} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <die> more_env: [] words: [ {<die>} { (DQ <'Benchmarks were run on different files ('> ($ Id.VSub_DollarName left) <' != '> ($ Id.VSub_DollarName right) <')'> ) } ] redirects: [] do_fork: T ) ] spids: [1116 1127] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {($ Id.VSub_DollarName left)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName lines_csv)} ) ] do_fork: T ) (command.Simple blame_tok: <head> more_env: [] words: [{<head>} {($ Id.VSub_DollarName out) <'/'> <Id.Lit_Star '*'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-l>} {($ Id.VSub_DollarName out) <'/'> <Id.Lit_Star '*'>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <print-report> name: print-report body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'in_dir='> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'base_url='> (SQ <'../../web'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [ <'<!DOCTYPE html>\n'> <'<html>\n'> <' <head>\n'> <' <title>OSH Parser Performance</title>\n'> <' <script type='> <Id.Right_DoubleQuote '"'> <'text/javascript'> <Id.Right_DoubleQuote '"'> <' src='> <Id.Right_DoubleQuote '"'> ($ Id.VSub_DollarName base_url) <'/table/table-sort.js'> <Id.Right_DoubleQuote '"'> <'></script>\n'> <' <link rel='> <Id.Right_DoubleQuote '"'> <stylesheet> <Id.Right_DoubleQuote '"'> <' type='> <Id.Right_DoubleQuote '"'> <'text/css'> <Id.Right_DoubleQuote '"'> <' href='> <Id.Right_DoubleQuote '"'> ($ Id.VSub_DollarName base_url) <'/table/table-sort.css'> <Id.Right_DoubleQuote '"'> <' />\n'> <' <link rel='> <Id.Right_DoubleQuote '"'> <stylesheet> <Id.Right_DoubleQuote '"'> <' type='> <Id.Right_DoubleQuote '"'> <'text/css'> <Id.Right_DoubleQuote '"'> <' href='> <Id.Right_DoubleQuote '"'> ($ Id.VSub_DollarName base_url) <'/benchmarks.css'> <Id.Right_DoubleQuote '"'> <' />\n'> <'\n'> <' </head>\n'> <' <body>\n'> <' <p id='> <Id.Right_DoubleQuote '"'> <home-link> <Id.Right_DoubleQuote '"'> <'>\n'> <' <a href='> <Id.Right_DoubleQuote '"'> <'/'> <Id.Right_DoubleQuote '"'> <'>oilshell.org</a>\n'> <' </p>\n'> <' <h2>OSH Parser Performance</h2>\n'> <'\n'> <' <p>We run <code>'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'sh -n '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'file</code> for various files under various\n'> <' shells. This means that shell startup time is included in the\n'> < ' elapsed time measurements, but long files are chosen to minimize its\n' > <' effect.</p>\n'> <'\n'> <' <h3>Parse Time Summary</h3>\n'> ] ) ) ] do_fork: T ) (command.Simple blame_tok: <csv2html> more_env: [] words: [{<csv2html>} {($ Id.VSub_DollarName in_dir) <'/summary.csv'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [ <' <h3>Memory Used to Parse</h3>\n'> <'\n'> < ' <p>Running under <code>osh-ovm</code>. Memory usage is measured in MB\n' > <' (powers of 10), not MiB (powers of 2).</p>\n'> ] ) ) ] do_fork: T ) (command.Simple blame_tok: <csv2html> more_env: [] words: [{<csv2html>} {($ Id.VSub_DollarName in_dir) <'/virtual-memory.csv'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [<'\n'> <' <h3>Shell and Host Details</h3>\n'>] ) ) ] do_fork: T ) (command.Simple blame_tok: <csv2html> more_env: [] words: [{<csv2html>} {($ Id.VSub_DollarName in_dir) <'/shells.csv'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <csv2html> more_env: [] words: [{<csv2html>} {($ Id.VSub_DollarName in_dir) <'/hosts.csv'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [<' <h3>Raw Data</h3>\n'>] ) ) ] do_fork: T ) (command.Simple blame_tok: <csv2html> more_env: [] words: [{<csv2html>} {($ Id.VSub_DollarName in_dir) <'/raw-data.csv'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [ <' <h3>Parse Time Breakdown by File</h3>\n'> <'\n'> <' <h4>Elasped Time in milliseconds</h4>\n'> ] ) ) ] do_fork: T ) (command.Simple blame_tok: <csv2html> more_env: [] words: [{<csv2html>} {($ Id.VSub_DollarName in_dir) <'/elapsed.csv'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [<'\n'> <' <h4>Parsing Rate in lines/millisecond</h4>\n'>] ) ) ] do_fork: T ) (command.Simple blame_tok: <csv2html> more_env: [] words: [{<csv2html>} {($ Id.VSub_DollarName in_dir) <'/rate.csv'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [<' </body>\n'> <'</html>\n'>] ) ) ] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <time-test> name: time-test body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <'benchmarks/time.py'> more_env: [] words: [ {<'benchmarks/time.py'>} {<--field>} {<bash>} {<--field>} {<foo.txt>} {<--output>} {<'_tmp/bench.csv'>} {<sleep>} {<0.123>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {<'_tmp/bench.csv'>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <Id.Left_DoubleQuote '"'> more_env: [] words: [{(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) ] )