2013-06-08 1 views
0

Есть ли способ, которым мы можем изменить входной поток во время разбора с использованием Javacc? Я использую случай, когда я хочу заменить токен на строку во время разбора, а затем проанализировать заменяемую строку.Как изменить входной поток в Javacc?

Например,

define var $x="2*2"; 
evaluate $x; 

Таким образом, во время синтаксического анализа, когда я сталкиваюсь с какой-либо маркер, который начинается с $ как $ х в этом случае, я должен сделать замену инлайн, а затем разобрать его, как правило, используя JavaCC.

Таким образом, из приведенного выше примера, это означает, что я должен быть разбор следующего заявления после замены встроенной:

evaluate "2*2"; 

Возможен ли это в JavaCC? Можем ли мы изменить входной поток, чтобы при просмотре специального токена я добавлял его встроенную замену входному потоку?

Спасибо.

ответ

1

Обычный способ сделать это - сделать препроцессорный проход перед началом синтаксического анализа - вот как обычно работают компиляторы C. Если вы должны это сделать во время разбора, вам нужно будет использовать настраиваемый поток ввода - см. Документацию о том, как это сделать. И вы должны быть очень осторожны в отношении взгляда.