/******************* Syntax *********************** Statement:: MacroDefinition | PlotStatement | ColorStatement MacroDefinition:: ConstantDefinition | FunctionDefinition ConstantDefinition:: [DEFINE] ConstantName = ExpressionC FunctionDefinition:: [DEFINE] FunctionName(IdentifierF [[IdentifierF]]) = ExpressionF PlotStatement:: PLOT ExpressionP, ExpressionP FOR ExpressionC < IdentifierP < ExpressionC Expression_3:: [+] Expression_2 [+ Expression_2]] Expression_2:: Expression_1 [[* Expression_1]] Expression_1:: Expression_0 [^ Expression_0] Expression_0:: Number | (Expression_3) | ConstantName | FunctionName(Expression_3 [[Expression_3]]) | SIN(Expression_3) | Identifier Atom:: IdentifierF | IdentifierP ColorStatement:: COLOR(color) | COLOR(Number,Number,Number) --------------------------------- After macro expansion ExpressionC is an Expression_3 containing no Identifier, ExpressionF is an Expression_3 containing only the IdentifierFs in the declaration, and ExpressionP is an Expression_3 containing only the IdentifierP after the FOR. color is one of the strings in colorList of class ColorStatement below (case insensitive)