#include <stdio.h>
+#define yylloc _yylloc
+#include "grammar.h"
+#undef yylloc
+
+public enum TokenType
+{
+ identifier = IDENTIFIER,
+ constant = CONSTANT,
+ stringLiteral = STRING_LITERAL,
+ sizeOf = SIZEOF,
+ ptrOp = PTR_OP,
+ incOp = INC_OP,
+ decOp = DEC_OP,
+ leftOp = LEFT_OP,
+ rightOp = RIGHT_OP,
+ leOp = LE_OP,
+ geOp = GE_OP,
+ eqOp = EQ_OP,
+ neOp = NE_OP,
+ andOp = AND_OP,
+ orOp = OR_OP,
+ mulAssign = MUL_ASSIGN,
+ divAssign = DIV_ASSIGN,
+ modAssign = MOD_ASSIGN,
+ addAssign = ADD_ASSIGN,
+ subAssign = SUB_ASSIGN,
+ leftAssign = LEFT_ASSIGN,
+ rightAssign = RIGHT_ASSIGN,
+ andAssign = AND_ASSIGN,
+ xorAssign = XOR_ASSIGN,
+ orAssign = OR_ASSIGN,
+ typeName = TYPE_NAME,
+ _typedef = TYPEDEF,
+ _extern = EXTERN,
+ _static = STATIC,
+ _auto = AUTO,
+ _register = REGISTER,
+ _char = CHAR,
+ _short = SHORT,
+ _int = INT,
+ _uint = UINT,
+ _int64 = INT64,
+ _long = LONG,
+ _signed = SIGNED,
+ _unsigned = UNSIGNED,
+ _float = FLOAT,
+ _double = DOUBLE,
+ _const = CONST,
+ _volatile = VOLATILE,
+ _void = VOID,
+ _valist = VALIST,
+ _struct = STRUCT,
+ _union = UNION,
+ _enum = ENUM,
+ ellipsis = ELLIPSIS,
+ _case = CASE,
+ _default = DEFAULT,
+ _if = IF,
+ _switch = SWITCH,
+ _whilte = WHILE,
+ _do = DO,
+ _for = FOR,
+ _goto = GOTO,
+ _continue = CONTINUE,
+ _break = BREAK,
+ _return = RETURN,
+ ifx = IFX,
+ _else = ELSE,
+ _class = CLASS,
+ thisClass = THISCLASS,
+ className = CLASS_NAME,
+ _property = PROPERTY,
+ setProp = SETPROP,
+ getProp = GETPROP,
+ newOp = NEWOP,
+ _renew = RENEW,
+ _delete = DELETE,
+ _extDecl = EXT_DECL,
+ _extStorage = EXT_STORAGE,
+ _import = IMPORT,
+ _define = DEFINE,
+ _virtual = VIRTUAL,
+ attrib = ATTRIB,
+ _public = PUBLIC,
+ _priate = PRIVATE,
+ typedObject = TYPED_OBJECT,
+ anyObject = ANY_OBJECT,
+ _incref = _INCREF,
+ extension = EXTENSION,
+ ___asm = ASM,
+ _typeof = TYPEOF,
+ _watch = WATCH,
+ stopWatching = STOPWATCHING,
+ fireWatchers = FIREWATCHERS,
+ _watchable = WATCHABLE,
+ classDesigner = CLASS_DESIGNER,
+ classNoExpansion = CLASS_NO_EXPANSION,
+ classFixed = CLASS_FIXED,
+ isPropSet = ISPROPSET,
+ classDefaultProperty = CLASS_DEFAULT_PROPERTY,
+ propertyCategory = PROPERTY_CATEGORY,
+ classData = CLASS_DATA,
+ classProperty = CLASS_PROPERTY,
+ subClass = SUBCLASS,
+ nameSpace = NAMESPACE,
+ new0Op = NEW0OP,
+ renew0Op = RENEW0,
+ vaArg = VAARG,
+ dbTable = DBTABLE,
+ dbField = DBFIELD,
+ dbIndex = DBINDEX,
+ databaseOpen = DATABASE_OPEN,
+ alignOf = ALIGNOF,
+ attribDep = ATTRIB_DEP,
+ _attrib = __ATTRIB,
+ BOOL = BOOL,
+ _BOOL = _BOOL,
+ complex = _COMPLEX,
+ imaginary = _IMAGINARY,
+ _restrict = RESTRICT,
+ _thread = THREAD
+};
+
enum Order { ascending, descending };
public class DBTableDef : struct
File fileInput;
public void SetFileInput(File file) { fileInput = file; }
char * symbolsDir = null;
-public void SetSymbolsDir(char * s) {
+public void SetSymbolsDir(const char * s) {
delete symbolsDir;
symbolsDir = CopyString(s);
-} public char * GetSymbolsDir() { return symbolsDir ? symbolsDir : ""; }
-char * outputFile;
-public void SetOutputFile(char * s) { outputFile = s; } public char * GetOutputFile() { return outputFile; }
-char * sourceFile;
-public void SetSourceFile(char * s) { sourceFile = s; } public char * GetSourceFile() { return sourceFile; }
+} public const char * GetSymbolsDir() { return symbolsDir ? symbolsDir : ""; }
+const char * outputFile;
+public void SetOutputFile(const char * s) { outputFile = s; } public const char * GetOutputFile() { return outputFile; }
+const char * sourceFile;
+public void SetSourceFile(const char * s) { sourceFile = s; } public const char * GetSourceFile() { return sourceFile; }
+const char * i18nModuleName;
+public void SetI18nModuleName(const char * s) { i18nModuleName = s; } public const char * GetI18nModuleName() { return i18nModuleName; }
public void SetGlobalContext(Context context) { globalContext = context; } public Context GetGlobalContext() { return globalContext; }
public void SetTopContext(Context context) { topContext = context; } public Context GetTopContext() { return topContext; }
const char * escCharsQuoted = "\"()$";
#endif
bool quoting = false;
- char *o = output, *i = input, *l = input;
+ char *o = output;
+ const char *i = input, *l = input;
#ifdef __WIN32__
while(*l && !strchr(escChars, *l)) l++;
if(*l) quoting = true;
identifierExp, instanceExp, constantExp, stringExp, opExp,
bracketsExp, indexExp, callExp, memberExp, pointerExp, typeSizeExp,
castExp, conditionExp, newExp, renewExp, classSizeExp,
- dummyExp, dereferenceErrorExp, symbolErrorExp, classMemberSymbolErrorExp,
- structMemberSymbolErrorExp, memoryErrorExp, unknownErrorExp,
- noDebuggerErrorExp, debugStateErrorExp,
+ dummyExp, dereferenceErrorExp, symbolErrorExp,
+ memberSymbolErrorExp, memoryErrorExp, unknownErrorExp,
+ noDebuggerErrorExp,
extensionCompoundExp, classExp, classDataExp, new0Exp, renew0Exp,
dbopenExp, dbfieldExp, dbtableExp, dbindexExp, extensionExpressionExp, extensionInitializerExp,
- vaArgExp, arrayExp, typeAlignExp
+ vaArgExp, arrayExp, typeAlignExp,
+ memberPropertyErrorExp, functionCallErrorExp, divideBy0ErrorExp
};
public enum MemberType
TemplateArgument defaultArgument;
// For type parameters
- char * dataTypeString;
+ const char * dataTypeString;
Type baseType;
}
Identifier id;
OldList * list;
OldList * baseSpecs;
- OldList * definitions;
+ OldList/*<ClassDef>*/ * definitions;
bool addNameSpace;
Context ctx;
ExtDecl extDeclStruct;
};
Statement compound;
Instantiation instance;
- char * string;
+ struct
+ {
+ char * string;
+ bool intlString;
+ };
OldList * list;
struct
{
bool addedThis;
bool needCast;
bool thisPtr;
+ bool opDestType;
void Clear()
{
addedThis = false;
needCast = false;
thisPtr = false;
+ opDestType = false;
}
};
OldList * list;
};
bool isConstant;
+ Identifier id;
};
public class InitDeclarator : struct
Location loc;
char * command;
Expression expression;
+ Identifier symbolic;
};
public enum StmtType { labeledStmt, caseStmt, compoundStmt,
Statement setStmt;
Statement issetStmt;
Symbol symbol;
- bool conversion;
- bool isWatchable;
Expression category;
+ struct
+ {
+ bool conversion:1;
+ bool isWatchable:1;
+ bool isDBProp:1;
+ };
};
public class ClassDef : struct
OldList methods;
OldList properties;
bool itself;
- bool isRemote;
+ int isRemote;
};
public class FunctionImport : struct
voidType, charType, shortType, intType, int64Type, longType, floatType,
doubleType, classType, structType, unionType, functionType, arrayType, pointerType,
ellipsisType, enumType, methodType, vaListType, /*typedObjectType, anyObjectType, classPointerType, */ dummyType,
- subClassType, templateType, thisClassType, intPtrType, intSizeType
+ subClassType, templateType, thisClassType, intPtrType, intSizeType, _BoolType
};
public class Type : struct
bool attrStdcall:1;
bool declaredWithStruct:1;
bool typedByReference:1; // Originally typed by reference, regardless of class type
+ bool casted:1;
+ // TODO: Add _Complex & _Imaginary support
+ // bool complex:1, imaginary:1;
- char * OnGetString(char * tempString, void * fieldData, bool * needClass)
+ const char * OnGetString(char * tempString, void * fieldData, bool * needClass)
{
Type type = (Type)this;
tempString[0] = '\0';
#include <stdarg.h>
-void Compiler_Error(char * format, ...)
+void Compiler_Error(const char * format, ...)
{
if(inCompiler)
{
*/
#ifdef _DEBUG
if(!yylloc.start.line)
- printf("");
+ printf("no line");
#endif
//printf("(%d, %d) : error: ", yylloc.start.line, yylloc.start.charPos);
int numWarnings;
public int GetNumWarnings() { return numWarnings; }
-void Compiler_Warning(char * format, ...)
+void Compiler_Warning(const char * format, ...)
{
if(inCompiler)
{
va_list args;
char string[10000];
+ char fileName[MAX_FILENAME];
if(yylloc.start.included)
{
+ String include = GetIncludeFileFromID(yylloc.start.included);
GetWorkingDir(string, sizeof(string));
- PathCat(string, GetIncludeFileFromID(yylloc.start.included));
+ PathCat(string, include);
}
else
{
PathCat(string, sourceFile);
}
+ // Skip these warnings from MinGW-w64 GCC 4.8 in intrin-impl.h
+ GetLastDirectory(string, fileName);
+ if(!strcmp(fileName, "intrin-impl.h")) return;
+
printf(string);
//printf("(%d, %d) : warning: ", yylloc.start.line, yylloc.start.charPos);
bool parseError;
bool skipErrors;
-int yyerror(char * s)
+int yyerror()
{
if(!skipErrors)
{