RanK online demonstrator

[Download RanK] [Benchmarks] [Help]

User input

Enter your program:

OR choose an example:
Input: Integer interpreted automaton (.fst format)
C program (*)
Options: Compute worst-case computational complexity (WCCC)
Require non-negativity on cut-points only (may simplify the ranking function)
Show transitions resolved for each dimension

--- inputs/program.c|fst */ if($_POST['example'] != "(analyze my program)") { //preexisting example? $ourFileName = "input/".$_POST['example']; $ourFileHandle = fopen($ourFileName, 'w') or die("can't open file"); fwrite($ourFileHandle, $loaded_program); } else { //program entered by the user? if($_POST['input_type'] == "c_program") $ourFileName = "input/main.c"; else $ourFileName = "input/main_with_cr.fst"; $ourFileHandle = fopen($ourFileName, 'w') or die("can't open file"); fwrite($ourFileHandle, $_POST['program']); if($_POST['input_type'] != "c_program") //.fst? => convert it in the right format for aspic { $ourFileName = "input/main.fst"; exec("sed -e 's/\r//' /var/www/rank/input/main_with_cr.fst > /var/www/rank/input/main.fst",$result); } } fclose($ourFileHandle); /* * Save Text edit zone --> inputs/last_text_edit.txt */ $ourFileHandle = fopen("input/last_text_edit.txt", 'w') or die("can't open last_text_edit.txt"); fwrite($ourFileHandle, $_POST['program']); fclose($ourFileHandle); /* * Run the tool */ if($_POST['input_type'] == "c_program") { //Step 1: C2FSM exec("echo \"*****************\" >>/var/www/rank/input/errors",$result); exec("echo \"C2Fsm\" >/var/www/rank/input/errors",$result); //1a) Produce the pdf file exec("(cd /var/www/rank/input; /home/chris/rank/C2Fsm/bin/c2fsm /var/www/rank/".$ourFileName." -dot -cut -nodiv -int)",$result); //1b) Produce the .fst file exec("(cd /var/www/rank/input; /home/chris/rank/C2Fsm/bin/c2fsm /var/www/rank/".$ourFileName." -fst -cut -nodiv -int 2>>/var/www/rank/input/errors >>/var/www/rank/input/errors)",$result); //2) Run Aspic exec("echo \"*****************\" >>/var/www/rank/input/errors",$result); exec("echo \"Aspic\" >>/var/www/rank/input/errors",$result); $fst_file=str_replace(".c",".fst",$ourFileName); exec("(cd /var/www/rank/input; /home/chris/rank/aspic64 -ranking -delay 1 /var/www/rank/".$fst_file." 2>>/var/www/rank/input/errors)",$result); //3) Run RanK exec("echo \"*****************\" >>/var/www/rank/input/errors",$result); exec("echo \"RanK\" >>/var/www/rank/input/errors",$result); //3a) Collect the options $rank_options = ""; if(isset($_POST['option_wcet'])) $rank_options = $rank_options."-wcet "; if(isset($_POST['option_cut'])) $rank_options = $rank_options."-cut "; if(isset($_POST['option_transitions'])) $rank_options = $rank_options."-t "; $fstb_file=str_replace(".c",".fstb",$ourFileName); //3b) Launch rank exec("(cd /var/www/rank/input; timeout -k 30 30 /home/chris/rank/rank ".$rank_options."/var/www/rank/".$fstb_file." >/var/www/rank/input/result 2>>/var/www/rank/input/errors)",$result); } else { // // Input = .fst automaton (copy/paste without c2fsm) // $fst_file=$ourFileName; //1) Run Aspic exec("echo \"*****************\" >>/var/www/rank/input/errors",$result); exec("echo \"Aspic\" >>/var/www/rank/input/errors",$result); exec("(cd /var/www/rank/input; timeout -k 30 30 /home/chris/rank/aspic64 -ranking -delay 1 /var/www/rank/".$fst_file." 2>>/var/www/rank/input/errors)",$result); //2) Run RanK exec("echo \"*****************\" >>/var/www/rank/input/errors",$result); exec("echo \"RanK\" >>/var/www/rank/input/errors",$result); //2a) Collect the options $rank_options = ""; if(isset($_POST['option_wcet'])) $rank_options = $rank_options."-wcet "; if(isset($_POST['option_cut'])) $rank_options = $rank_options."-cut "; if(isset($_POST['option_transitions'])) $rank_options = $rank_options."-t "; $fstb_file=str_replace(".fst",".fstb",$ourFileName); //2b) Launch rank exec("(cd /var/www/rank/input; timeout -k 30 30 /home/chris/rank/rank ".$rank_options."/var/www/rank/".$fstb_file." >/var/www/rank/input/result 2>>/var/www/rank/input/errors)",$result); } /* * Write the result on the web page */ if($_POST['input_type'] == "c_program") { $pdf_file=str_replace(".c",".pdf",$ourFileName); $pdf_up_file=str_replace("input/","",$pdf_file); } $fst_up_file=str_replace("input/","",$fst_file); $fstb_up_file=str_replace("input/","",$fstb_file); exec("cp /var/www/rank/".$fst_file." /var/www/rank/"); exec("cp /var/www/rank/".$fstb_file." /var/www/rank/"); exec("cp /var/www/rank/".$pdf_file." /var/www/rank/"); //Display the result (if exists) echo "

Result report

"; if($_POST['input_type'] == "c_program") { //add a link to the .pdf file echo "

C2Fsm report

"; echo "Integer interpreted automaton [.pdf,"; echo ".fst]"; } echo "

Aspic report

"; echo "Linear relation analysis [.fstb]"; echo "

RanK report

"; $lines_result = file("/var/www/rank/input/result"); foreach ($lines_result as $line_num => $line) { echo htmlspecialchars($line) . "
\n"; } //Display the errors echo "

Errors and warnings

"; $lines = file("/var/www/rank/input/errors"); foreach ($lines as $line_num => $line) { echo htmlspecialchars($line) . "
\n"; } //Display the shell output (optional) /* echo "

Console

"; foreach ($result as $i => $value) { echo $result[$i] . ".
"; } */ //Delete tool's outputs exec("rm /var/www/rank/input/errors"); exec("rm /var/www/rank/input/result"); exec("rm /var/www/rank/".$outFileName); exec("rm /var/www/rank/".$fst_file); exec("rm /var/www/rank/".$pdf_file); exec("rm /var/www/rank/".$fstb_file); ?>