input: complete_expression | scalefactor complete_expression | scalefactor WHITESPACE complete_expression | division unit_expression ; complete_expression: product_of_units | product_of_units division unit_expression ; product_of_units: unit_expression | product_of_units product unit_expression ; unit_expression: term // m(2) is m^2, not function application | STRING parenthesized_number | function_application | OPEN_P complete_expression CLOSE_P ; function_application: STRING OPEN_P complete_expression CLOSE_P ; scalefactor: LIT10 power numeric_power | LIT10 SIGNED_INTEGER ; division: DIVISION; term: unit | unit numeric_power | unit power numeric_power ; unit: STRING ; power: CARET | STARSTAR ; numeric_power: integer | parenthesized_number ; parenthesized_number: OPEN_P integer CLOSE_P | OPEN_P FLOAT CLOSE_P | OPEN_P integer division UNSIGNED_INTEGER CLOSE_P ; integer: SIGNED_INTEGER | UNSIGNED_INTEGER; product: WHITESPACE | STAR | DOT;