#line 2291 "lpsrc/flx_config.pak"
import os
execfile("config"+os.sep+"config.py")
flx_keywords = [
("all", "ALL"),
("and", "AND"),
("as", "AS"),
("assert", "ASSERT"),
("body", "BODY"),
("call", "CALL"),
("case", "CASE"),
("caseno", "CASENO"),
("class", "CLASS"),
("code", "CODE"),
("comment", "COMMENT_KEYWORD"),
("const", "CONST"),
("cclass", "CCLASS"),
("cstruct", "CSTRUCT"),
("ctor", "CTOR"),
("ctypes", "CTYPES"),
("def", "DEF"),
("do", "DO"),
("done", "DONE"),
("elif", "ELIF"),
("else", "ELSE"),
("endif", "ENDIF"),
("endmatch", "ENDMATCH"),
("enum", "ENUM"),
("expect", "EXPECT"),
("export", "EXPORT"),
("for", "FOR"),
("forget", "FORGET"),
("fork", "FORK"),
("functor", "FUNCTOR"),
("fun", "FUNCTION"),
("goto", "GOTO"),
("header", "HEADER"),
("if", "IF"),
("include","INCLUDE"),
("incomplete", "INCOMPLETE"),
("inf", "INF"),
("in", "IN"),
("is", "IS"),
("isin", "ISIN"),
("inherit", "INHERIT"),
("inline", "INLINE"),
("jump", "JUMP"),
("let", "LET"),
("loop", "LOOP"),
("lval", "LVAL"),
("macro", "MACRO"),
("match", "MATCH"),
("module", "MODULE"),
("NaN", "NAN"),
("new", "NEW"),
("noexpand", "NOEXPAND"),
("noinline", "NOINLINE"),
("nonterm", "NONTERM"),
("noreturn", "NORETURN"),
("not", "NOT"),
("obj", "OBJECT"),
("of", "OF"),
("open","OPEN"),
("or", "OR"),
("parse", "PARSE"),
("pod", "POD"),
("private", "PRIVATE"),
("proc", "PROCEDURE"),
("property", "PROPERTY"),
("public", "PUBLIC"),
("publish", "PUBLISH"),
("regexp", "REGEXP"),
("reglex", "REGLEX"),
("regmatch", "REGMATCH"),
("rename", "RENAME"),
("requires", "REQUIRES"),
("return", "RETURN"),
("struct", "STRUCT"),
("the", "THE"),
("then", "THEN"),
("todo", "TODO"),
("to", "TO"),
("typedef", "TYPEDEF"),
("typematch", "TYPEMATCH"),
("type", "TYPE"),
("union", "UNION"),
("use","USE"),
("val", "VAL"),
("var", "VAR"),
("when", "WHEN"),
("whilst", "WHILST"),
("with", "WITH"),
("until", "UNTIL"),
("_", "UNDERSCORE"),
("_gc_pointer", "GC_POINTER"),
("_svc", "SVC"),
]
flx_1_char_syms = [
("DOLLAR","$"),
("QUEST","?"),
("EXCLAMATION","!"),
("LPAR","("),
("RPAR",")"),
("LSQB","["),
("RSQB","]"),
("LBRACE","{"),
("RBRACE","}"),
("COLON",":"),
("COMMA",","),
("SEMI",";"),
("PLUS","+"),
("MINUS","-"),
("STAR","*"),
("SLASH","/"),
("VBAR","|"),
("AMPER","&"),
("LESS","<"),
("GREATER",">"),
("EQUAL","="),
("DOT","."),
("PERCENT","%"),
("BACKQUOTE","`"),
("TILDE","~"),
("CIRCUMFLEX","^"),
]
flx_2_char_syms = [
("ANDLESS","&<"),
("ANDGREATER","&>"),
("EQEQUAL","=="),
("NOTEQUAL","!="),
("LESSEQUAL","<="),
("GREATEREQUAL",">="),
("LEFTSHIFT","<<"),
("RIGHTSHIFT",">>"),
("STARSTAR","**"),
("LESSCOLON","<:"),
("COLONGREATER",":>"),
("DOTDOT",".."),
("COLONCOLON","::"),
("PLUSPLUS","++"),
("MINUSMINUS","--"),
("PLUSEQUAL","+="),
("MINUSEQUAL","-="),
("STAREQUAL","*="),
("SLASHEQUAL","/="),
("PERCENTEQUAL","%="),
("CARETEQUAL","^="),
("VBAREQUAL","|="),
("AMPEREQUAL","&="),
("TILDEEQUAL","~="),
("COLONEQUAL",":="),
("RIGHTARROW","->"),
("EQRIGHTARROW","=>"),
("LEFTARROW","<-"),
("LSQANGLE","[<"),
("RSQANGLE",">]"),
("LSQBAR","[|"),
("RSQBAR","|]"),
("AMPERAMPER","&&"),
("VBARVBAR","||"),
("SLOSHAMPER","\\\\&"),
("SLOSHVBAR","\\\\|"),
("SLOSHCIRCUMFLEX","\\\\|"),
]
flx_3_char_syms = [
("LEFTSHIFTEQUAL","<<="),
("RIGHTSHIFTEQUAL",">>="),
("LEFTRIGHTARROW","<->"),
("ANDEQEQUAL","&=="),
("ANDNOTEQUAL","&!="),
("ANDLESSEQUAL","&<="),
("ANDGREATEREQUAL","&>="),
("DOTDOTDOT","..."),
]
rmap = {}
tmap = {
# addressing
"byte" : "unsigned char",
"size" : "size_t",
"cvaddress" : "void const volatile*",
"vaddress" : "void volatile*",
"caddress" : "void const*",
"address" : "void *",
"offset" : "ptrdiff_t",
#characters
"char" : "char",
"wchar" : "wchar_t",
#signed integers
"tiny" : "signed char",
"short" : "short",
"int" : "int",
"long" : "long",
#unsigned integers
"utiny" : "unsigned char",
"ushort" : "unsigned short",
"uint" : "unsigned int",
"ulong" : "unsigned long",
#floating
"float" : "float",
"double" : "double",
"ldouble" : "long double"
}
if TARGET_CXX.options.HAVE_COMPLEX:
tmap["imaginary"]="float _Imaginary"
tmap["dimaginary"]="double _Imaginary"
tmap["limaginary"]="long double _Imaginary"
tmap["complex" ]="float _Complex"
tmap["dcomplex"]="double _Complex"
tmap["lcomplex"]="long double _Complex"
rmap["imaginary" ]="c99_complex_h"
rmap["dimaginary" ]="c99_complex_h"
rmap["limaginary" ]="c99_complex_h"
rmap["complex" ]="c99_complex_h"
rmap["dcomplex"]="c99_complex_h"
rmap["lcomplex"]="c99_complex_h"
else:
tmap["imaginary"]="float"
tmap["dimaginary"]="double"
tmap["limaginary"]="long double"
tmap["complex" ]="std::complex<float>"
tmap["dcomplex"]="std::complex<double>"
tmap["lcomplex"]="std::complex<long double>"
rmap["complex" ]="complex_hxx"
rmap["dcomplex"]="complex_hxx"
rmap["lcomplex"]="complex_hxx"
if TARGET_CXX.options.HAVE_LONGDOUBLE:
tmap["ldouble"]="long double"
else:
tmap["ldouble"]="double"
if TARGET_CXX.options.HAVE_LONGLONG:
tmap["vlong"]="long long"
tmap["uvlong"]="unsigned long long"
else:
tmap["vlong"]="long"
tmap["uvlong"]="unsigned long"
if TARGET_CXX.options.HAVE_STDINT:
tmap["int8"]="int8_t"
tmap["uint8"]="uint8_t"
tmap["int16"]="int16_t"
tmap["uint16"]="uint16_t"
tmap["int32"]="int32_t"
tmap["uint32"]="uint32_t"
tmap["int64"]="int64_t"
tmap["uint64"]="uint64_t"
# requirements
rmap["int8"]="c99_stdint_h"
rmap["uint8"]="c99_stdint_h"
rmap["int16"]="c99_stdint_h"
rmap["uint16"]="c99_stdint_h"
rmap["int32"]="c99_stdint_h"
rmap["uint32"]="c99_stdint_h"
rmap["int64"]="c99_stdint_h"
rmap["uint64"]="c99_stdint_h"
else:
tmap["int8"]="signed char"
tmap["uint8"]="unsigned char"
sizes = {
TARGET_CXX.options.SIZEOF_SHORT*8 : "short",
TARGET_CXX.options.SIZEOF_INT*8: "int",
TARGET_CXX.options.SIZEOF_LONG*8 : "long",
}
if TARGET_CXX.options.HAVE_LONGLONG:
sizes[TARGET_CXX.options.SIZEOF_LONGLONG*8]="long long"
for size in [16,32,64]:
try:
t = sizes[size]
tmap["int"+str(size)]=t
tmap["uint"+str(size)]="unsigned " + t
except:
tmap["int"+str(size)]="emul_int"+str(size)
tmap["uint"+str(size)]="emul_uint"+str(size)
tmap["uchar"]=tmap["int32"] # Unicode/ISO10646, note: SIGNED!