public class TemplateParser extends Object
Правила
start ::= startAnyChar
| startCodeBegin
| startEscape
.
startAnyChar ::= startText start
| startText
.
startText ::= anyChar | blockBegin | blockEnd .
startCodeBegin ::= code start
| code
.
startEscape ::= escape start
| escape
.
code ::= codeBegin blockBody blockEnd .
blockBody ::= anyChar blockBody
| anyChar
| escape blockBody
| escape
| block blockBody
| block
.
block ::= blockBegin blockBody blockEnd .
Лексемы
Лексемы перечисле в порядке уменьшения приоритета
escape ::= \$ # интерпретирует как $
| \\ # интерпретирует как \
| \${ # интерпретирует как ${
.
codeBegin ::= ${ .
blockBegin ::= { .
blockEnd ::= } .
anyChar # любой символ кроме выше указанных лексем
| Modifier and Type | Class and Description |
|---|---|
protected class |
TemplateParser.Mapping<K,V> |
| Modifier and Type | Field and Description |
|---|---|
protected String[] |
blockBeginLexems |
protected String[] |
blockEndLexems |
protected String[] |
codeBeginLexems |
protected LinkedHashMap<String,String> |
currentEscapeRewriteMap |
protected String[] |
escapeLexems |
protected LinkedHashMap<String,String> |
escapeRewriteMap |
protected Func1<AstNode,Pointer<Token>> |
start_any |
protected Func1<AstNode,Pointer<Token>> |
start_code |
protected Func1<AstNode,Pointer<Token>> |
start_escape |
protected Map<String,Func1<AstNode,Pointer<Token>>> |
start_patterns |
| Constructor and Description |
|---|
TemplateParser() |
| Modifier and Type | Method and Description |
|---|---|
protected LinkedHashMap<String,String> |
createEscapeRewriteMap() |
<ResultType,EvalCode,EvalText> |
eval(AstNode tree,
Func1<EvalText,String> evalText,
Func1<EvalCode,String> evalCode,
Func0<ResultType> initResult,
Func2<ResultType,ResultType,EvalText> appendText,
Func2<ResultType,ResultType,EvalCode> appendCode)
Обход шаблона (AST дерева) и форматирование сообщения
|
Func0<String> |
evalAndPrint(AstNode tree,
Func1<String,String> evalCode)
Обход шаблона (AST дерева) и форматирование сообщения
|
Func0<String> |
evalAndPrint(AstNode tree,
Func1<String,String> evalText,
Func1<String,String> evalCode)
Обход шаблона (AST дерева) и форматирование сообщения
|
protected String[] |
getBlockBeginLexems() |
protected String[] |
getBlockEndLexems() |
protected String[] |
getCodeBeginLexems() |
protected String[] |
getEscapeLexems() |
protected LinkedHashMap<String,String> |
getEscapeRewriteMap() |
protected <K,V> TemplateParser.Mapping<K,V> |
map(K k,
V v) |
AstNode |
parse(String source)
Парсинг шаблона и формирование соответ AST дерева
|
protected AstNode |
start(Pointer<Token> ptr) |
protected LinkedHashMap<String,String> escapeRewriteMap
protected String[] codeBeginLexems
protected String[] escapeLexems
protected String[] blockBeginLexems
protected String[] blockEndLexems
protected LinkedHashMap<String,String> currentEscapeRewriteMap
protected LinkedHashMap<String,String> getEscapeRewriteMap()
protected LinkedHashMap<String,String> createEscapeRewriteMap()
protected String[] getCodeBeginLexems()
protected String[] getEscapeLexems()
protected String[] getBlockBeginLexems()
protected String[] getBlockEndLexems()
public <ResultType,EvalCode,EvalText> Func0<ResultType> eval(AstNode tree, Func1<EvalText,String> evalText, Func1<EvalCode,String> evalCode, Func0<ResultType> initResult, Func2<ResultType,ResultType,EvalText> appendText, Func2<ResultType,ResultType,EvalCode> appendCode)
ResultType - Результирующий тип данныхEvalCode - Тип данных в результате вычисления кода в внутри шаблонаEvalText - Тип данных в результате вычисления текста в внутри шаблонаtree - AST дерево шаблона (результат парсинга шаблона)evalText - функция вычисления текстаevalCode - функция вычисления кода (вставок в шаблон ${})initResult - функция начального результирующего значенияappendText - функция сумирования результирующего значения и текстаappendCode - функция сумирования результирующего значения и кодаpublic Func0<String> evalAndPrint(AstNode tree, Func1<String,String> evalCode)
tree - AST дерево шаблона (результат парсинга шаблона)evalCode - функция вычисления кода (вставок в шаблон ${})public Func0<String> evalAndPrint(AstNode tree, Func1<String,String> evalText, Func1<String,String> evalCode)
tree - AST дерево шаблона (результат парсинга шаблона)evalText - функция вычисления текстаevalCode - функция вычисления кода (вставок в шаблон ${})public AstNode parse(String source)
source - шаблонprotected <K,V> TemplateParser.Mapping<K,V> map(K k, V v)
Copyright © 2019. All rights reserved.