@@ -32,48 +32,29 @@ leq_cvc(str1::String, str2::String) = cmp(str1, str2) <= 0
3232
3333isdigit_cvc (str:: String ) = tryparse (Int, str) != = nothing
3434
35- """
36- Gets relevant symbol to easily match grammar rules to operations in `interpret` function
37- """
38- function get_relevant_tags (grammar:: ContextSensitiveGrammar )
39- tags = Dict {Int,Any} ()
40- for (ind, r) in pairs (grammar. rules)
41- tags[ind] = if typeof (r) != Expr
42- r
43- else
44- @match r. head begin
45- :block => :OpSeq
46- :call => r. args[1 ]
47- :if => :IF
48- end
49- end
50- end
51- return tags
52- end
53-
5435function interpret_sygus (prog:: AbstractRuleNode , grammar_tags:: Dict{Int,Any} )
55- r = get_rule (prog)
56- c = get_children (prog)
57-
58- MLStyle. @match grammar_tags[r] begin
59- :concat_cvc => concat_cvc (interpret_sygus (c[1 ], grammar_tags), interpret_sygus (c[2 ], grammar_tags))
60- :replace_cvc => replace_cvc (interpret_sygus (c[1 ], grammar_tags), interpret_sygus (c[2 ], grammar_tags), interpret_sygus (c[3 ], grammar_tags))
61- :at_cvc => at_cvc (interpret_sygus (c[1 ], grammar_tags), interpret_sygus (c[2 ], grammar_tags))
62- :int_to_str_cvc => int_to_str_cvc (interpret_sygus (c[1 ], grammar_tags))
63- :substr_cvc => substr_cvc (interpret_sygus (c[1 ], grammar_tags), interpret_sygus (c[2 ], grammar_tags), interpret_sygus (c[3 ], grammar_tags))
64- :len_cvc => len_cvc (interpret_sygus (c[1 ], grammar_tags))
65- :str_to_int_cvc => str_to_int_cvc (interpret_sygus (c[1 ], grammar_tags))
66- :indexof_cvc => indexof_cvc (interpret_sygus (c[1 ], grammar_tags), interpret_sygus (c[2 ], grammar_tags), interpret_sygus (c[3 ], grammar_tags))
67- :prefixof_cvc => prefixof_cvc (interpret_sygus (c[1 ], grammar_tags), interpret_sygus (c[2 ], grammar_tags))
68- :suffixof_cvc => suffixof_cvc (interpret_sygus (c[1 ], grammar_tags), interpret_sygus (c[2 ], grammar_tags))
69- :contains_cvc => contains_cvc (interpret_sygus (c[1 ], grammar_tags), interpret_sygus (c[2 ], grammar_tags))
70-
71- : + => interpret_sygus (c[1 ], grammar_tags) + interpret_sygus (c[2 ], grammar_tags)
72- : - => interpret_sygus (c[1 ], grammar_tags) - interpret_sygus (c[2 ], grammar_tags)
73- :(== ) => interpret_sygus (c[1 ], grammar_tags) == interpret_sygus (c[2 ], grammar_tags)
74-
75- :IF => interpret_sygus (c[1 ], grammar_tags) ? interpret_sygus (c[2 ], grammar_tags) : interpret_sygus (c[3 ], grammar_tags)
76-
77- _ => grammar_tags[r]
78- end
36+ r = get_rule (prog)
37+ c = get_children (prog)
38+
39+ MLStyle. @match grammar_tags[r] begin
40+ :concat_cvc => concat_cvc (interpret_sygus (c[1 ], grammar_tags), interpret_sygus (c[2 ], grammar_tags))
41+ :replace_cvc => replace_cvc (interpret_sygus (c[1 ], grammar_tags), interpret_sygus (c[2 ], grammar_tags), interpret_sygus (c[3 ], grammar_tags))
42+ :at_cvc => at_cvc (interpret_sygus (c[1 ], grammar_tags), interpret_sygus (c[2 ], grammar_tags))
43+ :int_to_str_cvc => int_to_str_cvc (interpret_sygus (c[1 ], grammar_tags))
44+ :substr_cvc => substr_cvc (interpret_sygus (c[1 ], grammar_tags), interpret_sygus (c[2 ], grammar_tags), interpret_sygus (c[3 ], grammar_tags))
45+ :len_cvc => len_cvc (interpret_sygus (c[1 ], grammar_tags))
46+ :str_to_int_cvc => str_to_int_cvc (interpret_sygus (c[1 ], grammar_tags))
47+ :indexof_cvc => indexof_cvc (interpret_sygus (c[1 ], grammar_tags), interpret_sygus (c[2 ], grammar_tags), interpret_sygus (c[3 ], grammar_tags))
48+ :prefixof_cvc => prefixof_cvc (interpret_sygus (c[1 ], grammar_tags), interpret_sygus (c[2 ], grammar_tags))
49+ :suffixof_cvc => suffixof_cvc (interpret_sygus (c[1 ], grammar_tags), interpret_sygus (c[2 ], grammar_tags))
50+ :contains_cvc => contains_cvc (interpret_sygus (c[1 ], grammar_tags), interpret_sygus (c[2 ], grammar_tags))
51+
52+ : + => interpret_sygus (c[1 ], grammar_tags) + interpret_sygus (c[2 ], grammar_tags)
53+ : - => interpret_sygus (c[1 ], grammar_tags) - interpret_sygus (c[2 ], grammar_tags)
54+ :(== ) => interpret_sygus (c[1 ], grammar_tags) == interpret_sygus (c[2 ], grammar_tags)
55+
56+ :IF => interpret_sygus (c[1 ], grammar_tags) ? interpret_sygus (c[2 ], grammar_tags) : interpret_sygus (c[3 ], grammar_tags)
57+
58+ _ => grammar_tags[r]
59+ end
7960end
0 commit comments