public class Expresion extends java.lang.Object implements Token
Modifier and Type | Class and Description |
---|---|
static class |
Expresion.ERROR
valores de código de error
|
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
AUTHOR
Autor
|
static java.lang.String |
DOC_URL
URL de la documentación online
|
static java.lang.String |
EOL
End Of Line del sistema
|
static java.lang.String |
LIBNAME
nombre librería
|
static Texto |
nulo
valor de texto pseudo-nulo
|
static java.lang.String |
VERSION
versión de JME
|
Constructor and Description |
---|
Expresion(java.util.List<Token> tokens)
Crea una expresión a partir de una lista de Tokens.
|
Expresion(java.lang.String expresion)
Parsea la expresión a partir de una cadena
|
Expresion(java.lang.String expresion,
java.lang.String nombre)
Parsea la expresión a partir de una cadena y asigna nombre
|
Expresion(java.lang.String expresion,
java.lang.String nombre,
java.lang.String descripcion)
Parsea la expresión a partir de una cadena y asigna nombre y descripción
|
Modifier and Type | Method and Description |
---|---|
Expresion |
borrarVariable(java.lang.String nombre)
Borra una determinada variable del mapa de variables.
|
Expresion |
borrarVariables()
Borra el mapa de variables de la expresión.
|
static java.lang.String |
cambiarBase(java.lang.String x,
int oriBase,
int destBase,
int maxDecimal)
Cambiar nº flotante de base
|
static Token |
castStringToToken(java.lang.String valor)
Devuelve un terminal o una expresión a partir de una entrada JME válida
|
java.lang.String |
entrada()
Devuelve la cadena de entrada de la expresión,
que se corresponde con la forma en la que se
debe introducir la expresión para ser una
expresión JME válida
|
Terminal |
evaluar()
Evalua la expresión
|
static Terminal |
evaluar(java.lang.String expresion)
Evaluación directa de cadena sin asignación de variables
|
Booleano |
evaluarABooleano()
Evalua la expresión y hace casting al tipo Booleano
|
Complejo |
evaluarAComplejo()
Evalua la expresión y hace casting al tipo Complejo
|
Diccionario |
evaluarADiccionario()
Evalua la expresión y hace casting al tipo Diccionario
|
EnteroGrande |
evaluarAEnteroGrande()
Evalua la expresión y hace casting al tipo EnteroGrande
|
Numero |
evaluarANumero()
Evalua la expresión y hace casting al tipo Numero
|
RealDoble |
evaluarARealDoble()
Evalua la expresión y hace casting al tipo RealDoble
|
RealGrande |
evaluarARealGrande()
Evalua la expresión y hace casting al tipo RealGrande
|
Texto |
evaluarATexto()
Evalua la expresión y hace casting al tipo Texto
|
VectorEvaluado |
evaluarAVector()
Evalua la expresión y hace casting al tipo VectorEvaluado
|
static java.util.HashMap<java.lang.String,Terminal> |
getConstantes()
Devuelve el mapa de constantes predefinidas de JME
|
java.lang.String |
getDescripcion()
Descripción de la expresión
|
static java.util.HashMap<java.lang.String,Funcion> |
getFunciones()
Devuelve el mapa de funciones de JME
|
static java.util.List<FuncionDefinidaPorUsuario> |
getFuncionesUsuario()
Obtener las funciones de usuario
|
java.lang.String[] |
getIdentificadores()
Devuelve todos los identificadores de la expresión
sin un orden determinado
|
java.lang.String[] |
getIdentificadoresDeclarados(boolean flag)
Devuelve los identificadores para los que existe una
variable asignada, o al contrario, sin orden determinado
|
java.lang.String[] |
getIdentificadoresOrden()
Devuelve todos los identificadores de la expresión
en orden lexicográfico
|
java.lang.String |
getNombre()
Nombre de la expresión
|
java.util.List<Token> |
getNpi()
Devuelve la forma postfija de la cadena de entrada
|
static java.util.List<Operador> |
getOperacionesUsuario()
Obtener las operaciones de usuario
|
static java.util.HashMap<java.lang.String,Operador> |
getOperadores()
Devuelve el mapa de operadores de JME
|
java.util.List<Token> |
getTokens()
Devuelve la cadena de entrada descompuesta en tokens
|
java.util.HashMap<java.lang.String,Token> |
getVariables()
Devuelve el mapa de variables de la expresión
|
static boolean |
isMultiplicacionImplicita()
Comprueba si está establecida la multiplicación implícita
en el análisis léxico
|
static void |
main(java.lang.String[] args)
Permite usar Expresion como calculadora en consola o entrar en modo REPL
|
static void |
nuevaConstante(java.lang.String nombre,
Terminal valor)
Añade una nueva constante predefinida a JME
|
static void |
nuevaFuncion(Funcion f)
Establece la nueva función para JME
|
static FuncionDefinidaPorUsuario |
nuevaFuncion(java.lang.String declaracion)
Introduce una función definida por el usuario en el mapa de funciones mediante declaración.
|
static FuncionDefinidaPorUsuario |
nuevaFuncion(java.lang.String declaracion,
java.lang.String descripcion)
Introduce una función definida por el usuario en el mapa de funciones mediante declaración.
|
static void |
nuevaOperacion(Operador op)
Establece una nueva operación para JME
|
static Operador |
nuevaOperacion(java.lang.String declaracion) |
static Operador |
nuevaOperacion(java.lang.String declaracion,
java.lang.String descripcion) |
static void |
quitarConstante(java.lang.String nombre)
Elimina una constante
|
static void |
quitarFuncion(java.lang.String f)
Elimina una función de JME
|
static void |
quitarFuncionesUsuario()
Elimina todas las funciones de usuario del mapa de funciones
|
static void |
quitarOperacion(java.lang.String op)
Elimina una operación de JME
|
static void |
quitarOperacionesUsuario() |
Expresion |
setConstante(java.lang.String nombre,
java.math.BigDecimal bigdec)
Establece la constante a un RealGrande representado por un BigDecimal
|
Expresion |
setConstante(java.lang.String nombre,
java.math.BigInteger bigint)
Establece la constante a un EnteroGrande representado por un BigInteger
|
Expresion |
setConstante(java.lang.String nombre,
boolean bool)
Establece la constante a un Booleano representado por un boolean
|
Expresion |
setConstante(java.lang.String nombre,
double doble)
Establece la constante a un RealDoble representado por un double
|
Expresion |
setConstante(java.lang.String nombre,
double re,
double im)
Establece la constante a un Complejo representado binomialmente
|
Expresion |
setConstante(java.lang.String nombre,
java.lang.String expresion)
Establece la constante a la expresión representada por la cadena.
|
Expresion |
setConstante(java.lang.String nombre,
Token... elementos)
Establece una constante vector a partir de tokens individuales.
|
Expresion |
setConstante(java.lang.String nombre,
Token valor)
Establece un valor general para una constante
Nota: por comodidad y eficiencia no se controla
el hecho de que se añadan tokens no válidos.
|
Expresion |
setDescripcion(java.lang.String descripcion)
Asignar descripción a la expresión
|
static void |
setMultiplicacionImplicita(boolean flag)
Establece la multiplicación implícita en el análisis léxico
|
Expresion |
setNombre(java.lang.String nombre)
Asignar nombre a la expresión
|
Expresion |
setVariable(java.lang.String nombre,
java.math.BigDecimal bigdec)
Establece la variable a un RealGrande representado por un BigDecimal
|
Expresion |
setVariable(java.lang.String nombre,
java.math.BigInteger bigint)
Establece la variable a un EnteroGrande representado por un BigInteger
|
Expresion |
setVariable(java.lang.String nombre,
boolean bool)
Establece la variable a un Booleano representado por un boolean
|
Expresion |
setVariable(java.lang.String nombre,
double doble)
Establece la variable a un RealDoble representado por un double
|
Expresion |
setVariable(java.lang.String nombre,
double re,
double im)
Establece la variable a un Complejo representado binómicamente
|
Expresion |
setVariable(java.lang.String nombre,
java.lang.String expresion)
Establece la variable a la expresión representada por la cadena.
|
Expresion |
setVariable(java.lang.String nombre,
Token... elementos)
Establece una variable vector a partir de tokens individuales.
|
Expresion |
setVariable(java.lang.String nombre,
Token valor)
Establece un valor general para una variable.
|
Expresion |
setVariables(java.util.HashMap<java.lang.String,Token> variables)
Establece externamente el mapa de variables de la expresión
|
Expresion |
setVariables(java.lang.Object... pares)
Establece varias variables a la vez a partir de pares
<nombre_var>,<valor> . |
Expresion |
setVariableTexto(java.lang.String nombre,
java.lang.String texto)
Establece la variable a un Texto representado por una cadena
|
java.lang.String |
toString()
Devuelve una representación de la expresión
|
public static final java.lang.String LIBNAME
public static final java.lang.String VERSION
public static final java.lang.String AUTHOR
public static final java.lang.String DOC_URL
public static java.lang.String EOL
public static Texto nulo
public Expresion(java.lang.String expresion) throws ExpresionException
expresion
- cadena con la expresión matemática JMEExpresionException
- error léxico o sintácticopublic Expresion(java.lang.String expresion, java.lang.String nombre) throws ExpresionException
expresion
- cadena con la expresión matemática JMEnombre
- nombre asignado a la expresiónExpresionException
- error léxico o sintácticopublic Expresion(java.lang.String expresion, java.lang.String nombre, java.lang.String descripcion) throws ExpresionException
expresion
- cadena con la expresión matemática JMEnombre
- nombre asignado a la expresióndescripcion
- descripción de la expresiónExpresionException
- error léxico o sintácticopublic Expresion(java.util.List<Token> tokens) throws ExpresionException
tokens
- lista de tokensExpresionException
- error léxico o sintácticopublic Terminal evaluar() throws ExpresionException
ExpresionException
- error al evaluarpublic RealDoble evaluarARealDoble() throws ConversionException, ExpresionException
ConversionException
- valor devuelto no RealDobleExpresionException
- error al evaluarpublic Complejo evaluarAComplejo() throws ConversionException, ExpresionException
ConversionException
- valor devuelto no ComplejoExpresionException
- error al evaluarpublic EnteroGrande evaluarAEnteroGrande() throws ConversionException, ExpresionException
ConversionException
- valor devuelto no EnteroGrandeExpresionException
- error al evaluarpublic RealGrande evaluarARealGrande() throws ConversionException, ExpresionException
ConversionException
- valor devuelto no RealGrandeExpresionException
- error al evaluarpublic Numero evaluarANumero() throws ConversionException, ExpresionException
ConversionException
- valor devuelto no NumeroExpresionException
- error al evaluarpublic VectorEvaluado evaluarAVector() throws ConversionException, ExpresionException
ConversionException
- valor devuelto no VectorExpresionException
- error al evaluarpublic Booleano evaluarABooleano() throws ConversionException, ExpresionException
ConversionException
- valor devuelto no BooleanoExpresionException
- error al evaluarpublic Texto evaluarATexto() throws ConversionException, ExpresionException
ConversionException
- valor devuelto no TextoExpresionException
- error al evaluarpublic Diccionario evaluarADiccionario() throws ConversionException, ExpresionException
ConversionException
- valor devuelto no DiccionarioExpresionException
- error al evaluarpublic static Terminal evaluar(java.lang.String expresion) throws ExpresionException
expresion
- expresión a evaluarExpresionException
- error al evaluarpublic java.lang.String getNombre()
public Expresion setNombre(java.lang.String nombre)
nombre
- a asignar a la expresiónpublic java.lang.String getDescripcion()
public Expresion setDescripcion(java.lang.String descripcion)
descripcion
- a asignar a la expresiónpublic static Token castStringToToken(java.lang.String valor)
valor
- cadena que representa a un terminal o a una expresiónnull
si la expresión es incorrecta. Terminal o Expresion
en caso contrariopublic java.util.List<Token> getTokens()
public java.util.List<Token> getNpi()
public static java.util.HashMap<java.lang.String,Operador> getOperadores()
public static java.util.HashMap<java.lang.String,Funcion> getFunciones()
public static java.util.HashMap<java.lang.String,Terminal> getConstantes()
public java.lang.String[] getIdentificadores()
public java.lang.String[] getIdentificadoresOrden()
public java.lang.String[] getIdentificadoresDeclarados(boolean flag)
flag
- si es true, devuelve los identificadores
con variable asignada, si es false los que nopublic java.util.HashMap<java.lang.String,Token> getVariables()
public Expresion borrarVariables()
public Expresion borrarVariable(java.lang.String nombre)
nombre
- el nombre de la variablepublic Expresion setVariables(java.util.HashMap<java.lang.String,Token> variables)
variables
- mapa de variablespublic Expresion setVariables(java.lang.Object... pares) throws java.lang.ArrayIndexOutOfBoundsException
<nombre_var>,<valor>
.pares
- pares separados por comas <nombre_var>,<valor>
java.lang.ArrayIndexOutOfBoundsException
- nº de parámetros no parpublic Expresion setVariable(java.lang.String nombre, Token valor)
nombre
- nombre de la variablevalor
- token asignadopublic Expresion setVariable(java.lang.String nombre, java.lang.String expresion)
nombre
- nombre de la variableexpresion
- cadena con expresiónpublic Expresion setVariable(java.lang.String nombre, double doble)
nombre
- nombre de la variabledoble
- valor double asignadopublic Expresion setVariable(java.lang.String nombre, double re, double im)
nombre
- nombre de la variablere
- parte realim
- parte imaginariapublic Expresion setVariable(java.lang.String nombre, java.math.BigInteger bigint)
nombre
- nombre de la variablebigint
- valor BigInteger asignadopublic Expresion setVariable(java.lang.String nombre, java.math.BigDecimal bigdec)
nombre
- nombre de la variablebigdec
- valor BigDecimal asignadopublic Expresion setVariable(java.lang.String nombre, boolean bool)
nombre
- nombre de la variablebool
- valor boolean asignadopublic Expresion setVariableTexto(java.lang.String nombre, java.lang.String texto)
nombre
- nombre de la variabletexto
- cadenapublic Expresion setVariable(java.lang.String nombre, Token... elementos)
nombre
- nombre de la variableelementos
- tokens para formar el vectorpublic Expresion setConstante(java.lang.String nombre, Token valor)
nombre
- nombre de la constantevalor
- valor token asignadopublic Expresion setConstante(java.lang.String nombre, java.lang.String expresion)
nombre
- nombre de la constanteexpresion
- cadena con expresiónpublic Expresion setConstante(java.lang.String nombre, double doble)
nombre
- nombre de la constantedoble
- valor double asignadopublic Expresion setConstante(java.lang.String nombre, double re, double im)
nombre
- nombre de la constantere
- parte realim
- parte imaginariapublic Expresion setConstante(java.lang.String nombre, java.math.BigInteger bigint)
nombre
- nombre de la constantebigint
- valor BigInteger asignadopublic Expresion setConstante(java.lang.String nombre, java.math.BigDecimal bigdec)
nombre
- nombre de la constantebigdec
- valor BigDecimal asignadopublic Expresion setConstante(java.lang.String nombre, boolean bool)
nombre
- nombre de la constantebool
- valor boolean asignadopublic Expresion setConstante(java.lang.String nombre, Token... elementos)
nombre
- nombre de la constanteelementos
- tokens para formar el vectorpublic static void nuevaOperacion(Operador op)
op
- nueva operaciónpublic static void quitarOperacion(java.lang.String op)
op
- operación a eliminarpublic static void nuevaFuncion(Funcion f)
f
- nueva funciónpublic static void quitarFuncion(java.lang.String f)
f
- función a eliminarpublic static FuncionDefinidaPorUsuario nuevaFuncion(java.lang.String declaracion) throws ExpresionException
declaracion
- declaración de la función ExpresionException
public static FuncionDefinidaPorUsuario nuevaFuncion(java.lang.String declaracion, java.lang.String descripcion) throws ExpresionException
declaracion
- declaración de la función <def_funcion> ::= <nombre_funcion>(<variable>[,<variable>]*):=<expresion_jme>
descripcion
- comentario breve de la funciónExpresionException
public static void quitarFuncionesUsuario()
public static java.util.List<FuncionDefinidaPorUsuario> getFuncionesUsuario()
public static Operador nuevaOperacion(java.lang.String declaracion, java.lang.String descripcion) throws ExpresionException
ExpresionException
public static Operador nuevaOperacion(java.lang.String declaracion) throws ExpresionException
ExpresionException
public static void quitarOperacionesUsuario()
public static java.util.List<Operador> getOperacionesUsuario()
public static void nuevaConstante(java.lang.String nombre, Terminal valor)
nombre
- nombre de la constantevalor
- valor de la constantepublic static void quitarConstante(java.lang.String nombre)
nombre
- nombre de la constante a eliminarpublic java.lang.String entrada()
public java.lang.String toString()
public static boolean isMultiplicacionImplicita()
public static void setMultiplicacionImplicita(boolean flag)
flag
- true para efectuar multiplicación implícitapublic static java.lang.String cambiarBase(java.lang.String x, int oriBase, int destBase, int maxDecimal) throws ExpresionException
x
- flotante en forma de cadena válidaoriBase
- base inicialdestBase
- base finalmaxDecimal
- máximo nº de decimalesExpresionException
public static void main(java.lang.String[] args)