Я пытаюсь определить, является ли правая часть присваивания возможным шестнадцатеричным значением, а не другой ссылкой на переменную. так что например
myvariable = 2
a = 4
/* the c reference does not exist therefore the user may mean hex C
add in a quickfix to change to 0xc
*/
b = c
/* The user most probably means a hex number therefore add in a quickfix for
converting it to 0xc1234 */
d = c1234
Таким образом, правая часть может быть либо (a-f), либо (az) (az|0-9|_)+, что фактически является идентификатором. Для этого есть быстрое исправление, когда переменная не существует, в нем говорится «изменить на любую другую существующую переменную». Есть ли способ переопределить это и добавить дополнительную опцию?
РЕДАКТИРОВАТЬ: я продвинулся вперед и сделал свою собственную проверку, которая проверяет в цикле while, есть ли ссылка следующим образом:
try{
while(variable != null) {
variable = variable.reference
}
catch(Exception e) {
error("No such reference exists",
....
)
}
который выдает исключение при доступе к variable.reference, поскольку переменная имеет значение null. Однако я не могу получить имя ссылки с правой стороны. Например:
c = 1
a = x
Затем при доступе к ссылке x я получаю нулевое значение, и я не знаю, как получить имя «x». Кажется, что xtext уже понял и разрешил ссылки, и я не могу найти способ получить имя ссылки (не когда она разрешена)
Есть ли способ получить ссылку на имя переменной (до ее разрешения)?