Ich arbeite gerade an meiner Masterarbeit. Dabei soll es darum gehen, Quellcodedateien in verschiedenen Programmiersprachen einlesen zu koennen und daraus Softwaremetriken zu extrahieren. Moechte ich beispielsweise die Halstead-Metrik berechnen, so benoetige ich eine Unterscheidung zwischen Variablen bzw. Konstanten und Schluesselworten der Sprache.
Derzeit gehe ich wie folgt vor: ich lese die Datei (vorerst eine Java-Quellcodedatei) mit einem generierten Javaparser ein und klappere anschliessend den Tokenstream durch. Dann sammle ich alle Identifiers in eine Map. Nun ist mein Problem, dass sich darin sowohl Schluesselworte wie System, writeln, getAbsolutePath, etc. befinden als auch die gewuenschten Variablennamen (z.B. myString, c, i, etc.).
Wie kann ich nun am besten vorgehen, um die Schluesselworte von den Variablen zu unterscheiden? Eine Moeglichkeit waere natuerlich eine Datei anzulegen, in der saemtliche Java Schluesselworte und Methodenbezeichner abgelegt sind und diese auszufiltern. Das erscheint mir ein unmachbarer Aufwand zu sein. Gibt es auch eine Mioeglichkeit das jj-File insofern anzupassen, dass ich gleich beim Token erzeugen einen anderen Typ (kind) fuer Variablen und Konstanten ausgeben kann?
Derzeit gehe ich wie folgt vor: ich lese die Datei (vorerst eine Java-Quellcodedatei) mit einem generierten Javaparser ein und klappere anschliessend den Tokenstream durch. Dann sammle ich alle Identifiers in eine Map. Nun ist mein Problem, dass sich darin sowohl Schluesselworte wie System, writeln, getAbsolutePath, etc. befinden als auch die gewuenschten Variablennamen (z.B. myString, c, i, etc.).
Wie kann ich nun am besten vorgehen, um die Schluesselworte von den Variablen zu unterscheiden? Eine Moeglichkeit waere natuerlich eine Datei anzulegen, in der saemtliche Java Schluesselworte und Methodenbezeichner abgelegt sind und diese auszufiltern. Das erscheint mir ein unmachbarer Aufwand zu sein. Gibt es auch eine Mioeglichkeit das jj-File insofern anzupassen, dass ich gleich beim Token erzeugen einen anderen Typ (kind) fuer Variablen und Konstanten ausgeben kann?