package com.laytonsmith.core.constructs; import com.laytonsmith.annotations.breakable; /** * * */ public class CSymbol extends Construct { String conversion = ""; Token.TType symbolType; public CSymbol(String symbol, Token.TType type, Target target) { super(symbol, ConstructType.SYMBOL, target); symbolType = type; switch (symbolType) { case CONCAT: conversion = "concat"; break; case PLUS: conversion = "add"; break; case MINUS: conversion = "subtract"; break; case MULTIPLICATION: conversion = "multiply"; break; case DIVISION: conversion = "divide"; break; case EQUALS: conversion = "equals"; break; case NOT_EQUALS: conversion = "nequals"; break; case STRICT_EQUALS: conversion = "sequals"; break; case STRICT_NOT_EQUALS: conversion = "snequals"; break; case LT: conversion = "lt"; break; case GT: conversion = "gt"; break; case LTE: conversion = "lte"; break; case GTE: conversion = "gte"; break; case LOGICAL_AND: conversion = "and"; break; case LOGICAL_OR: conversion = "or"; break; case DEFAULT_AND: conversion = "dand"; break; case DEFAULT_OR: conversion = "dor"; break; case LOGICAL_NOT: conversion = "not"; break; // case BIT_AND: // conversion = "bit_and"; // break; // case BIT_OR: // conversion = "bit_or"; // break; // case BIT_XOR: // conversion = "bit_xor"; // break; case MODULO: conversion = "mod"; break; case INCREMENT: conversion = "inc"; break; case DECREMENT: conversion = "dec"; break; case EXPONENTIAL: conversion = "pow"; break; default: conversion = ""; break; } } public String convert() { return conversion; } public boolean isPostfix() { return symbolType.isPostfix(); } public boolean isUnary() { return symbolType.isUnary(); } public boolean isMultaplicative() { return symbolType.isMultaplicative(); } public boolean isAdditive() { return symbolType.isAdditive(); } public boolean isRelational() { return symbolType.isRelational(); } public boolean isEquality() { return symbolType.isEquality(); } // public boolean isBitwiseAnd() { // return symbolType.isBitwiseAnd(); // } // // public boolean isBitwiseXor() { // return symbolType.isBitwiseXor(); // } // // public boolean isBitwiseOr() { // return symbolType.isBitwiseOr(); // } public boolean isLogicalAnd() { return symbolType.isLogicalAnd(); } public boolean isLogicalOr() { return symbolType.isLogicalOr(); } public boolean isDefaultAnd() { return symbolType.isDefaultAnd(); } public boolean isDefaultOr() { return symbolType.isDefaultOr(); } @Override public boolean isDynamic() { //It gets turned into a function, but only after the __autoconcat__ features take over, //which essentially removes all symbols. return false; } public boolean isExponential() { return symbolType.isExponential(); } public boolean isAssignment() { return symbolType.isAssignment(); } public String convertAssignment() { switch(symbolType){ case PLUS_ASSIGNMENT: return "add"; case MINUS_ASSIGNMENT: return "subtract"; case MULTIPLICATION_ASSIGNMENT: return "multiply"; case DIVISION_ASSIGNMENT: return "divide"; case CONCAT_ASSIGNMENT: return "concat"; default: return null; } } }