2015-11-30 7 views
0

Я пытаюсь создать компилятор упрощенного языка, и я хочу знать, как хранить метаинформацию, такую ​​как номер строки в моем узле. Это позволит мне сделать пошаговую интерпретацию. Поэтому мне нужно найти строку текущей инструкции в конкретном исходном тексте из узла инструкции.Как сохранить номер строки в узле с помощью JJTree JavaCC

Может кто-нибудь помочь мне с этой проблемой?

спасибо заранее.

ответ

1

Сделайте класс SourceCoords, чтобы сохранить требуемую информацию.

Добавить поле в класс SimpleNode

private SourceCoords myCoords ; 
    public void setCoords(SourceCoords toSet) { myCoords = toSet ; } 
    public SourceCoords getCoords() { return myCoords ; } 

В опциях добавить

NODE_SCOPE_HOOK=true; 

В классе парсера добавить следующие объявления

void jjtreeOpenNodeScope(Node n) { 
    ((SimpleNode)n).setCoords(new SourceCoords(file, getToken(1).beginLine)) ; 
} 
void jjtreeCloseNodeScope(Node n) { 
}