digitalmars.D - Is there any preprocessor scripting language?
- MarisaLovesUsAll (11/11) Aug 22 2014 I just want to write something like this:
- Kagamin (3/3) Aug 22 2014 You can try D parsing libraries:
- Kagamin (36/36) Aug 22 2014 Example:
- MarisaLovesUsAll (2/5) Aug 22 2014 Thanks a lot! It will be useful.
I just want to write something like this: #ololo script foreach(child; findAllChildrens()) { child.insert( static void doABarrelRoll() { } ); } #end Templates/mixins is not enough for me... maybe because of hands.dll error :)
Aug 22 2014
You can try D parsing libraries: http://forum.dlang.org/thread/jqwvudiwgiuprqcuaaoy forum.dlang.org they're believed to enable writing refactoring scripts.
Aug 22 2014
Example:
import std.lexer;
import std.d.lexer;
import std.array;
import std.stdio;
void main(string[] args)
{
File input = File(args[1]);
File output = args.length > 2 ? File(args[2]) : stdout;
ubyte[] inputBytes = uninitializedArray!(ubyte[])(input.size);
input.rawRead(inputBytes);
StringCache cache = StringCache(StringCache.defaultBucketCount);
LexerConfig config;
config.fileName = args[1];
config.stringBehavior = StringBehavior.source;
auto tokens = byToken(inputBytes, config, &cache).array;
foreach (i; 0 .. tokens.length)
{
switch (tokens[i].type)
{
case tok!"catch":
if (i + 1 < tokens.length && tokens[i + 1].type != tok!"(")
{
output.write("catch (Throwable)");
break;
}
else
goto default;
default:
output.write(tokens[i].text is null
? str(tokens[i].type)
: tokens[i].text);
break;
}
}
}
Aug 22 2014
On Friday, 22 August 2014 at 13:33:12 UTC, Kagamin wrote:You can try D parsing libraries: http://forum.dlang.org/thread/jqwvudiwgiuprqcuaaoy forum.dlang.org they're believed to enable writing refactoring scripts.Thanks a lot! It will be useful.
Aug 22 2014









"Kagamin" <spam here.lot> 