Есть ли какая-либо передовая практика при работе с АСТ? У меня есть анализируемое выражение AST. ConstantExpression, BinaryExpression и т. Д. Я хочу заполнить GUI-диалог информацией из AST, и именно здесь я немного смущен, потому что мой код становится довольно грязным.Работа с выражением АСТ
Пример:
expression = "Var1 > 10 AND Var2 < 20"
Я хочу, чтобы заполнить два текстовых полей со значением 10 соответственно. 20 из АСТ. Что я сейчас делаю, это рекурсивный метод, который проверяет правильные типы дочерних выражений (с .Net Is-operator) и действует соответственно, а код действительно «вонючий» :)
Есть ли какой-либо шаблон дизайна, например, посетитель или такой, что делает его несколько более легким/удобочитаемым/поддерживаемым?
Относительно вашего комментария. Я не уверен, что понимаю трудность, которую вы описываете. Какие выражения не допускаются? Во всяком случае, я хочу сказать, что два описанных apporaches могут использоваться для всех видов манипуляций/валидаций, которые вы хотите выполнять на дереве. Вам просто нужно добавить новый метод (в первом подходе) с соответствующими параметрами или определить новый подкласс посетителя (во втором подходе) с соответствующими полями. –
Вот что я имею в виду. exp1 = "1 + 1" exp2 = "Var1> 10 AND Var2 <20" С вашим решением я бы получил два целых числа из обоих выражений, но первое выражение не соответствует типу для моего приложения. GUI im population может работать только с определенными типами выражений НЕ каждый тип выражения, содержащего (в дереве) два целых числа. – Marcus
Непонятно, что вы конкретно пытаетесь выполнить. –