Is there any way to give instructions directly to the parser and lexar from the java code level? If not, how could one go about doing this at all?
The issue is that I want to have the parser evaluate a variable, back up, then assign the value of that variable as an Object name. Like this:
String s = "text";
SomeClass (s) = new SomeClass();
parser reads–> ok, s evaluates to be “text”…
parser backtracks, while holding “text” in memory and assigns “text” as the name of the new instance of SomeClass, such that one can now do this:
text.callSomeMethod();
I need to do this because I have to instantiate an arbitrary number of objects of SomeClass. Each one has to have a unique name, and it would be ideal to do something like this:
while (someArbitrarySet.hasNext()) {
String s = "token" + Math.random();
SomeClass (s) = new SomeClass();
(s).callSomeMethod();
}
I hope this makes sense…
What you’re asking for is what some languages call MACROS. They’re also sometimes known as preprocessor definitions, or simply “defines”.
A decision was made to not have includes and macros and the like in Java because it introduces additional code maintenance concerns that the designers concluded was going to cause code that would not have been in the style they wanted.
However, just because it’s not built into the compiler doesn’t mean you couldn’t add it to your build script.
As part of your build, you copy all files to a src-comp directory, and as you do, replace your tokens as they’re defined.
I don’t recommend doing it, but that doesn’t mean it isn’t possible.