Class JsEvaluator

java.lang.Object
xyz.cofe.cxel.js.JsEvaluator

public class JsEvaluator
extends java.lang.Object
Парсинг js выражений.

Лексический анализатор

Литералы

  • Все литералы относящиеся к числам (потомки NumberTok) всегда возвращают значение типа Double

Литералы и типы данных

Согласно mozilla есть
  • Шесть типов данных, которые являются примитивами:
    • Boolean. true и false.
    • null. Специальное ключевое слово, обозначающее нулевое или «пустое» значение. Поскольку JavaScript чувствителен к регистру, null не то же самое, что Null, NULL или любой другой вариант.
    • undefined. Свойство глобального объекта; переменная, не имеющая присвоенного значения, обладает типом undefined.
    • Number. 42 или 3.14159.
    • String. "Howdy".
    • Symbol (ECMAScript 6)
  • и Object

Синтаксический анализатор

Приоритет бинарных операций

Приоритет операций согласно Mozilla
Тип оператора Операторы
свойство объекта . []
вызов, создание экземпляра объекта () new
отрицание, инкремент ! ~ - + ++ -- typeof void delete
умножение, деление * / %
сложение, вычитание + -
побитовый сдвиг << >> >>>
сравнение, вхождение < <= > >= in instanceof
равенство == != === !==
битовое-и &
битовое-исключающее-или ^
битовое-или вертикальная черта ׀
логическое-и &&
логическое-или две вертикальная черты ׀׀
условный (тернарный) оператор ?:
присваивание = += -= *= /= %= <<= >>= >>>= &= ^= ׀=
запятая ,
  • Field Summary

    Fields 
    Modifier and Type Field Description
    protected EvalContext context  
    protected JsLexer lexer
    лексический анализатор
    protected JsParser parser
    Парсер / синтаксичесий анализ
  • Constructor Summary

    Constructors 
    Constructor Description
    JsEvaluator()  
  • Method Summary

    Modifier and Type Method Description
    JsEvaluator configure​(java.util.function.Consumer<JsEvaluator> conf)
    Конфигурация
    EvalContext context()
    Возвращает контекст интерпретации
    JsEvaluator context​(java.util.function.Consumer<EvalContext> conf)
    Указывает контекст
    java.lang.Object eval​(java.lang.String source)
    Интерпретация
    java.lang.Object eval​(AST ast)
    Интерпретация AST дерева
    JsLexer lexer()
    Лексер / Лексический анализ
    AST parse​(java.lang.String source)
    Парсинг исходников
    AST parse​(java.lang.String source, int from)
    Парсинг исходников
    AST parse​(java.util.List<? extends xyz.cofe.text.tparse.CToken> tokens)
    Парсинг исходников
    JsParser parser()
    Парсер на лексемы
    java.util.List<? extends xyz.cofe.text.tparse.CToken> tokens​(java.lang.String source, int from)
    Получение списка лексем
    xyz.cofe.text.tparse.TPointer tpointer​(java.lang.String source, int from)
    Строит указатель по лексемам

    Methods inherited from class java.lang.Object

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

  • Constructor Details

  • Method Details

    • configure

      public JsEvaluator configure​(java.util.function.Consumer<JsEvaluator> conf)
      Конфигурация
      Parameters:
      conf - конфигурация
      Returns:
      SELF ссылка
    • lexer

      public JsLexer lexer()
      Лексер / Лексический анализ
      Returns:
      лексический анализатор
    • parser

      public JsParser parser()
      Парсер на лексемы
      Returns:
      Парсер / синтаксичесий анализатор
    • tokens

      public java.util.List<? extends xyz.cofe.text.tparse.CToken> tokens​(java.lang.String source, int from)
      Получение списка лексем
      Parameters:
      source - исходный код
      from - с какой позиции (индекса) начать анализ
      Returns:
      лексемы
    • tpointer

      public xyz.cofe.text.tparse.TPointer tpointer​(java.lang.String source, int from)
      Строит указатель по лексемам
      Parameters:
      source - исходный код
      from - с какой позиции (индекса) начать анализ
      Returns:
      указатель на лексемы
    • parse

      public AST parse​(java.lang.String source, int from)
      Парсинг исходников
      Parameters:
      source - исходники
      from - позиция в исходном тексте
      Returns:
      AST дерево
    • parse

      public AST parse​(java.util.List<? extends xyz.cofe.text.tparse.CToken> tokens)
      Парсинг исходников
      Parameters:
      tokens - Лексемы
      Returns:
      AST дерево
    • parse

      public AST parse​(java.lang.String source)
      Парсинг исходников
      Parameters:
      source - исходники
      Returns:
      AST дерево
    • context

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

      public JsEvaluator context​(java.util.function.Consumer<EvalContext> conf)
      Указывает контекст
      Parameters:
      conf - конфигурация контекст
      Returns:
      SELF ссылка
    • eval

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

      public java.lang.Object eval​(java.lang.String source)
      Интерпретация
      Parameters:
      source - исходный текст
      Returns:
      результат интерпретации