scrall 0.7.0__py3-none-any.whl → 0.8.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of scrall might be problematic. Click here for more details.

scrall/__init__.py CHANGED
@@ -1 +1 @@
1
- version = "0.7.0"
1
+ version = "0.8.0"
scrall/parse/scrall.peg CHANGED
@@ -92,10 +92,11 @@ OUTPUT = '=>>'
92
92
 
93
93
  // Instance set
94
94
  instance_set = new_instance / ((operation / name / path) (reflexive_selection / selection / operation / path)*)
95
- selection = '(' SP* select_phrase SP* ')'
96
- select_phrase = (CARD RANKR? ',' SP* scalar_expr) / CARD / scalar_expr
95
+ selection = '(' SP* (rank_selection / criteria_selection) SP* ')'
96
+ rank_selection = CARD ', ' SP* RANKR name
97
+ criteria_selection = (CARD ', ' SP* scalar_expr) / CARD / scalar_expr
97
98
  CARD = '1' / '*'
98
- RANKR = '<' / '>'
99
+ RANKR = '^+' / '^-'
99
100
  IN = '^'
100
101
  TRUE = 'TRUE'
101
102
  FALSE = 'FALSE'
scrall/parse/visitor.py CHANGED
@@ -16,7 +16,8 @@ Call_a = namedtuple('Call_a', 'call op_chain')
16
16
  Scalar_Call_a = namedtuple('Scalar_Call_a', 'call')
17
17
  """The subject of a call could be an instance set (method) or an external entity (ee operation)"""
18
18
  Attr_Access_a = namedtuple('Attr_Access_a', 'cname its attr')
19
- Selection_a = namedtuple('Selection_a', 'card rankr criteria')
19
+ Rank_Selection_a = namedtuple('Rank_Selection_a', 'card rankr attr')
20
+ Criteria_Selection_a = namedtuple('Criteria_Selection_a', 'card criteria')
20
21
  Inst_Assignment_a = namedtuple('Inst_Assignment_a', 'lhs card rhs X')
21
22
  EE_Signal_a = namedtuple('EE_Signal_a', 'event supplied_params ee')
22
23
  Signal_a = namedtuple('Signal_a', 'event supplied_params dest')
@@ -72,7 +73,7 @@ Migration_a = namedtuple('Migration_a','from_inst to_subclass')
72
73
  Rank_a = namedtuple('Rank_a', "card extent")
73
74
 
74
75
 
75
- rank_symbol = {'>': "greatest", '<': "least"}
76
+ rank_symbol = {'^+': "greatest", '^-': "least"}
76
77
 
77
78
  table_op = {
78
79
  '^': 'INTERSECT',
@@ -441,7 +442,7 @@ class ScrallVisitor(PTNodeVisitor):
441
442
  if type(table).__name__ == 'INST_a':
442
443
  last_comp = table.components[-1]
443
444
 
444
- if last_comp and type(last_comp).__name__ == 'Selection_a':
445
+ if last_comp and type(last_comp).__name__ == 'Criteria_Selection_a':
445
446
  if s:
446
447
  # We have two selection phrases. The first is terminating the instance set and the second is
447
448
  # picked up as 's' above. We will take the first one and ignore the second,
@@ -916,11 +917,29 @@ class ScrallVisitor(PTNodeVisitor):
916
917
  return result
917
918
 
918
919
  @classmethod
919
- def visit_select_phrase(cls, node, children):
920
+ def visit_rank_selection(cls, node, children):
920
921
  """
921
- (CARD RANKR? ',' SP* scalar_expr) / CARD / RANKR? scalar_expr
922
+ CARD ', ' SP* RANKR name
922
923
  """
923
- _logger.info(f"{node.rule_name} = (CARD ',' SP* scalar_expr) / CARD / scalar_expr")
924
+ _logger.info(f"{node.rule_name} = CARD ', ' SP* RANKR name")
925
+ _logger.info(f">> {[k for k in children.results.keys()]}")
926
+ _logger.info(f' :: {node.value}')
927
+
928
+ _logger.info(f" < {children}")
929
+ card = children.results.get('CARD')[0]
930
+ attr = children.results.get('name')
931
+ rankr = children.results.get('RANKR')
932
+ rankr_parse = rank_symbol[rankr[0]]
933
+ result = Rank_Selection_a(card=card, rankr=rankr_parse, attr=attr)
934
+ _logger.info(f" > {result}")
935
+ return result
936
+
937
+ @classmethod
938
+ def visit_criteria_selection(cls, node, children):
939
+ """
940
+ (CARD ', ' SP* scalar_expr) / CARD / scalar_expr
941
+ """
942
+ _logger.info(f"{node.rule_name} = (CARD ', ' SP* scalar_expr) / CARD / scalar_expr")
924
943
  _logger.info(f">> {[k for k in children.results.keys()]}")
925
944
  _logger.info(f' :: {node.value}')
926
945
 
@@ -928,10 +947,8 @@ class ScrallVisitor(PTNodeVisitor):
928
947
  explicit_card = children.results.get('CARD')
929
948
  card = '*' if not explicit_card else explicit_card[0]
930
949
  criteria = children.results.get('scalar_expr')
931
- rankr = children.results.get('RANKR')
932
- rankr_parse = rank_symbol[rankr[0]] if rankr else None # assign greatest or least
933
950
  if criteria:
934
- result = Selection_a(card=card, rankr=rankr_parse, criteria=criteria[0])
951
+ result = Criteria_Selection_a(card=card, criteria=criteria[0])
935
952
  else:
936
953
  result = [card]
937
954
  _logger.info(f" > {result}")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: scrall
3
- Version: 0.7.0
3
+ Version: 0.8.0
4
4
  Summary: Starr's Concise Relational Action Language - For Shlaer-Mellor Executable UML
5
5
  Author-email: Leon Starr <leon_starr@modelint.com>
6
6
  License: MIT License
@@ -0,0 +1,14 @@
1
+ scrall/__init__.py,sha256=Xa5Ugzgk02aJpYFNzZussKTPoB7_TI6yxPt6r3mRqRM,17
2
+ scrall/__main__.py,sha256=hyBcYLATx0XghUUnrKQQgDQ8PicczmBnXgBAx92ltB4,2161
3
+ scrall/exceptions.py,sha256=QU4mKLs7_ddGIznhh2HUpjb_PdPlxWZMMY_g0ELenSs,1764
4
+ scrall/log.conf,sha256=tERYKbCp9TgdAVTby6A7gUpnjurJKcX1tyAzG3ATORI,933
5
+ scrall/parse/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
+ scrall/parse/parser.py,sha256=k4SeWMtNzAUtwU_e15frvSL1D5G3RBU_jmLegZbIBnY,5221
7
+ scrall/parse/scrall.peg,sha256=5qaAjASvWVsOjKxXnEh63OrEnNOL9QXdxfME0dwcvgM,7672
8
+ scrall/parse/visitor.py,sha256=gcecbvpBDsa6scbQv21rJZdsDrwOC83yKR3wtyNhiKs,55393
9
+ scrall-0.8.0.dist-info/licenses/LICENSE,sha256=kL0xVrwl2i3Pk9mQXAVAPANCTaLGGOsoXgvqW7TBs20,1072
10
+ scrall-0.8.0.dist-info/METADATA,sha256=OKiv09J24672gTi7KKxflBiJ72dcm8YmDH0ydXfqid4,7208
11
+ scrall-0.8.0.dist-info/WHEEL,sha256=zaaOINJESkSfm_4HQVc5ssNzHCPXhJm0kEUakpsEHaU,91
12
+ scrall-0.8.0.dist-info/entry_points.txt,sha256=2fHG6VXtqSTEZXadsBe7XCFaLm4t3V1pFuqzgWWjBgA,48
13
+ scrall-0.8.0.dist-info/top_level.txt,sha256=SWvpMyNNJlrMWpSsK5RUL40ivQxQpKPbL86VrvNIUAE,7
14
+ scrall-0.8.0.dist-info/RECORD,,
@@ -1,14 +0,0 @@
1
- scrall/__init__.py,sha256=eMM1qiVgCAbooyX_s4EBP8LMyZO3wVeNG4NHWlR2mYo,17
2
- scrall/__main__.py,sha256=hyBcYLATx0XghUUnrKQQgDQ8PicczmBnXgBAx92ltB4,2161
3
- scrall/exceptions.py,sha256=QU4mKLs7_ddGIznhh2HUpjb_PdPlxWZMMY_g0ELenSs,1764
4
- scrall/log.conf,sha256=tERYKbCp9TgdAVTby6A7gUpnjurJKcX1tyAzG3ATORI,933
5
- scrall/parse/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- scrall/parse/parser.py,sha256=k4SeWMtNzAUtwU_e15frvSL1D5G3RBU_jmLegZbIBnY,5221
7
- scrall/parse/scrall.peg,sha256=8faLDiuYy-qQV0OOzCK7YWOP6ohnnqGsdYvzU4o-y84,7605
8
- scrall/parse/visitor.py,sha256=fWkrbaPzqKTWVeDhpAINaqOG_2KjcWuw1s-Lexr1cwg,54793
9
- scrall-0.7.0.dist-info/licenses/LICENSE,sha256=kL0xVrwl2i3Pk9mQXAVAPANCTaLGGOsoXgvqW7TBs20,1072
10
- scrall-0.7.0.dist-info/METADATA,sha256=6KVpHn57q5ljNaA8QBthJjQZCYLB7js2AaTVDCF6eAU,7208
11
- scrall-0.7.0.dist-info/WHEEL,sha256=zaaOINJESkSfm_4HQVc5ssNzHCPXhJm0kEUakpsEHaU,91
12
- scrall-0.7.0.dist-info/entry_points.txt,sha256=2fHG6VXtqSTEZXadsBe7XCFaLm4t3V1pFuqzgWWjBgA,48
13
- scrall-0.7.0.dist-info/top_level.txt,sha256=SWvpMyNNJlrMWpSsK5RUL40ivQxQpKPbL86VrvNIUAE,7
14
- scrall-0.7.0.dist-info/RECORD,,
File without changes