Class Eval

java.lang.Object
xyz.cofe.cxel.eval.Eval

public class Eval
extends java.lang.Object
Непосредственная интерпретация AST.

Интерпретация AST узлов напряму зависит от контекста (EvalContext).

  • Field Summary

    Fields 
    Modifier and Type Field Description
    protected EvalContext context
    контекст интерпретации
  • Constructor Summary

    Constructors 
    Constructor Description
    Eval()
    Конструктор по умолчанию
    Eval​(EvalContext ctx)
    Конструктор
  • Method Summary

    Modifier and Type Method Description
    protected java.lang.Object call​(CallAST ast)
    Интерпретация вызова метода
    Eval configure​(java.util.function.Consumer<Eval> conf)
    Конфигурация экземпляра
    EvalContext context()
    Возвращает контекс интерпретации
    java.lang.Object eval​(AST ast)
    Интерпретация ast дерева
    protected java.lang.Object index​(IndexAST ast)
    Интерпретация доступа к элементу массива / списка.
    protected java.lang.Object list​(ListAST listAst)
    Интерпретация создания списка
    protected java.lang.Object map​(MapAST mast)
    Интерпретация создания карты
    protected java.lang.Object operator​(BinaryOpAST op)
    Интерпретация бинарного оператора
    protected java.lang.Object operator​(UnaryOpAST op)
    Интерпретация унарного оператора
    protected java.lang.Object parenthes​(ParenthesAST ast)  
    protected java.lang.Object property​(PropertyAST ast)
    Интерпретация чтения свойства объекта
    protected java.lang.Object variable​(VarRefAST ast)
    Интерпретация чтения переменной

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • context

      protected final EvalContext context
      контекст интерпретации
  • Constructor Details

    • Eval

      public Eval()
      Конструктор по умолчанию
    • Eval

      public Eval​(EvalContext ctx)
      Конструктор
      Parameters:
      ctx - начальный контекст или null
  • Method Details

    • configure

      public Eval configure​(java.util.function.Consumer<Eval> conf)
      Конфигурация экземпляра
      Parameters:
      conf - конфигурация
      Returns:
      self ссылка
    • context

      public EvalContext context()
      Возвращает контекс интерпретации
      Returns:
      контекст интерпретации
    • eval

      public java.lang.Object eval​(AST ast)
      Интерпретация ast дерева
      Parameters:
      ast - дерево
      Returns:
      результат
    • parenthes

      protected java.lang.Object parenthes​(ParenthesAST ast)
    • operator

      protected java.lang.Object operator​(UnaryOpAST op)
      Интерпретация унарного оператора
      Parameters:
      op - AST узел
      Returns:
      результат интерпретации, см EvalContext.call(java.lang.String, java.util.List<java.lang.Object>)
    • operator

      protected java.lang.Object operator​(BinaryOpAST op)
      Интерпретация бинарного оператора
      Parameters:
      op - AST узел,
      Returns:
      результат интерпретации, см EvalContext.call(java.lang.String, java.util.List<java.lang.Object>)
    • variable

      protected java.lang.Object variable​(VarRefAST ast)
      Интерпретация чтения переменной
      Parameters:
      ast - AST узел
      Returns:
      значение переменной, см EvalContext.read(java.lang.String)
    • property

      protected java.lang.Object property​(PropertyAST ast)
      Интерпретация чтения свойства объекта
      Parameters:
      ast - AST узел
      Returns:
      значение свойства, см EvalContext.get(java.lang.Object, java.lang.String)
    • call

      protected java.lang.Object call​(CallAST ast)
      Интерпретация вызова метода
      Parameters:
      ast - AST узел
      Returns:
      результат вызова, см EvalContext.call(java.lang.String, java.util.List<java.lang.Object>)
    • index

      protected java.lang.Object index​(IndexAST ast)
      Интерпретация доступа к элементу массива / списка.
      Parameters:
      ast - AST узел доступа к элементу
      Returns:
      значение см EvalContext.getAt(java.lang.Object, java.lang.Object)
    • list

      protected java.lang.Object list​(ListAST listAst)
      Интерпретация создания списка
      Parameters:
      listAst - констукция списка
      Returns:
      список
    • map

      protected java.lang.Object map​(MapAST mast)
      Интерпретация создания карты
      Parameters:
      mast - конструкция карты
      Returns:
      карта