Exemplo n.º 1
0
    die("Filupload fejlede!");
} else {
    $data = file_get_contents($_FILES["file"]["tmp_name"]);
}
//Nodes and decisions
$nodes_outer = "/(node|decision)[\\s]*([^\\s]*)[\\s]*{[\\s]*((([^\\s]*) = ([^;]+);[\\s]*)*)}/i";
$nodes_inner = "/([^\\s]*) = [\"\\(]?([^;]*?)[\"\\)]?;[\\s]*/i";
$state_labels = "/\"([^\"]*)\"/i";
$potential_outer = "/potential[\\s]*\\(([^\\s]+)( \\| ([^\\)]+))?\\)[\\s]*{[\\s]*data[\\s]*=([\\s]*[^}]+)}/i";
$potential_inner = "/[\\(]+([^\\)]+)[\\)]+/i";
$nodes = new Nodes();
//Parse nodes & decisions
preg_match_all($nodes_outer, $data, $matches, PREG_SET_ORDER);
foreach ($matches as $match) {
    $node = new Node($match[1], $match[2]);
    $nodes->addNode($node);
    preg_match_all($nodes_inner, $match[3], $settings, PREG_SET_ORDER);
    foreach ($settings as $setting) {
        if ($setting[1] == 'states') {
            preg_match_all($state_labels, $setting[2], $states, PREG_SET_ORDER);
            foreach ($states as $state) {
                $node->addState($state[1]);
            }
            break;
        }
    }
}
//Parse potentials
preg_match_all($potential_outer, $data, $matches, PREG_SET_ORDER);
foreach ($matches as $match) {
    $node = $nodes->findNode($match[1]);