Commits

Michael Ludwig committed 222bb52

Remove detailed grammar package

  • Participants
  • Parent commits 22ae7af

Comments (0)

Files changed (62)

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/ArrayAccess.java

-package com.ferox.resource.shader.grammar;
-
-public class ArrayAccess implements PostfixExpression {
-    private final PostfixExpression array;
-    private final Expression index; // int_expression
-
-    public ArrayAccess(PostfixExpression array, Expression index) {
-        this.array = array;
-        this.index = index;
-    }
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/ArrayIdentifierDeclaration.java

-package com.ferox.resource.shader.grammar;
-
-public class ArrayIdentifierDeclaration implements SingleDeclaration {
-    private final FullySpecifiedType type;
-    private final String identifier;
-    private final ConstantExpression bracketExpression;
-
-    public ArrayIdentifierDeclaration(FullySpecifiedType type, String identifier,
-                                      ConstantExpression bracketExpression) {
-        this.type = type;
-        this.identifier = identifier;
-        this.bracketExpression = bracketExpression;
-    }
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/AssignmentExpression.java

-package com.ferox.resource.shader.grammar;
-
-public interface AssignmentExpression extends Expression {
-
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/AssignmentOperatorExpression.java

-package com.ferox.resource.shader.grammar;
-
-public class AssignmentOperatorExpression implements AssignmentExpression {
-    public static enum AssignmentOperator {
-        EQUAL,
-        MUL_ASSIGN,
-        DIV_ASSIGN,
-        MOD_ASSIGN,
-        ADD_ASSIGN,
-        SUB_ASSIGN
-        // FIXME insert logical and bitwise assignment operators
-    }
-
-    private final UnaryExpression lvalue;
-    private final AssignmentOperator operator;
-    private final AssignmentExpression rvalue;
-
-    public AssignmentOperatorExpression(UnaryExpression lvalue,
-                                        AssignmentOperator operator,
-                                        AssignmentExpression rvalue) {
-        this.lvalue = lvalue;
-        this.rvalue = rvalue;
-        this.operator = operator;
-    }
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/BinaryExpression.java

-package com.ferox.resource.shader.grammar;
-
-public interface BinaryExpression extends ConditionalExpression {
-
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/BinaryOperatorExpression.java

-package com.ferox.resource.shader.grammar;
-
-public class BinaryOperatorExpression implements BinaryExpression {
-    public static enum BinaryOperator {
-        MULTIPLY,
-        DIVIDE,
-        MODULO,
-        ADD,
-        SUBTRACT,
-        LEFT_SHIFT,
-        RIGHT_SHIFT,
-        LESS_THAN,
-        GREATER_THAN,
-        LESS_THAN_OR_EQUAL,
-        GREATER_THAN_OR_EQUAL,
-        EQUAL,
-        NOT_EQUAL,
-        LOGICAL_AND,
-        LOGICAL_XOR,
-        LOGICAL_OR
-        // FIXME insert bitwise AND, XOR, and OR
-    }
-
-    private final BinaryExpression left;
-    private final BinaryOperator operator;
-    private final UnaryExpression right;
-
-    public BinaryOperatorExpression(BinaryExpression left, BinaryOperator operator,
-                                    UnaryExpression right) {
-        this.left = left;
-        this.right = right;
-        this.operator = operator;
-    }
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/BreakStatement.java

-package com.ferox.resource.shader.grammar;
-
-public class BreakStatement implements JumpStatement {
-
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/CompoundStatement.java

-package com.ferox.resource.shader.grammar;
-
-public class CompoundStatement implements Statement {
-    private final Statement[] statements;
-
-    public CompoundStatement(Statement... statements) {
-        this.statements = statements;
-    }
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/ConditionalExpression.java

-package com.ferox.resource.shader.grammar;
-
-public interface ConditionalExpression extends AssignmentExpression, ConstantExpression {
-
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/ConditionalSelectExpression.java

-package com.ferox.resource.shader.grammar;
-
-public class ConditionalSelectExpression implements ConditionalExpression {
-    private final BinaryExpression condition;
-    private final Expression onTrue;
-    private final ConditionalExpression onFalse;
-
-    public ConditionalSelectExpression(BinaryExpression condition, Expression onTrue,
-                                       ConditionalExpression onFalse) {
-        this.condition = condition;
-        this.onTrue = onTrue;
-        this.onFalse = onFalse;
-    }
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/Constant.java

-package com.ferox.resource.shader.grammar;
-
-public class Constant implements PrimaryExpression {
-    private final Object value;
-
-    public Constant(int value) {
-        this.value = Integer.valueOf(value);
-    }
-
-    public Constant(float value) {
-        this.value = Float.valueOf(value);
-    }
-
-    public Constant(boolean value) {
-        this.value = Boolean.valueOf(value);
-    }
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/ConstantExpression.java

-package com.ferox.resource.shader.grammar;
-
-public interface ConstantExpression {
-
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/ConstructorIdentifier.java

-package com.ferox.resource.shader.grammar;
-
-public interface ConstructorIdentifier extends FunctionIdentifier {
-
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/ContinueStatement.java

-package com.ferox.resource.shader.grammar;
-
-public class ContinueStatement implements JumpStatement {
-
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/Declaration.java

-package com.ferox.resource.shader.grammar;
-
-public interface Declaration extends ExternalDeclaration, SimpleStatement, ForLoopInitializer {
-
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/DiscardStatement.java

-package com.ferox.resource.shader.grammar;
-
-public class DiscardStatement implements JumpStatement {
-
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/EmptyExpression.java

-package com.ferox.resource.shader.grammar;
-
-public class EmptyExpression implements ConstantExpression {
-
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/Expression.java

-package com.ferox.resource.shader.grammar;
-
-public interface Expression extends SimpleStatement, WhileLoopCondition, ForLoopInitializer {
-
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/ExpressionList.java

-package com.ferox.resource.shader.grammar;
-
-public class ExpressionList implements Expression {
-    private final Expression first;
-    private final AssignmentExpression afterComma;
-
-    public ExpressionList(Expression first, AssignmentExpression afterComma) {
-        this.first = first;
-        this.afterComma = afterComma;
-    }
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/ExternalDeclaration.java

-package com.ferox.resource.shader.grammar;
-
-public interface ExternalDeclaration {
-
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/FieldSelection.java

-package com.ferox.resource.shader.grammar;
-
-public class FieldSelection implements PostfixExpression {
-    private final PostfixExpression variable;
-    private final String field;
-
-    public FieldSelection(PostfixExpression variable, String field) {
-        this.variable = variable;
-        this.field = field;
-    }
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/ForLoopInitializer.java

-package com.ferox.resource.shader.grammar;
-
-public interface ForLoopInitializer {
-
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/ForStatement.java

-package com.ferox.resource.shader.grammar;
-
-public class ForStatement implements IterationStatement {
-    private final ForLoopInitializer initStatement;
-    private final WhileLoopCondition condition; // nullable for no condition
-    private final Expression increment; // nullable for no increment
-    private final Statement body;
-
-    public ForStatement(ForLoopInitializer initStatement, WhileLoopCondition condition,
-                        Expression increment, Statement body) {
-        this.initStatement = initStatement;
-        this.condition = condition;
-        this.increment = increment;
-        this.body = body;
-    }
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/FullySpecifiedType.java

-package com.ferox.resource.shader.grammar;
-
-public class FullySpecifiedType implements SingleDeclaration {
-    public static enum TypeQualifier {
-        CONST,
-        // FIXME attribute and varying are deprecated and replaced by IN/OUT/INOUT
-        ATTRIBUTE,
-        VARYING,
-        // FIXME are uniforms really allowed in a function parameter list?
-        UNIFORM
-    }
-
-    private final TypeSpecifier type;
-    private final TypeQualifier qualifier; // nullable for unqualified type
-
-    public FullySpecifiedType(TypeQualifier qualifier, TypeSpecifier type) {
-        this.type = type;
-        this.qualifier = qualifier;
-    }
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/FunctionCall.java

-package com.ferox.resource.shader.grammar;
-
-public class FunctionCall implements PostfixExpression {
-    // this is a reasonable consolidation of the grammar for
-    // function calls with and without parameters
-    private final FunctionIdentifier identifier;
-    private final AssignmentExpression[] parameters;
-
-    public FunctionCall(FunctionIdentifier identifier, AssignmentExpression... parameters) {
-        this.identifier = identifier;
-        this.parameters = parameters;
-    }
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/FunctionDefinition.java

-package com.ferox.resource.shader.grammar;
-
-public class FunctionDefinition implements ExternalDeclaration {
-    private final FunctionPrototype prototype;
-    private final CompoundStatement body;
-
-    public FunctionDefinition(FunctionPrototype prototype, CompoundStatement body) {
-        this.prototype = prototype;
-        this.body = body;
-    }
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/FunctionIdentifier.java

-package com.ferox.resource.shader.grammar;
-
-public interface FunctionIdentifier {
-
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/FunctionNameIdentifier.java

-package com.ferox.resource.shader.grammar;
-
-public class FunctionNameIdentifier implements FunctionIdentifier {
-    private final String identifier;
-
-    public FunctionNameIdentifier(String identifier) {
-        this.identifier = identifier;
-    }
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/FunctionPrototype.java

-package com.ferox.resource.shader.grammar;
-
-public class FunctionPrototype implements Declaration {
-    private final FullySpecifiedType type;
-    private final ParameterDeclaration[] parameters;
-
-    public FunctionPrototype(FullySpecifiedType type, ParameterDeclaration... parameters) {
-        this.type = type;
-        this.parameters = parameters;
-    }
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/IdentifierDeclaration.java

-package com.ferox.resource.shader.grammar;
-
-public class IdentifierDeclaration implements SingleDeclaration {
-    private final FullySpecifiedType type;
-    private final String identifier;
-    private final AssignmentExpression initializer; // nullable for no initializer
-
-    public IdentifierDeclaration(FullySpecifiedType type, String identifier,
-                                 AssignmentExpression initializer) {
-        this.type = type;
-        this.identifier = identifier;
-        this.initializer = initializer;
-    }
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/InitArrayIdentifierList.java

-package com.ferox.resource.shader.grammar;
-
-public class InitArrayIdentifierList implements InitDeclaratorList {
-    private final InitDeclaratorList priorDeclarations;
-    private final String identifier;
-    private final ConstantExpression bracketExpression;
-
-    public InitArrayIdentifierList(InitDeclaratorList priorDeclarations,
-                                   String identifier, ConstantExpression bracketExpression) {
-        this.priorDeclarations = priorDeclarations;
-        this.identifier = identifier;
-        this.bracketExpression = bracketExpression;
-    }
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/InitDeclaratorList.java

-package com.ferox.resource.shader.grammar;
-
-public interface InitDeclaratorList extends Declaration {
-
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/InitIdentifierList.java

-package com.ferox.resource.shader.grammar;
-
-public class InitIdentifierList implements InitDeclaratorList {
-    private final InitDeclaratorList priorDeclarations;
-    private final String identifier;
-    private final AssignmentExpression initializer; // nullable for no initialization
-
-    public InitIdentifierList(InitDeclaratorList priorDeclarations, String identifier,
-                              AssignmentExpression initializer) {
-        this.priorDeclarations = priorDeclarations;
-        this.identifier = identifier;
-        this.initializer = initializer;
-    }
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/IterationStatement.java

-package com.ferox.resource.shader.grammar;
-
-public interface IterationStatement extends SimpleStatement {
-
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/JumpStatement.java

-package com.ferox.resource.shader.grammar;
-
-public interface JumpStatement extends SimpleStatement {
-
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/NestedExpression.java

-package com.ferox.resource.shader.grammar;
-
-// FIXME if we can remove this expression type, we can really consolidate the
-// expression hierarchy, since the nesting effectively allows any expression
-// to be used anywhere. The only down side is that the produced syntax requires
-// the parentheses to be in the proper places, and I could err on the side of
-// putting parentheses around everything but that gets really gross.
-//
-// If I don't just always do parens, then parentheses will need to be computed
-// to preserve the proper parsing given the precedence of the operators and
-// expression types.
-//
-// Perhaps (I need to be more awake to know for sure) a solution is:
-//   make expressions comparable to each other
-//   each expression also has a left or right associativity
-//   then depending on its associativity and how it compares to any 
-//    child/referenced expressions it wraps the expression in parens
-//    (effectively downgrading the ordering of the child to nested expression)
-//  I think this works pretty well for left-associative, but I don't know 
-//   for right associative ones (like assignment and conditional expression)
-
-// So for left-associativity and precedence, we have the following example:
-// x + y * z, which creates the tree: 
-//   +
-// x   *
-//    y z
-//
-// but (x + y) * z is:
-//     *
-//   +   z
-//  x y
-//
-// so in the first case, the addition expression does not need to emit parens around
-//  the right expression because multiplication is higher precedence than addition
-// in the first case, the multiply expression does need to emit parens around the
-//  left expression because addition has lower precedence than multiplication
-//
-// if precedence(left) >= precedence(op) then no parens on left
-// if precedence(op) > precedence(right) then no parens on right
-//
-// for right associative, we reverse the comparisons
-//
-//
-// Now what do we do about the problems where some places expect a 'consant-epxression',
-// which has a higher precedence than the assignment expression. That means that
-// any assignment expression must be wrapped in parentheses, but we'd have to bake
-// this logic into the types that require constant expressions instead of 
-// full expressions
-public class NestedExpression implements PrimaryExpression {
-    private final Expression expression;
-
-    public NestedExpression(Expression expression) {
-        this.expression = expression;
-    }
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/ParameterDeclaration.java

-package com.ferox.resource.shader.grammar;
-
-import com.ferox.resource.shader.grammar.FullySpecifiedType.TypeQualifier;
-
-public class ParameterDeclaration {
-    public static enum ParameterQualifier {
-        IN,
-        OUT,
-        INOUT
-    }
-
-    // FIXME why doesn't this use a FullySpecifiedType?
-    private final TypeQualifier typeQualifier; // nullable for no qualifier
-    private final ParameterQualifier paramQualifier;
-
-    private final TypeSpecifier type;
-    private final String identifier; // nullable for unlabeled parameter
-    private final ConstantExpression bracketExpression; // nullable for non-array type
-
-    public ParameterDeclaration(TypeQualifier typeQualifier,
-                                ParameterQualifier paramQualifier, TypeSpecifier type,
-                                String identifier, ConstantExpression bracketExpression) {
-        this.typeQualifier = typeQualifier;
-        this.paramQualifier = paramQualifier;
-        this.type = type;
-        this.identifier = identifier;
-        this.bracketExpression = bracketExpression;
-    }
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/PostfixDecrement.java

-package com.ferox.resource.shader.grammar;
-
-public class PostfixDecrement implements PostfixExpression {
-    private final PostfixExpression expression;
-
-    public PostfixDecrement(PostfixExpression expression) {
-        this.expression = expression;
-    }
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/PostfixExpression.java

-package com.ferox.resource.shader.grammar;
-
-public interface PostfixExpression extends UnaryExpression {
-
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/PostfixIncrement.java

-package com.ferox.resource.shader.grammar;
-
-public class PostfixIncrement implements PostfixExpression {
-    private final PostfixExpression expression;
-
-    public PostfixIncrement(PostfixExpression expression) {
-        this.expression = expression;
-    }
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/PrefixDecrement.java

-package com.ferox.resource.shader.grammar;
-
-public class PrefixDecrement implements UnaryExpression {
-    private final UnaryExpression expression;
-
-    public PrefixDecrement(UnaryExpression expression) {
-        this.expression = expression;
-    }
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/PrefixIncrement.java

-package com.ferox.resource.shader.grammar;
-
-public class PrefixIncrement implements UnaryExpression {
-    private final UnaryExpression expression;
-
-    public PrefixIncrement(UnaryExpression expression) {
-        this.expression = expression;
-    }
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/PrimaryExpression.java

-package com.ferox.resource.shader.grammar;
-
-public interface PrimaryExpression extends PostfixExpression {
-
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/PrimitiveConstructorIdentifier.java

-package com.ferox.resource.shader.grammar;
-
-public enum PrimitiveConstructorIdentifier implements ConstructorIdentifier {
-    FLOAT,
-    INT,
-    BOOL,
-    VEC2,
-    VEC3,
-    VEC4,
-    BVEC2,
-    BVEC3,
-    BVEC4,
-    IVEC2,
-    IVEC3,
-    IVEC4,
-    MAt2,
-    MAT3,
-    MAT4
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/PrimitiveTypeSpecifier.java

-package com.ferox.resource.shader.grammar;
-
-public enum PrimitiveTypeSpecifier implements TypeSpecifier {
-    VOID,
-    FLOAT,
-    INT,
-    BOOL,
-    VEC2,
-    VEC3,
-    VEC4,
-    BVEC2,
-    BVEC3,
-    BVEC4,
-    IVEC2,
-    IVEC3,
-    IVEc4,
-    MAT2,
-    MAT3,
-    MAT4,
-    SAMPLER1D,
-    SAMPLER2D,
-    SAMPLER3D,
-    SAMPLERCUBE,
-    SAMPLER1DSHADOW,
-    SAMPLER2DSHADOW
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/ReturnStatement.java

-package com.ferox.resource.shader.grammar;
-
-public class ReturnStatement implements JumpStatement {
-    private final Expression expression; // nullable for a void return
-
-    public ReturnStatement(Expression expression) {
-        this.expression = expression;
-    }
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/SelectionStatement.java

-package com.ferox.resource.shader.grammar;
-
-public class SelectionStatement implements SimpleStatement {
-    private final Expression condition;
-    private final Statement onTrue;
-    private final Statement onFalse; // null for no else branch
-
-    public SelectionStatement(Expression condition, Statement onTrue, Statement onFalse) {
-        this.condition = condition;
-        this.onTrue = onTrue;
-        this.onFalse = onFalse;
-    }
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/SimpleStatement.java

-package com.ferox.resource.shader.grammar;
-
-public interface SimpleStatement {
-
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/SingleDeclaration.java

-package com.ferox.resource.shader.grammar;
-
-public interface SingleDeclaration extends Declaration {
-
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/Statement.java

-package com.ferox.resource.shader.grammar;
-
-public interface Statement {
-
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/StructDeclaration.java

-package com.ferox.resource.shader.grammar;
-
-public class StructDeclaration {
-    private final TypeSpecifier type;
-    private final StructDeclarator[] identifiers;
-
-    public StructDeclaration(TypeSpecifier type, StructDeclarator... identifiers) {
-        this.type = type;
-        this.identifiers = identifiers;
-    }
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/StructDeclarator.java

-package com.ferox.resource.shader.grammar;
-
-public class StructDeclarator {
-    private final String identifier;
-    private final ConstantExpression bracketExpression; // null for non-array type
-
-    public StructDeclarator(String identifier, ConstantExpression bracketExpression) {
-        this.identifier = identifier;
-        this.bracketExpression = bracketExpression;
-    }
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/StructSpecifier.java

-package com.ferox.resource.shader.grammar;
-
-public class StructSpecifier implements TypeSpecifier {
-    private final String identifier;
-    private final StructDeclaration[] definition;
-
-    public StructSpecifier(String identifier, StructDeclaration... definition) {
-        this.identifier = identifier;
-        this.definition = definition;
-    }
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/TranslationUnit.java

-package com.ferox.resource.shader.grammar;
-
-public class TranslationUnit {
-    private final ExternalDeclaration[] declarations;
-
-    public TranslationUnit(ExternalDeclaration... declarations) {
-        this.declarations = declarations;
-    }
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/TypeNameIdentifier.java

-package com.ferox.resource.shader.grammar;
-
-public class TypeNameIdentifier implements ConstructorIdentifier, TypeSpecifier {
-    private final String name;
-
-    public TypeNameIdentifier(String name) {
-        this.name = name;
-    }
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/TypeSpecifier.java

-package com.ferox.resource.shader.grammar;
-
-public interface TypeSpecifier {
-
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/UnaryExpression.java

-package com.ferox.resource.shader.grammar;
-
-public interface UnaryExpression extends BinaryExpression {
-
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/UnaryOperatorExpression.java

-package com.ferox.resource.shader.grammar;
-
-public class UnaryOperatorExpression implements UnaryExpression {
-    public static enum UnaryOperator {
-        PLUS,
-        DASH,
-        BANG,
-        TILDE /* reserved */
-    }
-
-    private final UnaryOperator operator;
-    private final UnaryExpression expression;
-
-    public UnaryOperatorExpression(UnaryOperator operator, UnaryExpression expression) {
-        this.operator = operator;
-        this.expression = expression;
-    }
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/VariableIdentifier.java

-package com.ferox.resource.shader.grammar;
-
-public class VariableIdentifier implements PrimaryExpression {
-    private final String identifier;
-
-    public VariableIdentifier(String identifier) {
-        this.identifier = identifier;
-    }
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/WhileLoopCondition.java

-package com.ferox.resource.shader.grammar;
-
-public interface WhileLoopCondition {
-
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/WhileLoopInitializer.java

-package com.ferox.resource.shader.grammar;
-
-public class WhileLoopInitializer implements WhileLoopCondition {
-    private final FullySpecifiedType type;
-    private final String identifier;
-    private final AssignmentExpression initializer;
-
-    public WhileLoopInitializer(FullySpecifiedType type, String identifier,
-                                AssignmentExpression initializer) {
-        this.type = type;
-        this.identifier = identifier;
-        this.initializer = initializer;
-    }
-}

File ferox-renderer/ferox-renderer-api/src/main/java/com/ferox/resource/shader/grammar/WhileStatement.java

-package com.ferox.resource.shader.grammar;
-
-public class WhileStatement implements IterationStatement {
-    private final WhileLoopCondition condition;
-    private final Statement body;
-
-    public WhileStatement(WhileLoopCondition condition, Statement body) {
-        this.condition = condition;
-        this.body = body;
-    }
-}