#include "jade.h"
/*
* generate-keywords
*
* Jade program to generate Jade Keywords.txt and Prototypes.txt files
*
* Copyright 2018, Armando I. Rivera
*
* License: MIT
*
* Compile with: g++ -std=c++11 -O2 -s generate-keywords.cc -o generate-keywords
*/
SUB jadeKeywordProto(STRING srcFile,STRING query, STRARRAY& sarray) BEGIN
REGQUERY term(query);
STRING src(LOADFILE$(srcFile));
std::sregex_token_iterator it(src.begin(), src.end(), term,2);
WHILE ( it != std::sregex_token_iterator() ) BEGIN
IF ( NOT it->str().empty() && it->str() != " " ) THEN
sarray.push_back(it->str());
ENDIF
it++;
WEND
END
MAIN
STRARRAY KEYWORDS,PROTOTYPES;
jadeKeywordProto("runtime.inc", "(FUNCTION|SUB) (.+\\)) BEGIN", PROTOTYPES);
jadeKeywordProto("header.inc", "(#define\\s+|typedef .+ )(\\w+\\$|\\w+)", KEYWORDS);
jadeKeywordProto("runtime.inc", "(FUNCTION .+ |SUB|SUB )(\\w+|\\w+\\$) \\(.+ BEGIN", KEYWORDS);
OUTFILE keyFile("KEYWORDS.txt");
FOR (VAR item IN KEYWORDS) BEGIN
keyFile << item << std::endl;
END
OUTFILE protoFile("PROTOTYPES.txt");
FOR (VAR item IN PROTOTYPES) BEGIN
protoFile << item << std::endl;
END
ENDMAIN