(List (= scope= flags=1 words=[] bindings=[('LC_ALL', {[DQ [LIT_CHARS C]]})]) (FunctionDef check_valgrind_log [] (If (Com {[LIT_OTHER "["]} {[DQ [VarSub VALGRIND]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ ]} {[LIT_OTHER "]"]}) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -f]} {[VarSub TEMPDIR] [LIT_CHARS /test.pid] [LIT_OTHER "*"]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('log', {[ComSub (Com {[LIT_CHARS ls]} {[VarSub TEMPDIR] [LIT_CHARS /test.pid] [LIT_OTHER "*"]})]})]) (If (Pipeline! (Com {[LIT_CHARS grep]} {[LIT_CHARS -q]} {[SQ ]} {[VarSub log]}) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Fail in "][VarSub NAME][LIT_CHARS " "][VarSub 1][LIT_CHARS " checking detected by Valgrind"]]}) (Com {[LIT_CHARS echo]} {[DQ [VarSub log][LIT_CHARS " Valgrind log file moved to "][VarSub TEMPDIR][LIT_CHARS /badlogs]]}) (Com {[LIT_CHARS mv]} {[VarSub log]} {[VarSub TEMPDIR] [LIT_CHARS /badlogs]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (If (Com {[LIT_CHARS grep]} {[LIT_CHARS -q]} {[SQ ]} {[VarSub log]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Memory leak in "][VarSub NAME][LIT_CHARS " "][VarSub 1][LIT_CHARS " checking detected by Valgrind"]]}) (Com {[LIT_CHARS echo]} {[DQ [VarSub log][LIT_CHARS " Valgrind log file moved to "][VarSub TEMPDIR][LIT_CHARS /badlogs]]}) (Com {[LIT_CHARS mv]} {[VarSub log]} {[VarSub TEMPDIR] [LIT_CHARS /badlogs]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[VarSub log]}) ) ) ) ) (= scope= flags=0 words=[] bindings=[('TESTDIR', {[LIT_CHARS .]})]) (= scope= flags=0 words=[] bindings=[('TEMPDIR', {[VarSub TESTDIR] [LIT_CHARS /testSubDir]})]) (= scope= flags=0 words=[] bindings=[('NAME', {[DQ [VarSub 1]]})]) (Com {[LIT_CHARS shift]}) (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -d]} {[VarSub TEMPDIR]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS mkdir]} {[VarSub TEMPDIR]}) ) (Com {[LIT_CHARS shopt]} {[LIT_CHARS -s]} {[LIT_CHARS expand_aliases]}) (Com {[LIT_CHARS alias]} {[LIT_VAR_LIKE "hunspell="] [SQ ] =}) (Com {[LIT_CHARS alias]} {[LIT_VAR_LIKE "analyze="] [SQ ] =}) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub VALGRIND]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ ]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[VarSub TEMPDIR] [LIT_CHARS /test.pid] [LIT_OTHER "*"]}) (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -d]} {[VarSub TEMPDIR] [LIT_CHARS /badlogs]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS mkdir]} {[VarSub TEMPDIR] [LIT_CHARS /badlogs]}) ) (Com {[LIT_CHARS alias]} {[LIT_VAR_LIKE "hunspell="] [SQ ] =}) (Com {[LIT_CHARS alias]} {[LIT_VAR_LIKE "analyze="] [SQ ] =}) ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[VarSub TESTDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .good]}) (List (Com {[LIT_CHARS hunspell]} {[LIT_CHARS -l]} {[VarSub *]} {[LIT_CHARS -d]} {[VarSub TESTDIR] [LIT_CHARS /] [VarSub NAME]} < (FilenameRedirectNode filename={[VarSub TESTDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .good]} 0), (FilenameRedirectNode filename={[VarSub TEMPDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .good]} "> 1), > ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -s]} {[VarSub TEMPDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .good]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "============================================="]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Fail in "][VarSub NAME][LIT_CHARS ".good. Good words recognised as wrong:"]]}) (Com {[LIT_CHARS cat]} {[VarSub TEMPDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .good]}) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[VarSub TEMPDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .good]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[VarSub TEMPDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .good]}) ) ) (Com {[LIT_CHARS check_valgrind_log]} {[DQ [LIT_CHARS "good words"]]}) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[VarSub TESTDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .wrong]}) (List (Com {[LIT_CHARS hunspell]} {[LIT_CHARS -l]} {[VarSub *]} {[LIT_CHARS -d]} {[VarSub TESTDIR] [LIT_CHARS /] [VarSub NAME]} < (FilenameRedirectNode filename={[VarSub TESTDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .wrong]} 0), (FilenameRedirectNode filename={[VarSub TEMPDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .wrong]} "> 1), > ) (Com {[LIT_CHARS tr]} {[LIT_CHARS -d]} {[SQ ]} < (FilenameRedirectNode filename={[VarSub TESTDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .wrong]} 0), (FilenameRedirectNode filename={[VarSub TEMPDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .wrong.detab]} "> 1), > ) (If (Pipeline! (Com {[LIT_CHARS cmp]} {[VarSub TEMPDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .wrong]} {[VarSub TEMPDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .wrong.detab]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "============================================="]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Fail in "][VarSub NAME][LIT_CHARS ".wrong. Bad words recognised as good:"]]}) (Com {[LIT_CHARS tr]} {[LIT_CHARS -d]} {[SQ ]} < (FilenameRedirectNode filename={[VarSub TESTDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .wrong]} 0), (FilenameRedirectNode filename={[VarSub TEMPDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .wrong.detab]} "> 1), > ) (Pipeline (Com {[LIT_CHARS diff]} {[VarSub TEMPDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .wrong.detab]} {[VarSub TEMPDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .wrong]}) (Com {[LIT_CHARS grep]} {[SQ ]}) (Com {[LIT_CHARS sed]} {[SQ ]}) ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[VarSub TEMPDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .wrong]} {[VarSub TEMPDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .wrong.detab]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[VarSub TEMPDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .wrong]} {[VarSub TEMPDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .wrong.detab]}) ) ) (Com {[LIT_CHARS check_valgrind_log]} {[DQ [LIT_CHARS "bad words"]]}) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[VarSub TESTDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .morph]}) (List (Com {[LIT_CHARS sed]} {[SQ ]} {[VarSub TESTDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .good]} < (FilenameRedirectNode filename={[VarSub TEMPDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .good]} "> 1), > ) (Com {[LIT_CHARS analyze]} {[VarSub TESTDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .aff]} {[VarSub TESTDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .dic]} {[VarSub TEMPDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .good]} < (FilenameRedirectNode filename={[VarSub TEMPDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .morph]} "> 1), > ) (If (Pipeline! (Com {[LIT_CHARS cmp]} {[VarSub TEMPDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .morph]} {[VarSub TESTDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .morph]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "============================================="]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Fail in "][VarSub NAME][LIT_CHARS ".morph. Bad analysis?"]]}) (Pipeline (Com {[LIT_CHARS diff]} {[VarSub TESTDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .morph]} {[VarSub TEMPDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .morph]}) (Com {[LIT_CHARS grep]} {[SQ ]}) (Com {[LIT_CHARS sed]} {[SQ ]}) ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[VarSub TEMPDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .morph]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[VarSub TEMPDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .] [LIT_LBRACE "{"] [LIT_CHARS morph] [LIT_COMMA ","] [LIT_CHARS good] [LIT_RBRACE "}"]}) ) ) (Com {[LIT_CHARS check_valgrind_log]} {[DQ [LIT_CHARS "morphological analysis"]]}) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[VarSub TESTDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .sug]}) (List (Pipeline (Com {[LIT_CHARS hunspell]} {[VarSub *]} {[LIT_CHARS -a]} {[LIT_CHARS -d]} {[VarSub TESTDIR] [LIT_CHARS /] [VarSub NAME]} < (FilenameRedirectNode filename={[VarSub TESTDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .wrong]} 0), > ) (Com {[LIT_CHARS grep]} {[SQ ]}) (Com {[LIT_CHARS sed]} {[SQ ]} < (FilenameRedirectNode filename={[VarSub TEMPDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .sug]} "> 1), > ) ) (If (Pipeline! (Com {[LIT_CHARS cmp]} {[VarSub TEMPDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .sug]} {[VarSub TESTDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .sug]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "============================================="]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Fail in "][VarSub NAME][LIT_CHARS ".sug. Bad suggestion?"]]}) (Com {[LIT_CHARS diff]} {[VarSub TESTDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .sug]} {[VarSub TEMPDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .sug]}) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[VarSub TEMPDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .sug]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[VarSub TEMPDIR] [LIT_CHARS /] [VarSub NAME] [LIT_CHARS .sug]}) ) ) (Com {[LIT_CHARS check_valgrind_log]} {[DQ [LIT_CHARS suggestion]]}) )