-
Notifications
You must be signed in to change notification settings - Fork 0
/
afd.php
93 lines (88 loc) · 3.14 KB
/
afd.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<?php
function automato ($info, $fita){
$estadoAtual = $info->initial;
//echo $estadoAtual;
$transitions = get_object_vars($info->transitions);
//var_dump($transitions[$estadoAtual]);
//var_dump($fita);
foreach ($fita as $simbolo) {
//echo $simbolo;
$transEstado = get_object_vars($transitions[$estadoAtual]);
if (array_key_exists($simbolo, $transEstado)){
$estadoAtual = $transEstado[$simbolo];
//echo $estadoAtual;
}
else{
echo '<br>';
return 'no';
}
}
//var_dump($info->final);
if (in_array($estadoAtual, $info->final)){
echo '<br>';
return "yes";
}
else{
echo '<br>';
return "no";
}
}
function le_arquivo_afd($afd_file, $words_file){
//Lendo o arquivo afd e colocando ele na variável arquivo
$arquivo = file_get_contents($afd_file);
// Não precisa editar o arquivo, ele ja le o json direto
//Decodifica o formato json e retorna um objeto
$informacao = json_decode($arquivo);
//echo 'Tipo: ' . $informacao->type . '<br>';
//echo 'Alfabeto: ';
/* foreach($informacao->alphabet as $valor){
//echo $valor;
//echo ' ';
}
//echo '<br>';
//echo 'Status: ';
foreach($informacao->states as $valor){
//echo $valor;
//echo ' ';
}
//echo '<br>';
// As trasições são listas de listas, então precisamos de 2 foreach
//echo 'Transicoes: <br>';
// Itera sobre cada estado de origem, as trasições que saem dele
foreach($informacao->transitions as $estado_origem => $transicoes){
// Itera sobre cada trasicao, sendo a chave o simbolo e o valor o estado de destino
foreach($transicoes as $simbolo => $estado_destino ){
//echo $estado_origem;
//echo ':';
//echo $simbolo;
//echo '->';
//echo $estado_destino;
//echo '<br>';
}
}
//echo 'Final: ';
foreach($informacao->final as $valor){
//echo $valor;
//echo ' ';
}
//echo '<br><br>';
*///-----------------------------------------------------------------------------
//Leondo o arquivo afd-palavras
//echo 'Palavras:<br>';
$arquivoPalavras = fopen(words_file,'r');
//Lendo o arquivo
while(!feof($arquivoPalavras)){
$linha = fgets($arquivoPalavras,1024);
//echo $linha . '<br>';
$linha = trim($linha);
$palavra = str_split($linha);
echo automato($informacao, $palavra).PHP_EOL;
//foreach ($palavra as $simbolo) {
//echo $simbolo;
//}
//echo '<br>';
}
fclose($arquivoPalavras);
//automato($informacao, $palavra)
}
?>