Added new repeat syntax
Shortened syntax for repeats: 1:5 (1,5):4 (1 2 3):4
This commit is contained in:
@ -380,3 +380,6 @@ class ZiffersTransformer(Transformer):
|
|||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
return RepeatedSequence(values=items[0], repeats=Integer(value=2, text="2"))
|
return RepeatedSequence(values=items[0], repeats=Integer(value=2, text="2"))
|
||||||
|
|
||||||
|
def repeat_item(self, items):
|
||||||
|
return RepeatedListSequence(values=[items[0]],repeats=items[1])
|
||||||
@ -1,6 +1,6 @@
|
|||||||
// Root for the rules
|
// Root for the rules
|
||||||
?root: sequence -> start
|
?root: sequence -> start
|
||||||
sequence: (pitch_class | assignment | variable | rest | dur_change | oct_mod | oct_change | WS | chord | named_roman | cycle | random_integer | random_pitch | random_percent | range | list | repeated_list | lisp_operation | list_op | subdivision | eval | euclid | repeat)*
|
sequence: (pitch_class | repeat_item | assignment | variable | rest | dur_change | oct_mod | oct_change | WS | chord | named_roman | cycle | random_integer | random_pitch | random_percent | range | list | repeated_list | lisp_operation | list_op | subdivision | eval | euclid | repeat)*
|
||||||
|
|
||||||
// Pitch classes
|
// Pitch classes
|
||||||
pitch_class: prefix* pitch
|
pitch_class: prefix* pitch
|
||||||
@ -42,6 +42,7 @@
|
|||||||
|
|
||||||
// Repeats
|
// Repeats
|
||||||
repeat: "[:" sequence ":" [number] "]"
|
repeat: "[:" sequence ":" [number] "]"
|
||||||
|
repeat_item: (pitch_class | list | random_integer) ":" number
|
||||||
|
|
||||||
// List
|
// List
|
||||||
list: prefix* "(" sequence ")"
|
list: prefix* "(" sequence ")"
|
||||||
|
|||||||
Reference in New Issue
Block a user