You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

271 lines
3.0 KiB

6 months ago
export class Program {
constructor() {
this.body = [];
this.isProgram = true;
}
}
export class VariableDeclaration {
constructor( type, name, value = null, next = null, immutable = false ) {
this.type = type;
this.name = name;
this.value = value;
this.next = next;
this.immutable = immutable;
this.isVariableDeclaration = true;
}
}
export class Uniform {
constructor( type, name ) {
this.type = type;
this.name = name;
this.isUniform = true;
}
}
export class Varying {
constructor( type, name ) {
this.type = type;
this.name = name;
this.isVarying = true;
}
}
export class FunctionParameter {
constructor( type, name, qualifier = null, immutable = true ) {
this.type = type;
this.name = name;
this.qualifier = qualifier;
this.immutable = immutable;
this.isFunctionParameter = true;
}
}
export class FunctionDeclaration {
constructor( type, name, params = [] ) {
this.type = type;
this.name = name;
this.params = params;
this.body = [];
this.isFunctionDeclaration = true;
}
}
export class Expression {
constructor( expression ) {
this.expression = expression;
this.isExpression = true;
}
}
export class Ternary {
constructor( cond, left, right ) {
this.cond = cond;
this.left = left;
this.right = right;
this.isTernary = true;
}
}
export class Operator {
constructor( type, left, right ) {
this.type = type;
this.left = left;
this.right = right;
this.isOperator = true;
}
}
export class Unary {
constructor( type, expression, after = false ) {
this.type = type;
this.expression = expression;
this.after = after;
this.isUnary = true;
}
}
export class Number {
constructor( value, type = 'float' ) {
this.type = type;
this.value = value;
this.isNumber = true;
}
}
export class String {
constructor( value ) {
this.value = value;
this.isString = true;
}
}
export class Conditional {
constructor( cond = null ) {
this.cond = cond;
this.body = [];
this.elseConditional = null;
this.isConditional = true;
}
}
export class FunctionCall {
constructor( name, params = [] ) {
this.name = name;
this.params = params;
this.isFunctionCall = true;
}
}
export class Return {
constructor( value ) {
this.value = value;
this.isReturn = true;
}
}
export class Accessor {
constructor( property ) {
this.property = property;
this.isAccessor = true;
}
}
export class StaticElement {
constructor( value ) {
this.value = value;
this.isStaticElement = true;
}
}
export class DynamicElement {
constructor( value ) {
this.value = value;
this.isDynamicElement = true;
}
}
export class AccessorElements {
constructor( property, elements = [] ) {
this.property = property;
this.elements = elements;
this.isAccessorElements = true;
}
}
export class For {
constructor( initialization, condition, afterthought ) {
this.initialization = initialization;
this.condition = condition;
this.afterthought = afterthought;
this.body = [];
this.isFor = true;
}
}