Tokens: ["int", "main", "(", ")", "{", "int", "tomas", ";", "tomas", "=", "2", ";", "return", "1", "+", "2", ";", "}"] Begin validate subconstruct (type "Function") Testing variant Integer (Loop = false) (Loopable = false) Validated token "int" Validated token "main" Validated token "(" Validated token ")" Validated token "{" Begin validate subconstruct (type "StatementList") Testing variant StatementSequence (Loop = false) (Loopable = false) Determining need to loop construct of type Statement Testing Statement::StandaloneExpression Begin validate subconstruct (type "Expression") Testing variant VariableExpression (Loop = false) (Loopable = false) Begin validate subconstruct (type "VariableAssignment") Testing variant Variable (Loop = false) (Loopable = false) Failed to validate token "int". Expected "IDENTIFIER" Fail: no valid variants (variant "Variable") Subconstruct validation failed Fail: no valid variants (variant "VariableExpression") Testing variant LogicalOrExpressionSequence (Loop = false) (Loopable = false) Begin validate subconstruct (type "LogicalOrExpression") Testing variant LogicalAndExpressionSequence (Loop = false) (Loopable = false) Begin validate subconstruct (type "LogicalAndExpression") Testing variant EqualityExpressionSequence (Loop = false) (Loopable = false) Begin validate subconstruct (type "EqualityExpression") Testing variant RelationalExpressionSequence (Loop = false) (Loopable = false) Begin validate subconstruct (type "RelationalExpression") Testing variant AdditiveExpressionSequence (Loop = false) (Loopable = false) Begin validate subconstruct (type "AdditiveExpression") Testing variant TermSequence (Loop = false) (Loopable = true) Begin validate subconstruct (type "Term") Testing variant FactorSequence (Loop = false) (Loopable = true) Begin validate subconstruct (type "Factor") Testing variant LiteralInteger (Loop = false) (Loopable = false) Failed to validate token "int". Expected "LITERAL_INTEGER" Fail: no valid variants (variant "LiteralInteger") Testing variant ParenthesizedExpression (Loop = false) (Loopable = false) Failed to validate token "int". Expected "PARENTHESIS_OPEN" Fail: no valid variants (variant "ParenthesizedExpression") Testing variant StandaloneVariable (Loop = false) (Loopable = false) Begin validate subconstruct (type "VariableFactor") Testing variant Variable (Loop = false) (Loopable = false) Failed to validate token "int". Expected "IDENTIFIER" Fail: no valid variants (variant "Variable") Subconstruct validation failed Fail: no valid variants (variant "StandaloneVariable") Testing variant UnaryOperation (Loop = false) (Loopable = false) Begin validate subconstruct (type "UnaryOperator") Testing variant LogicalNegation (Loop = false) (Loopable = false) Failed to validate token "int". Expected "LOGICAL_NEGATION" Fail: no valid variants (variant "LogicalNegation") Testing variant BitwiseCompliment (Loop = false) (Loopable = false) Failed to validate token "int". Expected "BITWISE_COMPLIMENT" Fail: no valid variants (variant "BitwiseCompliment") Testing variant Negation (Loop = false) (Loopable = false) Failed to validate token "int". Expected "NEGATION" Fail: no valid variants (variant "Negation") Subconstruct validation failed Fail: no valid variants (variant "UnaryOperation") Subconstruct validation failed Fail: no valid variants (variant "FactorSequence") Subconstruct validation failed Fail: no valid variants (variant "TermSequence") Subconstruct validation failed Fail: no valid variants (variant "AdditiveExpressionSequence") Subconstruct validation failed Fail: no valid variants (variant "RelationalExpressionSequence") Subconstruct validation failed Fail: no valid variants (variant "EqualityExpressionSequence") Subconstruct validation failed Fail: no valid variants (variant "LogicalAndExpressionSequence") Subconstruct validation failed Fail: no valid variants (variant "LogicalOrExpressionSequence") Subconstruct validation failed Testing Statement::DeclareVariable Begin validate subconstruct (type "VariableDeclaration") Testing variant Variable (Loop = false) (Loopable = false) Validated token "int" Validated token "tomas" Determining need to continue. (TestingASSIGNMENT) ASSIGNMENT NOT validated. Breaking Success (variant "Variable") End validate subconstruct (variant "Variable") Validated token ";" Looping Determining need to loop construct of type Statement Testing Statement::StandaloneExpression Begin validate subconstruct (type "Expression") Testing variant VariableExpression (Loop = false) (Loopable = false) Begin validate subconstruct (type "VariableAssignment") Testing variant Variable (Loop = false) (Loopable = false) Validated token "tomas" Validated token "=" Begin validate subconstruct (type "Expression") Testing variant VariableExpression (Loop = false) (Loopable = false) Begin validate subconstruct (type "VariableAssignment") Testing variant Variable (Loop = false) (Loopable = false) Failed to validate token "2". Expected "IDENTIFIER" Fail: no valid variants (variant "Variable") Subconstruct validation failed Fail: no valid variants (variant "VariableExpression") Testing variant LogicalOrExpressionSequence (Loop = false) (Loopable = false) Begin validate subconstruct (type "LogicalOrExpression") Testing variant LogicalAndExpressionSequence (Loop = false) (Loopable = false) Begin validate subconstruct (type "LogicalAndExpression") Testing variant EqualityExpressionSequence (Loop = false) (Loopable = false) Begin validate subconstruct (type "EqualityExpression") Testing variant RelationalExpressionSequence (Loop = false) (Loopable = false) Begin validate subconstruct (type "RelationalExpression") Testing variant AdditiveExpressionSequence (Loop = false) (Loopable = false) Begin validate subconstruct (type "AdditiveExpression") Testing variant TermSequence (Loop = false) (Loopable = true) Begin validate subconstruct (type "Term") Testing variant FactorSequence (Loop = false) (Loopable = true) Begin validate subconstruct (type "Factor") Testing variant LiteralInteger (Loop = false) (Loopable = false) Validated token "2" Success (variant "LiteralInteger") End validate subconstruct (variant "LiteralInteger") Determining need to loop construct of type MultiplicationPriorityOperator Testing operator MultiplicationPriorityOperator::Division Failed to validate token ";". Expected "DIVISION" Testing operator MultiplicationPriorityOperator::Multiplication Failed to validate token ";". Expected "MULTIPLICATION" Not looping Success (variant "FactorSequence") End validate subconstruct (variant "FactorSequence") Determining need to loop construct of type AdditionPriorityOperator Testing operator AdditionPriorityOperator::Addition Failed to validate token ";". Expected "ADDITION" Testing operator AdditionPriorityOperator::Subtraction Failed to validate token ";". Expected "NEGATION" Not looping Success (variant "TermSequence") End validate subconstruct (variant "TermSequence") Determining need to loop construct of type InequalityPriorityOperator Testing operator InequalityPriorityOperator::LessThan Failed to validate token ";". Expected "LESS_THAN" Testing operator InequalityPriorityOperator::GreaterThanOrEqualTo Failed to validate token ";". Expected "GREATER_THAN_OR_EQUAL_TO" Testing operator InequalityPriorityOperator::LessThanOrEqualTo Failed to validate token ";". Expected "LESS_THAN_OR_EQUAL_TO" Testing operator InequalityPriorityOperator::GreaterThan Failed to validate token ";". Expected "GREATER_THAN" Not looping Success (variant "AdditiveExpressionSequence") End validate subconstruct (variant "AdditiveExpressionSequence") Determining need to loop construct of type EqualityPriorityOperator Testing operator EqualityPriorityOperator::EqualTo Failed to validate token ";". Expected "EQUAL" Testing operator EqualityPriorityOperator::NotEqualTo Failed to validate token ";". Expected "NOT_EQUAL" Not looping Success (variant "RelationalExpressionSequence") End validate subconstruct (variant "RelationalExpressionSequence") Determining need to loop construct of type LogicalAndPriorityOperator Testing operator LogicalAndPriorityOperator::LogicalAnd Failed to validate token ";". Expected "LOGICAL_AND" Not looping Success (variant "EqualityExpressionSequence") End validate subconstruct (variant "EqualityExpressionSequence") Determining need to loop construct of type LogicalOrPriorityOperator Testing operator LogicalOrPriorityOperator::LogicalOr Failed to validate token ";". Expected "LOGICAL_OR" Not looping Success (variant "LogicalAndExpressionSequence") End validate subconstruct (variant "LogicalAndExpressionSequence") Success (variant "LogicalOrExpressionSequence") End validate subconstruct (variant "LogicalOrExpressionSequence") Success (variant "Variable") End validate subconstruct (variant "Variable") Success (variant "VariableExpression") End validate subconstruct (variant "VariableExpression") Validated token ";" Looping Determining need to loop construct of type Statement Testing Statement::StandaloneExpression Begin validate subconstruct (type "Expression") Testing variant VariableExpression (Loop = false) (Loopable = false) Begin validate subconstruct (type "VariableAssignment") Testing variant Variable (Loop = false) (Loopable = false) Failed to validate token "return". Expected "IDENTIFIER" Fail: no valid variants (variant "Variable") Subconstruct validation failed Fail: no valid variants (variant "VariableExpression") Testing variant LogicalOrExpressionSequence (Loop = false) (Loopable = false) Begin validate subconstruct (type "LogicalOrExpression") Testing variant LogicalAndExpressionSequence (Loop = false) (Loopable = false) Begin validate subconstruct (type "LogicalAndExpression") Testing variant EqualityExpressionSequence (Loop = false) (Loopable = false) Begin validate subconstruct (type "EqualityExpression") Testing variant RelationalExpressionSequence (Loop = false) (Loopable = false) Begin validate subconstruct (type "RelationalExpression") Testing variant AdditiveExpressionSequence (Loop = false) (Loopable = false) Begin validate subconstruct (type "AdditiveExpression") Testing variant TermSequence (Loop = false) (Loopable = true) Begin validate subconstruct (type "Term") Testing variant FactorSequence (Loop = false) (Loopable = true) Begin validate subconstruct (type "Factor") Testing variant LiteralInteger (Loop = false) (Loopable = false) Failed to validate token "return". Expected "LITERAL_INTEGER" Fail: no valid variants (variant "LiteralInteger") Testing variant ParenthesizedExpression (Loop = false) (Loopable = false) Failed to validate token "return". Expected "PARENTHESIS_OPEN" Fail: no valid variants (variant "ParenthesizedExpression") Testing variant StandaloneVariable (Loop = false) (Loopable = false) Begin validate subconstruct (type "VariableFactor") Testing variant Variable (Loop = false) (Loopable = false) Failed to validate token "return". Expected "IDENTIFIER" Fail: no valid variants (variant "Variable") Subconstruct validation failed Fail: no valid variants (variant "StandaloneVariable") Testing variant UnaryOperation (Loop = false) (Loopable = false) Begin validate subconstruct (type "UnaryOperator") Testing variant LogicalNegation (Loop = false) (Loopable = false) Failed to validate token "return". Expected "LOGICAL_NEGATION" Fail: no valid variants (variant "LogicalNegation") Testing variant BitwiseCompliment (Loop = false) (Loopable = false) Failed to validate token "return". Expected "BITWISE_COMPLIMENT" Fail: no valid variants (variant "BitwiseCompliment") Testing variant Negation (Loop = false) (Loopable = false) Failed to validate token "return". Expected "NEGATION" Fail: no valid variants (variant "Negation") Subconstruct validation failed Fail: no valid variants (variant "UnaryOperation") Subconstruct validation failed Fail: no valid variants (variant "FactorSequence") Subconstruct validation failed Fail: no valid variants (variant "TermSequence") Subconstruct validation failed Fail: no valid variants (variant "AdditiveExpressionSequence") Subconstruct validation failed Fail: no valid variants (variant "RelationalExpressionSequence") Subconstruct validation failed Fail: no valid variants (variant "EqualityExpressionSequence") Subconstruct validation failed Fail: no valid variants (variant "LogicalAndExpressionSequence") Subconstruct validation failed Fail: no valid variants (variant "LogicalOrExpressionSequence") Subconstruct validation failed Testing Statement::DeclareVariable Begin validate subconstruct (type "VariableDeclaration") Testing variant Variable (Loop = false) (Loopable = false) Failed to validate token "return". Expected "INT" Fail: no valid variants (variant "Variable") Subconstruct validation failed Testing Statement::ReturnExpression Validated token "return" Begin validate subconstruct (type "Expression") Testing variant VariableExpression (Loop = false) (Loopable = false) Begin validate subconstruct (type "VariableAssignment") Testing variant Variable (Loop = false) (Loopable = false) Failed to validate token "1". Expected "IDENTIFIER" Fail: no valid variants (variant "Variable") Subconstruct validation failed Fail: no valid variants (variant "VariableExpression") Testing variant LogicalOrExpressionSequence (Loop = false) (Loopable = false) Begin validate subconstruct (type "LogicalOrExpression") Testing variant LogicalAndExpressionSequence (Loop = false) (Loopable = false) Begin validate subconstruct (type "LogicalAndExpression") Testing variant EqualityExpressionSequence (Loop = false) (Loopable = false) Begin validate subconstruct (type "EqualityExpression") Testing variant RelationalExpressionSequence (Loop = false) (Loopable = false) Begin validate subconstruct (type "RelationalExpression") Testing variant AdditiveExpressionSequence (Loop = false) (Loopable = false) Begin validate subconstruct (type "AdditiveExpression") Testing variant TermSequence (Loop = false) (Loopable = true) Begin validate subconstruct (type "Term") Testing variant FactorSequence (Loop = false) (Loopable = true) Begin validate subconstruct (type "Factor") Testing variant LiteralInteger (Loop = false) (Loopable = false) Validated token "1" Success (variant "LiteralInteger") End validate subconstruct (variant "LiteralInteger") Determining need to loop construct of type MultiplicationPriorityOperator Testing operator MultiplicationPriorityOperator::Division Failed to validate token "+". Expected "DIVISION" Testing operator MultiplicationPriorityOperator::Multiplication Failed to validate token "+". Expected "MULTIPLICATION" Not looping Success (variant "FactorSequence") End validate subconstruct (variant "FactorSequence") Determining need to loop construct of type AdditionPriorityOperator Testing operator AdditionPriorityOperator::Addition Validated token "+" Looping Begin validate subconstruct (type "Term") Testing variant FactorSequence (Loop = true) (Loopable = true) Begin validate subconstruct (type "Factor") Testing variant LiteralInteger (Loop = false) (Loopable = false) Validated token "2" Success (variant "LiteralInteger") End validate subconstruct (variant "LiteralInteger") Determining need to loop construct of type MultiplicationPriorityOperator Testing operator MultiplicationPriorityOperator::Division Failed to validate token ";". Expected "DIVISION" Testing operator MultiplicationPriorityOperator::Multiplication Failed to validate token ";". Expected "MULTIPLICATION" Not looping Success (variant "FactorSequence") End validate subconstruct (variant "FactorSequence") Determining need to loop construct of type AdditionPriorityOperator Testing operator AdditionPriorityOperator::Addition Failed to validate token ";". Expected "ADDITION" Testing operator AdditionPriorityOperator::Subtraction Failed to validate token ";". Expected "NEGATION" Not looping Success (variant "TermSequence") End validate subconstruct (variant "TermSequence") Determining need to loop construct of type InequalityPriorityOperator Testing operator InequalityPriorityOperator::LessThan Failed to validate token ";". Expected "LESS_THAN" Testing operator InequalityPriorityOperator::GreaterThanOrEqualTo Failed to validate token ";". Expected "GREATER_THAN_OR_EQUAL_TO" Testing operator InequalityPriorityOperator::LessThanOrEqualTo Failed to validate token ";". Expected "LESS_THAN_OR_EQUAL_TO" Testing operator InequalityPriorityOperator::GreaterThan Failed to validate token ";". Expected "GREATER_THAN" Not looping Success (variant "AdditiveExpressionSequence") End validate subconstruct (variant "AdditiveExpressionSequence") Determining need to loop construct of type EqualityPriorityOperator Testing operator EqualityPriorityOperator::EqualTo Failed to validate token ";". Expected "EQUAL" Testing operator EqualityPriorityOperator::NotEqualTo Failed to validate token ";". Expected "NOT_EQUAL" Not looping Success (variant "RelationalExpressionSequence") End validate subconstruct (variant "RelationalExpressionSequence") Determining need to loop construct of type LogicalAndPriorityOperator Testing operator LogicalAndPriorityOperator::LogicalAnd Failed to validate token ";". Expected "LOGICAL_AND" Not looping Success (variant "EqualityExpressionSequence") End validate subconstruct (variant "EqualityExpressionSequence") Determining need to loop construct of type LogicalOrPriorityOperator Testing operator LogicalOrPriorityOperator::LogicalOr Failed to validate token ";". Expected "LOGICAL_OR" Not looping Success (variant "LogicalAndExpressionSequence") End validate subconstruct (variant "LogicalAndExpressionSequence") Success (variant "LogicalOrExpressionSequence") End validate subconstruct (variant "LogicalOrExpressionSequence") Validated token ";" Looping Determining need to loop construct of type Statement Testing Statement::StandaloneExpression Begin validate subconstruct (type "Expression") Testing variant VariableExpression (Loop = false) (Loopable = false) Begin validate subconstruct (type "VariableAssignment") Testing variant Variable (Loop = false) (Loopable = false) Failed to validate token "}". Expected "IDENTIFIER" Fail: no valid variants (variant "Variable") Subconstruct validation failed Fail: no valid variants (variant "VariableExpression") Testing variant LogicalOrExpressionSequence (Loop = false) (Loopable = false) Begin validate subconstruct (type "LogicalOrExpression") Testing variant LogicalAndExpressionSequence (Loop = false) (Loopable = false) Begin validate subconstruct (type "LogicalAndExpression") Testing variant EqualityExpressionSequence (Loop = false) (Loopable = false) Begin validate subconstruct (type "EqualityExpression") Testing variant RelationalExpressionSequence (Loop = false) (Loopable = false) Begin validate subconstruct (type "RelationalExpression") Testing variant AdditiveExpressionSequence (Loop = false) (Loopable = false) Begin validate subconstruct (type "AdditiveExpression") Testing variant TermSequence (Loop = false) (Loopable = true) Begin validate subconstruct (type "Term") Testing variant FactorSequence (Loop = false) (Loopable = true) Begin validate subconstruct (type "Factor") Testing variant LiteralInteger (Loop = false) (Loopable = false) Failed to validate token "}". Expected "LITERAL_INTEGER" Fail: no valid variants (variant "LiteralInteger") Testing variant ParenthesizedExpression (Loop = false) (Loopable = false) Failed to validate token "}". Expected "PARENTHESIS_OPEN" Fail: no valid variants (variant "ParenthesizedExpression") Testing variant StandaloneVariable (Loop = false) (Loopable = false) Begin validate subconstruct (type "VariableFactor") Testing variant Variable (Loop = false) (Loopable = false) Failed to validate token "}". Expected "IDENTIFIER" Fail: no valid variants (variant "Variable") Subconstruct validation failed Fail: no valid variants (variant "StandaloneVariable") Testing variant UnaryOperation (Loop = false) (Loopable = false) Begin validate subconstruct (type "UnaryOperator") Testing variant LogicalNegation (Loop = false) (Loopable = false) Failed to validate token "}". Expected "LOGICAL_NEGATION" Fail: no valid variants (variant "LogicalNegation") Testing variant BitwiseCompliment (Loop = false) (Loopable = false) Failed to validate token "}". Expected "BITWISE_COMPLIMENT" Fail: no valid variants (variant "BitwiseCompliment") Testing variant Negation (Loop = false) (Loopable = false) Failed to validate token "}". Expected "NEGATION" Fail: no valid variants (variant "Negation") Subconstruct validation failed Fail: no valid variants (variant "UnaryOperation") Subconstruct validation failed Fail: no valid variants (variant "FactorSequence") Subconstruct validation failed Fail: no valid variants (variant "TermSequence") Subconstruct validation failed Fail: no valid variants (variant "AdditiveExpressionSequence") Subconstruct validation failed Fail: no valid variants (variant "RelationalExpressionSequence") Subconstruct validation failed Fail: no valid variants (variant "EqualityExpressionSequence") Subconstruct validation failed Fail: no valid variants (variant "LogicalAndExpressionSequence") Subconstruct validation failed Fail: no valid variants (variant "LogicalOrExpressionSequence") Subconstruct validation failed Testing Statement::DeclareVariable Begin validate subconstruct (type "VariableDeclaration") Testing variant Variable (Loop = false) (Loopable = false) Failed to validate token "}". Expected "INT" Fail: no valid variants (variant "Variable") Subconstruct validation failed Testing Statement::ReturnExpression Failed to validate token "}". Expected "RETURN" Not looping Success (variant "StatementSequence") End validate subconstruct (variant "StatementSequence") Validated token "}" Success (variant "Integer") End validate subconstruct (variant "Integer") Success