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
3b77ae67
Commit
3b77ae67
authored
Jun 09, 2021
by
Vladimír Štill
Browse files
evalweb: Adapt to changes in lib
parent
e3567716
Changes
3
Hide whitespace changes
Inline
Side-by-side
evalweb/evalweb.py
View file @
3b77ae67
from
flask
import
Blueprint
,
render_template
,
request
from
flask
import
Blueprint
,
render_template
,
request
from
flask_wtf
import
FlaskForm
# type: ignore
from
flask_wtf
import
FlaskForm
# type: ignore
from
wtforms
import
RadioField
# type: ignore
from
wtforms
import
RadioField
# type: ignore
from
lib.pars
ing
import
ParsingError
from
lib.pars
er
import
ParsingError
from
evalweb.web_checker
import
WebChecker
,
Language
,
CompositeException
from
evalweb.web_checker
import
WebChecker
,
Language
,
CompositeException
from
evalweb.examples
import
examples
,
convert_examples
from
evalweb.examples
import
examples
,
convert_examples
from
typing
import
Optional
from
typing
import
Optional
...
...
evalweb/examples.py
View file @
3b77ae67
from
typing
import
Dict
,
Tuple
from
typing
import
Dict
,
Tuple
from
lib
.parsing
import
P
arser
from
lib
import
p
arser
parser
=
Parser
()
examples
:
Dict
[
Tuple
[
str
,
str
],
Tuple
[
str
,
str
]]
=
{}
examples
:
Dict
[
Tuple
[
str
,
str
],
Tuple
[
str
,
str
]]
=
{}
convert_examples
:
Dict
[
str
,
str
]
=
{}
convert_examples
:
Dict
[
str
,
str
]
=
{}
...
@@ -18,16 +17,16 @@ teacher_forms = [('DFA', teacher_dfa),
...
@@ -18,16 +17,16 @@ teacher_forms = [('DFA', teacher_dfa),
(
'REG'
,
student_reg
)]
(
'REG'
,
student_reg
)]
student_forms
=
[(
'DFA'
,
student_dfa
),
student_forms
=
[(
'DFA'
,
student_dfa
),
(
'TOT'
,
parser
.
dfa_to_str
(
parser
.
str_to_
dfa
(
student_dfa
)
(
'TOT'
,
parser
.
dfa_to_str
(
parser
.
dfa
(
student_dfa
)
.
total
())),
.
total
())),
(
'MIN'
,
parser
.
dfa_to_str
(
parser
.
str_to_
dfa
(
student_dfa
)
(
'MIN'
,
parser
.
dfa_to_str
(
parser
.
dfa
(
student_dfa
)
.
minimize
())),
.
minimize
())),
(
'CAN'
,
parser
.
dfa_to_str
(
parser
.
str_to_
dfa
(
student_dfa
)
(
'CAN'
,
parser
.
dfa_to_str
(
parser
.
dfa
(
student_dfa
)
.
total
().
canonize
())),
.
total
().
canonize
())),
(
'MIC'
,
parser
.
dfa_to_str
(
parser
.
str_to_
dfa
(
student_dfa
)
(
'MIC'
,
parser
.
dfa_to_str
(
parser
.
dfa
(
student_dfa
)
.
minimize
().
canonize
())),
.
minimize
().
canonize
())),
(
'EFA'
,
student_efa
),
(
'EFA'
,
student_efa
),
(
'NFA'
,
parser
.
nfa_to_str
(
parser
.
str_to_
nfa
(
student_efa
)
(
'NFA'
,
parser
.
nfa_to_str
(
parser
.
nfa
(
student_efa
)
.
eliminate_epsilon
())),
.
eliminate_epsilon
())),
(
'GRA'
,
student_gra
),
(
'GRA'
,
student_gra
),
(
'REG'
,
student_reg
)]
(
'REG'
,
student_reg
)]
...
...
evalweb/web_checker.py
View file @
3b77ae67
import
lib.reg
as
reg
from
lib
import
reg
,
parser
from
lib.pars
ing
import
Parser
,
ParsingError
from
lib.pars
er
import
ParsingError
from
lib.checker
import
transform
,
dfa_transform
,
nfa_transform
,
check_task
,
\
from
lib.checker
import
transform
,
dfa_transform
,
nfa_transform
,
check_task
,
\
check_alphabets
check_alphabets
from
typing
import
List
,
Optional
from
typing
import
List
,
Optional
...
@@ -19,7 +19,6 @@ class Language: # contains information about formalism and its language
...
@@ -19,7 +19,6 @@ class Language: # contains information about formalism and its language
self
.
string
=
string
self
.
string
=
string
self
.
task
=
task
self
.
task
=
task
parser
=
Parser
()
dfa
=
dfa_transform
(
self
.
string
,
self
.
task
)
dfa
=
dfa_transform
(
self
.
string
,
self
.
task
)
self
.
minimal
=
parser
.
dfa_to_str
(
dfa
.
minimize
().
canonize
())
self
.
minimal
=
parser
.
dfa_to_str
(
dfa
.
minimize
().
canonize
())
...
@@ -45,7 +44,6 @@ class Language: # contains information about formalism and its language
...
@@ -45,7 +44,6 @@ class Language: # contains information about formalism and its language
def
gen_is_task
(
self
,
task
:
str
)
->
str
:
def
gen_is_task
(
self
,
task
:
str
)
->
str
:
teacher
=
"NFA"
if
self
.
task
==
"EFA"
else
self
.
task
teacher
=
"NFA"
if
self
.
task
==
"EFA"
else
self
.
task
parser
=
Parser
()
assert
self
.
dfa
is
not
None
assert
self
.
dfa
is
not
None
dfa
=
parser
.
dfa_to_str
(
self
.
dfa
.
canonize
())
dfa
=
parser
.
dfa_to_str
(
self
.
dfa
.
canonize
())
return
f
"
{
teacher
}
-
{
task
}
:
{
dfa
}
"
return
f
"
{
teacher
}
-
{
task
}
:
{
dfa
}
"
...
@@ -127,7 +125,6 @@ class WebChecker:
...
@@ -127,7 +125,6 @@ class WebChecker:
student_string
=
self
.
student_string
)
student_string
=
self
.
student_string
)
def
convert
(
self
,
student_type
:
str
)
->
str
:
def
convert
(
self
,
student_type
:
str
)
->
str
:
parser
=
Parser
()
if
self
.
task
in
{
"DFA"
,
"TOT"
,
"MIN"
,
"CAN"
,
"MIC"
}:
if
self
.
task
in
{
"DFA"
,
"TOT"
,
"MIN"
,
"CAN"
,
"MIC"
}:
dfa
=
dfa_transform
(
self
.
student_string
,
student_type
)
dfa
=
dfa_transform
(
self
.
student_string
,
student_type
)
# avoid confusion by making the automaton total if the input
# avoid confusion by making the automaton total if the input
...
@@ -220,7 +217,6 @@ class WebChecker:
...
@@ -220,7 +217,6 @@ class WebChecker:
return
picture
# name of static image file to show in feedback
return
picture
# name of static image file to show in feedback
def
language
(
self
,
dfa
:
reg
.
DFA
)
->
Language
:
def
language
(
self
,
dfa
:
reg
.
DFA
)
->
Language
:
parser
=
Parser
()
return
Language
(
parser
.
dfa_to_str
(
dfa
))
return
Language
(
parser
.
dfa_to_str
(
dfa
))
def
DFA_lines
(
self
,
str_
:
str
)
->
None
:
def
DFA_lines
(
self
,
str_
:
str
)
->
None
:
...
...
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