This script loads a board file and a tab file then interprets each line of the tab as instructions to search for objects and edit them.

The columns of the table are separated by semicolon. The first column is a query() expression. Further columns are name=value pairs for propset(). To set an attribute in propset syntax, name needs to be prefixed with "a/".