🐐 Better array definition
This commit is contained in:
@@ -297,13 +297,10 @@ class Parser():
|
|||||||
else:
|
else:
|
||||||
return [calls[0]] + calls[2]
|
return [calls[0]] + calls[2]
|
||||||
|
|
||||||
@self.pg.production('array_items : ')
|
|
||||||
@self.pg.production('array_items : expression')
|
@self.pg.production('array_items : expression')
|
||||||
@self.pg.production('array_items : expression SYMBOL_COMMA opt_newline array_items')
|
@self.pg.production('array_items : expression SYMBOL_COMMA opt_newline array_items')
|
||||||
def array_items(calls):
|
def array_items(calls):
|
||||||
if len(calls) == 0:
|
if len(calls) == 1:
|
||||||
return []
|
|
||||||
elif len(calls) == 1:
|
|
||||||
return [calls[0]]
|
return [calls[0]]
|
||||||
else:
|
else:
|
||||||
return [calls[0]] + calls[3]
|
return [calls[0]] + calls[3]
|
||||||
@@ -391,10 +388,19 @@ class Parser():
|
|||||||
def dict_literal(tokens):
|
def dict_literal(tokens):
|
||||||
return ast_nodes.DataDict(tokens[3])
|
return ast_nodes.DataDict(tokens[3])
|
||||||
|
|
||||||
@self.pg.production('expression : SYMBOL_LBRACKET array_items SYMBOL_RBRACKET')
|
@self.pg.production('expression : SYMBOL_LBRACKET SYMBOL_RBRACKET')
|
||||||
|
@self.pg.production('expression : SYMBOL_LBRACKET newlines SYMBOL_RBRACKET')
|
||||||
|
def array_empty(_):
|
||||||
|
return ast_nodes.DataArray([])
|
||||||
|
|
||||||
|
@self.pg.production('expression : SYMBOL_LBRACKET array_items opt_newline SYMBOL_RBRACKET')
|
||||||
def array(tokens):
|
def array(tokens):
|
||||||
return ast_nodes.DataArray(tokens[1])
|
return ast_nodes.DataArray(tokens[1])
|
||||||
|
|
||||||
|
@self.pg.production('expression : SYMBOL_LBRACKET newlines array_items opt_newline SYMBOL_RBRACKET')
|
||||||
|
def array_leading_newline(tokens):
|
||||||
|
return ast_nodes.DataArray(tokens[2])
|
||||||
|
|
||||||
@self.pg.production('expression : SYMBOL_LBRACKET expression KEYWORD_VSQVE expression SYMBOL_RBRACKET')
|
@self.pg.production('expression : SYMBOL_LBRACKET expression KEYWORD_VSQVE expression SYMBOL_RBRACKET')
|
||||||
def range_array(tokens):
|
def range_array(tokens):
|
||||||
return ast_nodes.DataRangeArray(tokens[1], tokens[3])
|
return ast_nodes.DataRangeArray(tokens[1], tokens[3])
|
||||||
|
|||||||
@@ -265,6 +265,26 @@ multiline_array_tests = [
|
|||||||
DataArray([Numeral("II"), Numeral("III")]),
|
DataArray([Numeral("II"), Numeral("III")]),
|
||||||
Numeral("IV")]))]),
|
Numeral("IV")]))]),
|
||||||
ValList([ValInt(1), ValList([ValInt(2), ValInt(3)]), ValInt(4)])),
|
ValList([ValInt(1), ValList([ValInt(2), ValInt(3)]), ValInt(4)])),
|
||||||
|
# empty array with newline
|
||||||
|
("[\n]",
|
||||||
|
Program([], [ExpressionStatement(DataArray([]))]),
|
||||||
|
ValList([])),
|
||||||
|
# newline immediately after [
|
||||||
|
("[\nI, II, III]",
|
||||||
|
Program([], [ExpressionStatement(DataArray([Numeral("I"), Numeral("II"), Numeral("III")]))]),
|
||||||
|
ValList([ValInt(1), ValInt(2), ValInt(3)])),
|
||||||
|
# newline immediately before ]
|
||||||
|
("[I, II, III\n]",
|
||||||
|
Program([], [ExpressionStatement(DataArray([Numeral("I"), Numeral("II"), Numeral("III")]))]),
|
||||||
|
ValList([ValInt(1), ValInt(2), ValInt(3)])),
|
||||||
|
# newlines on both sides
|
||||||
|
("[\nI, II, III\n]",
|
||||||
|
Program([], [ExpressionStatement(DataArray([Numeral("I"), Numeral("II"), Numeral("III")]))]),
|
||||||
|
ValList([ValInt(1), ValInt(2), ValInt(3)])),
|
||||||
|
# newlines around every delimiter
|
||||||
|
("[\nI,\nII,\nIII\n]",
|
||||||
|
Program([], [ExpressionStatement(DataArray([Numeral("I"), Numeral("II"), Numeral("III")]))]),
|
||||||
|
ValList([ValInt(1), ValInt(2), ValInt(3)])),
|
||||||
]
|
]
|
||||||
|
|
||||||
class TestMultilineArray(unittest.TestCase):
|
class TestMultilineArray(unittest.TestCase):
|
||||||
|
|||||||
Reference in New Issue
Block a user