Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
fja
eval
Commits
d330782a
Commit
d330782a
authored
Mar 24, 2022
by
Vladimír Štill
Browse files
evalweb: Avoid error 500 for automata with unreachable states,
#16
parent
a3712875
Pipeline
#122021
passed with stage
in 1 minute and 27 seconds
Changes
3
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
evalweb/evalweb.py
View file @
d330782a
...
...
@@ -116,6 +116,7 @@ def compare() -> str:
alphabets
=
checker
.
alphabets
,
extra_word_ce
=
extra_word_ce
,
missing_word_ce
=
missing_word_ce
,
is_task_valid
=
checker
.
is_task_valid
,
is_task
=
checker
.
is_task
,
img_src
=
checker
.
img_src
,
langs
=
checker
.
languages
,
...
...
@@ -175,7 +176,7 @@ def convert() -> str:
return
render_template
(
'convert.html'
,
error
=
ex
,
**
convert_args
)
student
=
Language
(
string
=
student_string
,
task
=
student_type
)
is_task
=
student
.
gen_is_task
(
task
=
task
)
is_task_valid
,
is_task
=
student
.
gen_is_task
(
task
=
task
)
return
render_template
(
'result_convert.html'
,
compare
=
False
,
student_string
=
student_string
,
...
...
@@ -184,6 +185,7 @@ def convert() -> str:
raw_in_type
=
student_type
,
raw_out_type
=
task
,
output
=
output
,
is_task_valid
=
is_task_valid
,
is_task
=
is_task
)
if
request
.
method
==
'POST'
and
'example_button'
in
request
.
form
:
...
...
evalweb/templates/genodp.html
View file @
d330782a
{% if is_task_valid %}
<h4>
Vygenerovaný řetězec pro odpovědník
</h4>
<details>
<summary>
zobrazit/skrýt
</summary>
...
...
@@ -6,3 +7,7 @@ Zkonstruujte {{student_type_string|default(task)}}…
:e1a___
:e1a="d:?{{is_task}}"
</pre>
</details>
{% else %}
<h4>
Chyba při generování řetězce pro odpovědník
</h4>
{{is_task}}
{% endif %}
evalweb/web_checker.py
View file @
d330782a
...
...
@@ -2,7 +2,7 @@ from lib import reg, parser
from
lib.parser
import
ParsingError
from
lib.checker
import
transform
,
dfa_transform
,
nfa_transform
,
check_task
,
\
check_alphabets
from
typing
import
List
,
Optional
from
typing
import
List
,
Optional
,
Tuple
from
enum
import
Enum
import
enum
...
...
@@ -42,11 +42,14 @@ class Language: # contains information about formalism and its language
self
.
sizename
=
name
[
size
.
name
]
self
.
dfa
=
dfa
def
gen_is_task
(
self
,
task
:
str
)
->
str
:
def
gen_is_task
(
self
,
task
:
str
)
->
Tuple
[
bool
,
str
]
:
teacher
=
"NFA"
if
self
.
task
==
"EFA"
else
self
.
task
assert
self
.
dfa
is
not
None
dfa
=
parser
.
dfa_to_str
(
self
.
dfa
.
canonize
())
return
f
"
{
teacher
}
-
{
task
}
:
{
dfa
}
"
try
:
dfa
=
parser
.
dfa_to_str
(
self
.
dfa
.
canonize
())
return
True
,
f
"
{
teacher
}
-
{
task
}
:
{
dfa
}
"
except
Exception
as
ex
:
return
False
,
str
(
ex
.
args
[
0
])
class
CompositeException
(
Exception
):
...
...
@@ -64,7 +67,8 @@ class WebChecker:
self
.
eq
:
Optional
[
reg
.
IsEquivalentResult
]
=
None
self
.
teacher
:
Optional
[
Language
]
=
None
self
.
student
:
Optional
[
Language
]
=
None
self
.
is_task
:
Optional
[
str
]
=
None
self
.
is_task_valid
=
False
self
.
is_task
:
str
=
"No output!"
self
.
img_src
:
Optional
[
str
]
=
None
self
.
languages
:
List
[
Optional
[
Language
]]
=
[
None
,
None
,
None
,
None
]
...
...
@@ -88,7 +92,7 @@ class WebChecker:
self
.
teacher
=
teacher
self
.
student
=
student
self
.
is_task
=
teacher
.
gen_is_task
(
task
=
self
.
task
)
self
.
is_task_valid
,
self
.
is_task
=
teacher
.
gen_is_task
(
task
=
self
.
task
)
if
isinstance
(
student_solution
,
reg
.
DFA
)
\
or
isinstance
(
student_solution
,
reg
.
NFA
):
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment