Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Python Support (wip) #113

Open
UnidayStudio opened this issue Mar 6, 2020 · 0 comments
Open

Python Support (wip) #113

UnidayStudio opened this issue Mar 6, 2020 · 0 comments

Comments

@UnidayStudio
Copy link

Hi! Thanks for the text editor, I appreciated it and I'm using in my game engine that works by embedding python.

I had to write some code in order to support this language (Python) so I decided to share it here to contribute somehow.

The code is not complete and unfortunatelly I don't know regex to properly do the mTokenRegexStrings part so I just copied this snippet from the HLSL code. That's why I'm opening an issue instead of a formal contribution (pr on the dev branch).

Again, thank you for the editor!

		static LanguageDefinition langDef;

		static const char* const keywords[] = {
			"False", "None", "True", "and", "as", "assert", "break", "class", 
			"continue", "def", "del", "elif", "else", "except", "finally", 
			"for", "from", "global", "if", "import", "in", "is", "lambda", 
			"nonlocal", "not", "or", "pass", "raise", "return", "try", "while", 
			"with", "yield",
			"__class__", "__delattr__", "__dict__", "__dir__", "__doc__", "__eq__", 
			"__format__", "__ge__", "__getattribute__", "__gt__", "__hash__", 
			"__init__", "__le__", "__lt__", "__module__", "__ne__", "__new__", 
			"__reduce__", "__reduce_ex__", "__repr__", "__setattr__", "__sizeof__", 
			"__str__", "__subclasshook__", "__weakref__"
		};

		for (auto& k : keywords) langDef.mKeywords.insert(k);

		static const char* const identifiers[]{
			"abs", "delattr", "hash", "memoryview", "set", "all", "dict", "help", 
			"min", "setattr", "any", "dir", "hex", "next", "slice", "ascii", "divmod", 
			"id", "object", "sorted", "bin", "enumerate", "input", "oct",
			"staticmethod", "bool", "eval", "int", "open", "str", "breakpoint", 
			"exec", "isinstance", "ord", "sum", "bytearray", "filter", "issubclass", 
			"pow", "super", "bytes", "float", "iter", "print", "tuple", "callable", 
			"format", "len", "property", "type", "chr", "frozenset", "list", "range",
			"vars", "classmethod", "getattr", "locals", "repr", "zip", "compile", 
			"globals", "map", "reversed", "__import__", "complex", "hasattr", "max", 
			"round"
		};

		for (auto& k : identifiers)	{
			Identifier id;
			id.mDeclaration = "Built-in function";
			langDef.mIdentifiers.insert(std::make_pair(std::string(k), id));
		}

		langDef.mTokenRegexStrings.push_back(std::make_pair<std::string, PaletteIndex>("[ \\t]*#[ \\t]*[a-zA-Z_]+", PaletteIndex::Preprocessor));
		langDef.mTokenRegexStrings.push_back(std::make_pair<std::string, PaletteIndex>("L?\\\"(\\\\.|[^\\\"])*\\\"", PaletteIndex::String));
		langDef.mTokenRegexStrings.push_back(std::make_pair<std::string, PaletteIndex>("\\'\\\\?[^\\']\\'", PaletteIndex::CharLiteral));
		langDef.mTokenRegexStrings.push_back(std::make_pair<std::string, PaletteIndex>("[+-]?([0-9]+([.][0-9]*)?|[.][0-9]+)([eE][+-]?[0-9]+)?[fF]?", PaletteIndex::Number));
		langDef.mTokenRegexStrings.push_back(std::make_pair<std::string, PaletteIndex>("[+-]?[0-9]+[Uu]?[lL]?[lL]?", PaletteIndex::Number));
		langDef.mTokenRegexStrings.push_back(std::make_pair<std::string, PaletteIndex>("0[0-7]+[Uu]?[lL]?[lL]?", PaletteIndex::Number));
		langDef.mTokenRegexStrings.push_back(std::make_pair<std::string, PaletteIndex>("0[xX][0-9a-fA-F]+[uU]?[lL]?[lL]?", PaletteIndex::Number));
		langDef.mTokenRegexStrings.push_back(std::make_pair<std::string, PaletteIndex>("[a-zA-Z_][a-zA-Z0-9_]*", PaletteIndex::Identifier));
		langDef.mTokenRegexStrings.push_back(std::make_pair<std::string, PaletteIndex>("[\\[\\]\\{\\}\\!\\%\\^\\&\\*\\(\\)\\-\\+\\=\\~\\|\\<\\>\\?\\/\\;\\,\\.]", PaletteIndex::Punctuation));

		langDef.mCommentStart = R"(""")";
		langDef.mCommentEnd = R"(""")";
		langDef.mSingleLineComment = "#";

		langDef.mCaseSensitive = true;
		langDef.mAutoIndentation = true;

		langDef.mName = "Python";
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant