# Parsing The parsing functionality is for saving and loading from a custom file format. The BNF for the custom file format is below. Terminals are surrounded by `**` to the left and right. (rule)+ means "1 or more". ``` int ::= (0-9)+ item ::= **{** int int int int int int int int **}** layer ::= **[** item **]** layer_tree ::= int int **{** (layer)* **}** ``` The first two `int`s in the `layer_tree` always follow the order: `canvasWidth canvasHeight`. The large number of `int`s in the `item` always follow the order: `x y ex ey r g b a`.