From d13e89cbbdda9722fc636b0666adce58501d1c9b Mon Sep 17 00:00:00 2001 From: Uko Kokņevičs Date: Sun, 2 Jan 2022 08:38:11 +0200 Subject: Some changes in Syntax --- src/Syntax/zig.zig | 95 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 52 insertions(+), 43 deletions(-) (limited to 'src/Syntax/zig.zig') diff --git a/src/Syntax/zig.zig b/src/Syntax/zig.zig index 4826bfb..c8bc225 100644 --- a/src/Syntax/zig.zig +++ b/src/Syntax/zig.zig @@ -3,57 +3,66 @@ const es = @import("root"); const std = @import("std"); +const ComptimeStringMap = std.ComptimeStringMap; +const Highlight = es.Highlight; const Syntax = es.Syntax; +pub const filematch = [_][]const u8{ + ".zig", +}; + // TODO: Add support for the multiline string \\ pub const syntax = Syntax{ .name = "Zig", - .filematch = &[_][]const u8{ ".zig" }, - .keywords1 = &[_][]const u8{ - // keywords - "align", "allowzero", "and", "anyframe", "anytype", "asm", "async", "await", "break", - "callconv", "catch", "comptime", "const", "continue", "defer", "else", "enum", "errdefer", - "error", "export", "extern", "fn", "for", "if", "inline", "noalias", "nosuspend", "noinline", - "opaque", "or", "orelse", "packed", "pub", "resume", "return", "linksection", "struct", - "suspend", "switch", "test", "threadlocal", "try", "union", "unreachable", "usingnamespace", - "var", "volatile", "while", - - // primitive values - "false", "null", "true", "undefined", - }, - .keywords2 = &[_][]const u8{ - // primitive types - "i8", "u8", "i16", "u16", "i32", "u32", "i64", "u64", "i128", "u128", "isize", "usize", - "c_short", "c_ushort", "c_int", "c_uint", "c_long", "c_ulong", "c_longlong", "c_ulonglong", - "c_longdouble", "f16", "f32", "f64", "f128", "bool", "anyopaque", "void", "noreturn", "type", - "anyerror", "comptime_int", "comptime_float", - - // removed types - "c_void", - - // TODO: Generate all integer types - - // builtin functions - "@addWithOverflow", "@alignCast", "@alignOf", "@as", "@asyncCall", "@atomicLoad", - "@atomicRmw", "@atomicStore", "@bitCast", "@bitOffsetOf", "@boolToInt", "@bitSizeOf", - "@breakpoint", "@mulAdd", "@byteSwap", "@bitReverse", "@offsetOf", "@call", "@cDefine", - "@cImport", "@cInclude", "@clz", "@cmpxchgStrong", "@cmpxchgWeak", "@compileError", - "@compileLog", "@ctz", "@cUndef", "@divExact", "@divFloor", "@divTrunc", "@embedFile", - "@enumToInt", "@errorName", "@errorReturnTrace", "@errorToInt", "@errSetCast", "@export", - "@extern", "@fence", "@field", "@fieldParentPtr", "@floatCast", "@floatToInt", "@frame", - "@Frame", "@frameAddress", "@frameSize", "@hasDecl", "@hasField", "@import", "@intCast", - "@intToEnum", "@intToError" , "@intToFloat", "@intToPtr", "@maximum", "@memcpy", "@memset", - "@minimum", "@wasmMemorySize", "@wasmMemoryGrow", "@mod", "@mulWithOverflow", "@panic", - "@popCount", "@prefetch", "@ptrCast", "@ptrToInt", "@rem", "@returnAddress", "@select", - "@setAlignStack", "@setCold", "@setEvalBranchQuota", "@setFloatMode", "@setRuntimeSafety", - "@shlExact", "@shlWithOverflow", "@shrExact", "@shuffle", "@sizeOf", "@splat", "@reduce", - "@src", "@sqrt", "@sin", "@cos", "@exp", "@exp2", "@log", "@log2", "@log10", "@fabs", - "@floor", "@ceil", "@trunc", "@round", "@subWithOverflow", "@tagName", "@This", "@truncate", - "@Type", "@typeInfo", "@typeName", "@TypeOf", "@unionInit", - }, + .keyword_classifier = ComptimeStringMap( + Highlight, + Syntax.pairWith(&keywords1, .keyword1) ++ Syntax.pairWith(&keywords2, .keyword2), + ).get, .singleline_comment_start = "//", .multiline_comment_start = null, .multiline_comment_end = null, .separators = "&*^:,.=!<{[(-%|+?>}]);/~", .flags = .{ .hl_numbers = true, .hl_strings = true }, }; + +const keywords1 = [_][]const u8 { + // keywords + "align", "allowzero", "and", "anyframe", "anytype", "asm", "async", "await", "break", "callconv", + "catch", "comptime", "const", "continue", "defer", "else", "enum", "errdefer", "error", "export", + "extern", "fn", "for", "if", "inline", "noalias", "nosuspend", "noinline", "opaque", "or", + "orelse", "packed", "pub", "resume", "return", "linksection", "struct", "suspend", "switch", + "test", "threadlocal", "try", "union", "unreachable", "usingnamespace", "var", "volatile", + "while", + + // primitive values + "false", "null", "true", "undefined", +}; + +const keywords2 = [_][]const u8 { + // primitive types + // TODO: generate all the integer types + "i8", "u8", "i16", "u16", "i32", "u32", "i64", "u64", "i128", "u128", "isize", "usize", + "c_short", "c_ushort", "c_int", "c_uint", "c_long", "c_ulong", "c_longlong", "c_ulonglong", + "c_longdouble", "f16", "f32", "f64", "f128", "bool", "anyopaque", "void", "noreturn", "type", + "anyerror", "comptime_int", "comptime_float", + + // former primitive types + "c_void", + + // builtin functions + "@addWithOverflow", "@alignCast", "@alignOf", "@as", "@asyncCall", "@atomicLoad", "@atomicRmw", + "@atomicStore", "@bitCast", "@bitOffsetOf", "@boolToInt", "@bitSizeOf", "@breakpoint", "@mulAdd", + "@byteSwap", "@bitReverse", "@offsetOf", "@call", "@cDefine", "@cImport", "@cInclude", "@clz", + "@cmpxchgStrong", "@cmpxchgWeak", "@compileError", "@compileLog", "@ctz", "@cUndef", "@divExact", + "@divFloor", "@divTrunc", "@embedFile", "@enumToInt", "@errorName", "@errorReturnTrace", + "@errorToInt", "@errSetCast", "@export", "@extern", "@fence", "@field", "@fieldParentPtr", + "@floatCast", "@floatToInt", "@frame", "@Frame", "@frameAddress", "@frameSize", "@hasDecl", + "@hasField", "@import", "@intCast", "@intToEnum", "@intToError" , "@intToFloat", "@intToPtr", + "@maximum", "@memcpy", "@memset", "@minimum", "@wasmMemorySize", "@wasmMemoryGrow", "@mod", + "@mulWithOverflow", "@panic", "@popCount", "@prefetch", "@ptrCast", "@ptrToInt", "@rem", + "@returnAddress", "@select", "@setAlignStack", "@setCold", "@setEvalBranchQuota", + "@setFloatMode", "@setRuntimeSafety", "@shlExact", "@shlWithOverflow", "@shrExact", "@shuffle", + "@sizeOf", "@splat", "@reduce", "@src", "@sqrt", "@sin", "@cos", "@exp", "@exp2", "@log", + "@log2", "@log10", "@fabs", "@floor", "@ceil", "@trunc", "@round", "@subWithOverflow", + "@tagName", "@This", "@truncate", "@Type", "@typeInfo", "@typeName", "@TypeOf", "@unionInit", +}; -- cgit v1.2.3