Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feyncalc fixes #1346

Draft
wants to merge 26 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
0026004
starting
mmatera Apr 9, 2021
74165e4
Merge branch 'sparsearray' into coeffarrays
mmatera Apr 9, 2021
1d6b468
deactivate CoefficientArrays
mmatera Apr 9, 2021
3a78500
Implement Collect
mmatera Apr 26, 2021
097340c
Merge remote-tracking branch 'upstream/master' into coeffarrays
mmatera Apr 26, 2021
85c29fa
implementing CoefficientsArray
mmatera Apr 26, 2021
1ab29a8
removing output type
mmatera Apr 26, 2021
ce1d9ff
Merge remote-tracking branch 'upstream/master' into coeffarrays
mmatera Apr 27, 2021
c82e586
Merge remote-tracking branch 'upstream/master' into coeffarrays
mmatera Apr 28, 2021
1712ce9
Add drawing and numbers builtin submodules
rocky Apr 26, 2021
2ae5519
Disable cythonization of submodule files
rocky Apr 26, 2021
4e1bcdb
Add more builtin modules
rocky Apr 27, 2021
f7d4cfa
Correct builtin numeric imports
rocky Apr 29, 2021
b828610
disable test_get_and_put() on win32
rocky Apr 29, 2021
0a6faba
adding tests
mmatera Apr 12, 2021
4a8755f
merge
mmatera May 1, 2021
dbace9b
catch malformed Pattern
mmatera May 1, 2021
4f3c3af
Merge branch 'fix-matchq-errorhandler' into HEAD
mmatera May 1, 2021
10967d3
Merge remote-tracking branch 'upstream/improveexpand-rebase' into HEAD
mmatera May 1, 2021
66762ac
Merge branch 'coeffarrays' into feyncalcfixes
mmatera May 1, 2021
d702b8c
fixing comments
mmatera May 1, 2021
44e7698
Merge branch 'predicate-processing-rebase' into feyncalcfixes
mmatera May 1, 2021
f0e9cb4
first try: implementing <<precompiled>> Dispatch tables
mmatera May 3, 2021
916a8a7
Merge remote-tracking branch 'upstream/master' into Dispatch2
mmatera May 3, 2021
75c1cbf
merge
mmatera May 3, 2021
1c47d96
Merge branch 'Dispatch2' into FeyncalcFixes
mmatera May 3, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
catch malformed Pattern
  • Loading branch information
mmatera committed May 1, 2021
commit dbace9b78d6562e900d52116d39d7e1551094da9
6 changes: 6 additions & 0 deletions mathics/builtin/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -721,11 +721,17 @@ def boxes_to_tex(self, leaves, **options) -> str:
class PatternError(Exception):
def __init__(self, name, tag, *args):
super().__init__()
self.name = name
self.tag = tag
self.args = args


class PatternArgumentError(PatternError):
def __init__(self, name, count, expected):
super().__init__(None, None)
self.name = name
self.count = count
self.expected = expected


class PatternObject(InstanceableBuiltin, Pattern):
Expand Down
27 changes: 21 additions & 6 deletions mathics/builtin/patterns.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,9 @@
Integer,
Rational,
Real,
SymbolFalse,
SymbolList,
SymbolTrue,
)
from mathics.core.rules import Rule
from mathics.core.pattern import Pattern, StopGenerator
Expand Down Expand Up @@ -451,6 +453,9 @@ class PatternTest(BinaryOperator, PatternObject):
= True
>> MatchQ[-3, _Integer?(#>0&)]
= False
>> MatchQ[3, Pattern[3]]
: First element in pattern Pattern[3] is not a valid pattern name.
= False
"""

operator = "?"
Expand Down Expand Up @@ -660,16 +665,23 @@ class MatchQ(Builtin):
= False
>> MatchQ[_Integer][123]
= True
>> MatchQ[3, Pattern[3]]
: First element in pattern Pattern[3] is not a valid pattern name.
= False
"""

rules = {"MatchQ[form_][expr_]": "MatchQ[expr, form]"}

def apply(self, expr, form, evaluation):
"MatchQ[expr_, form_]"

if match(expr, form, evaluation):
return Symbol("True")
return Symbol("False")
try:
if match(expr, form, evaluation):
return SymbolTrue
return SymbolFalse
except PatternError as e:
evaluation.message(e.name, e.tag, *(e.args))
return SymbolFalse


class Verbatim(PatternObject):
Expand Down Expand Up @@ -801,10 +813,13 @@ class Pattern_(PatternObject):
}

def init(self, expr):
super(Pattern_, self).init(expr)
self.varname = expr.leaves[0].get_name()
if self.varname is None:
if len(expr.leaves) != 2:
self.error("patvar", expr)
varname = expr.leaves[0].get_name()
if varname is None or varname == "":
self.error("patvar", expr)
super(Pattern_, self).init(expr)
self.varname = varname
self.pattern = Pattern.create(expr.leaves[1])

def __repr__(self):
Expand Down