Package xyz.cofe.cxel.js
Class JsEvaluator
java.lang.Object
xyz.cofe.cxel.js.JsEvaluator
public class JsEvaluator
extends java.lang.Object
Парсинг js выражений.
Лексический анализатор
Литералы
Приоритет бинарных операций
Приоритет операций согласно Mozilla
Лексический анализатор
Литералы
-
Все литералы относящиеся к числам (потомки
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
-
Constructor Summary
Constructors Constructor Description JsEvaluator() -
Method Summary
Modifier and Type Method Description JsEvaluatorconfigure(java.util.function.Consumer<JsEvaluator> conf)КонфигурацияEvalContextcontext()Возвращает контекст интерпретацииJsEvaluatorcontext(java.util.function.Consumer<EvalContext> conf)Указывает контекстjava.lang.Objecteval(java.lang.String source)Интерпретацияjava.lang.Objecteval(AST ast)Интерпретация AST дереваJsLexerlexer()Лексер / Лексический анализASTparse(java.lang.String source)Парсинг исходниковASTparse(java.lang.String source, int from)Парсинг исходниковASTparse(java.util.List<? extends xyz.cofe.text.tparse.CToken> tokens)Парсинг исходниковJsParserparser()Парсер на лексемыjava.util.List<? extends xyz.cofe.text.tparse.CToken>tokens(java.lang.String source, int from)Получение списка лексемxyz.cofe.text.tparse.TPointertpointer(java.lang.String source, int from)Строит указатель по лексемам
-
Field Details
-
Constructor Details
-
JsEvaluator
public JsEvaluator()
-
-
Method Details
-
configure
Конфигурация- Parameters:
conf- конфигурация- Returns:
- SELF ссылка
-
lexer
Лексер / Лексический анализ- Returns:
- лексический анализатор
-
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
Парсинг исходников- Parameters:
source- исходникиfrom- позиция в исходном тексте- Returns:
- AST дерево
-
parse
Парсинг исходников- Parameters:
tokens- Лексемы- Returns:
- AST дерево
-
parse
Парсинг исходников- Parameters:
source- исходники- Returns:
- AST дерево
-
context
Возвращает контекст интерпретации- Returns:
- контекст
-
context
Указывает контекст- Parameters:
conf- конфигурация контекст- Returns:
- SELF ссылка
-
eval
Интерпретация AST дерева- Parameters:
ast- дерево- Returns:
- результат интерпретации
-
eval
public java.lang.Object eval(java.lang.String source)Интерпретация- Parameters:
source- исходный текст- Returns:
- результат интерпретации
-