Привет, я хочу сделать что-то вроде метаязыка, который анализируется и кэшируется, чтобы быть более производительным. Поэтому мне нужно иметь возможность разбирать метакод на объекты или массивы.
Идентификатор начала: {
Конечный идентификатор: }
Вы можете перемещаться по объектам с помощью точки (.), но вы также можете выполнять арифметические/логические/реляционные операции.
Вот пример того, как выглядит метаязык:
- {mySelf.mother.job.jobName}
или вложенный
- {mySelf.{myObj.{keys["ObjProps"][0]}.personAttribute.first}.size}
или с операциями
- {obj.val * (otherObj.intVal + myObj.longVal) == 1200}
или более логично
- {obj.condition == !myObj.otherCondition}
Думаю, многие из вас уже поняли, чего я хочу. На данный момент я могу выполнять только простые операции (без вложения и только с двумя значениями), но вложение для получения значений с динамическими именами свойств работает нормально. также конкатенация текста работает нормально
например «Привет, {myObj.name}! Как дела, {myObj.type}?».
Также возможность сделать короче, если нравится (состояние)? (true-case): (false-case) было бы неплохо, но я понятия не имею, как разобрать все это. В настоящее время я работаю с циклами с некоторыми регулярными выражениями, но, вероятно, было бы быстрее и даже удобнее, если бы у меня было больше регулярных выражений.
Так может ли кто-нибудь дать мне несколько советов или помочь мне? Возможно, посетите сайт проекта, чтобы понять, для чего мне это нужно: http://sourceforge.net/projects/blazeframework/
Заранее спасибо!