From 660f1e181a694d573ef7bd9a5c21611a50fab4de Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 14 Aug 2017 11:59:29 -0400 Subject: [PATCH] Add julia rules Fixes #781 --- cmd/micro/runtime.go | 23 +++++++++++++++++ runtime/syntax/julia.yaml | 53 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 runtime/syntax/julia.yaml diff --git a/cmd/micro/runtime.go b/cmd/micro/runtime.go index b4bca041..b5ca9a83 100644 --- a/cmd/micro/runtime.go +++ b/cmd/micro/runtime.go @@ -99,6 +99,7 @@ // runtime/syntax/java.yaml // runtime/syntax/javascript.yaml // runtime/syntax/json.yaml +// runtime/syntax/julia.yaml // runtime/syntax/keymap.yaml // runtime/syntax/kickstart.yaml // runtime/syntax/kotlin.yaml @@ -2209,6 +2210,26 @@ func runtimeSyntaxJsonYaml() (*asset, error) { return a, nil } +var _runtimeSyntaxJuliaYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x93\xcb\x72\xdb\x3c\x0c\x85\xf7\x7e\x0a\xfe\x4a\xfe\xc6\x97\x91\x93\x6d\x34\xbd\x4e\xdf\xa2\x92\xe2\xa1\x28\xc8\x46\x4c\x81\x2a\x09\x35\xe3\x16\xed\xb3\x77\x44\x27\x51\x2d\x67\x91\x2e\x3a\x5e\x78\x74\x44\x7c\x38\x38\xa0\x1a\xb4\xc0\x87\x0e\x32\x75\xdf\x5b\xd4\xb3\x59\x0d\x0c\x86\xb3\x99\x52\x4a\x0d\x2f\x49\xb7\x90\xa9\xa4\x28\xd6\xf7\xf6\x32\x89\xf2\x0e\x74\x0d\x3e\x53\xc9\xdd\xc5\x7f\xeb\xe5\xf5\x1c\xe8\x9b\x5a\x2d\x3e\x44\xc0\x5c\xc9\xe5\x22\x99\xcd\x7c\x6f\x21\x64\xb3\x78\xfe\x42\x55\x3d\x5a\x4e\x91\x94\xab\xee\xc1\x70\x88\x72\xaa\x8c\xa3\xc0\x9a\x78\x5d\x39\x67\x63\x93\x6a\xce\xbe\x07\x69\xb4\x0d\xb0\x28\x8a\xea\xd8\xf0\x04\xa1\x99\x3d\x56\x3d\xc3\x94\x92\xa9\x64\xb3\xc9\x3f\xa5\x5f\x74\xfa\xfd\x26\xbd\xdd\x94\xab\xcd\x66\xac\xaf\xa1\x41\x42\x46\x47\x4f\x75\x58\x03\x31\x36\x18\x47\x79\xac\xdb\x94\x7f\x02\x96\x79\x9e\x85\x4e\x1b\xc8\xca\x72\x99\xcf\xcb\x91\xb6\x87\xc3\x83\xf3\xf5\x13\x2a\xb0\x66\x68\x21\x7a\x18\x86\xa8\x60\x8b\x24\x95\x07\xbd\x17\xa3\xd9\xec\xc4\x38\x62\xa4\x61\xb4\x9e\xcc\xe0\x42\xc0\x06\xc0\x26\xfe\x09\x50\x2d\x0d\x92\xb6\xf6\x20\x8d\xf3\xb2\xb5\xae\xd2\x56\xac\x33\xda\x0a\x36\x82\x64\x6c\x5f\x83\xf4\x01\x69\x2b\x1e\xbe\xf6\xe8\x41\x5a\x6d\xbc\x93\xce\x23\xb1\x25\xf1\xc0\xbd\x27\x61\x7f\x90\x61\xa1\xf2\xb0\x43\x0b\xd2\xba\xba\xb7\x93\x28\x6b\x30\xce\x6b\x76\xfe\x3c\x89\x75\x64\x66\x2a\xf9\x78\x12\xe4\x58\xeb\x3a\x38\x29\x0d\x87\xb6\x72\x76\xfd\x24\x0f\x49\xa6\xab\xe5\xb5\xbc\xfb\xff\xed\xfb\x37\xbf\xee\x4a\x19\xe2\xd0\x54\x0b\x39\x16\xe7\x05\x83\x20\x9d\xda\xe9\xb4\x07\xe2\x1d\x04\x98\x40\x2b\xaf\xcd\x1e\x38\x64\x2a\x99\xe7\xf3\xc5\x8f\x9f\x03\x2d\x97\xa2\x28\x17\x63\x35\xf5\x6d\x05\xfe\xec\x46\x1d\xe5\xe3\x3a\xf2\x9b\xf4\xb6\x5c\xc5\x9e\xd3\x63\x81\x3d\xd2\x36\x7b\xa4\xa9\x61\x91\x3e\x2e\x31\xfe\x92\x67\x1d\xa8\x7e\x41\x3d\x5e\x72\x95\x97\xaf\xe6\x5e\x5d\x5d\x4d\xa1\x27\xd2\xdf\x13\x5f\x72\x39\x2a\x61\x8f\x5d\x0c\xa1\x28\xd6\xd3\x2e\xcf\x8f\xd3\x4e\x1d\x18\xd4\xf6\xf3\x4e\xfb\xb1\xf4\xd5\x03\x9e\x8d\xf7\x2f\xcd\xb4\xf1\x9b\x3b\x33\x71\x31\x35\x71\xf9\x52\xc2\xbf\x03\x00\x00\xff\xff\xe0\x69\x3e\xb5\xfb\x04\x00\x00") + +func runtimeSyntaxJuliaYamlBytes() ([]byte, error) { + return bindataRead( + _runtimeSyntaxJuliaYaml, + "runtime/syntax/julia.yaml", + ) +} + +func runtimeSyntaxJuliaYaml() (*asset, error) { + bytes, err := runtimeSyntaxJuliaYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "runtime/syntax/julia.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _runtimeSyntaxKeymapYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x90\xd1\x6a\x33\x21\x10\x85\xef\x7d\x0a\x7f\x09\x24\xe1\x27\x4b\x6f\xbb\x50\x7a\xd1\x97\x28\xc4\x14\x66\x75\xd2\x2c\xeb\xa8\xe8\xa4\xb0\xe0\xc3\x97\x5d\x69\xbb\xdd\x50\xe8\x4d\xe7\x66\x64\xf4\x9c\xf3\x39\xe7\xde\x21\x8f\x11\x5b\x39\xe0\x48\x10\x85\xb0\xc8\x68\xb8\x15\x52\x4a\x39\xdd\x7a\x20\x6c\xa5\xd2\xba\xd9\x0d\x65\xc0\x71\xff\x48\x10\x37\xe5\x99\x82\x9d\x0e\x4a\x88\x74\x75\x98\xab\xe0\x20\x33\x03\x23\xa1\xe7\x59\xd3\xed\xc0\xda\x62\x1c\x42\x2a\x26\x50\x0c\x19\x27\x0f\x13\xec\xdc\x09\x62\x9e\x7a\x1e\xa9\x24\xa4\xf0\x86\x25\x73\xea\xfd\xeb\x5e\xeb\x4e\xfd\xe0\x68\x82\xe7\x14\x5c\x01\xc7\x25\x5f\xfa\x33\x2f\x1f\x9b\xe0\x33\x83\xe7\xc6\x5f\xa9\xc3\x54\x25\xc7\xbb\xc3\xfd\xe9\xff\xd2\x32\xa2\xe9\xc1\xb5\x52\x3d\xdc\x08\x2b\x40\xfd\xce\x54\x99\x21\xcd\xd1\x4a\x7d\xce\xd0\xdb\xd5\x24\x0f\x7d\x9c\xc3\xb4\x6e\xbe\xa6\x8b\xcd\x7c\xd4\x32\xa9\x52\x3c\x5d\x20\x7d\x97\xfe\x82\x66\xbb\x86\xd9\xfe\x21\x0b\xcd\xdb\xbf\x61\x78\xf9\xb7\x86\xd8\xac\xe3\xe4\xf1\x24\xc4\x7b\x00\x00\x00\xff\xff\x2a\x3b\x25\xf2\x64\x02\x00\x00") func runtimeSyntaxKeymapYamlBytes() ([]byte, error) { @@ -3620,6 +3641,7 @@ var _bindata = map[string]func() (*asset, error){ "runtime/syntax/java.yaml": runtimeSyntaxJavaYaml, "runtime/syntax/javascript.yaml": runtimeSyntaxJavascriptYaml, "runtime/syntax/json.yaml": runtimeSyntaxJsonYaml, + "runtime/syntax/julia.yaml": runtimeSyntaxJuliaYaml, "runtime/syntax/keymap.yaml": runtimeSyntaxKeymapYaml, "runtime/syntax/kickstart.yaml": runtimeSyntaxKickstartYaml, "runtime/syntax/kotlin.yaml": runtimeSyntaxKotlinYaml, @@ -3842,6 +3864,7 @@ var _bintree = &bintree{nil, map[string]*bintree{ "java.yaml": &bintree{runtimeSyntaxJavaYaml, map[string]*bintree{}}, "javascript.yaml": &bintree{runtimeSyntaxJavascriptYaml, map[string]*bintree{}}, "json.yaml": &bintree{runtimeSyntaxJsonYaml, map[string]*bintree{}}, + "julia.yaml": &bintree{runtimeSyntaxJuliaYaml, map[string]*bintree{}}, "keymap.yaml": &bintree{runtimeSyntaxKeymapYaml, map[string]*bintree{}}, "kickstart.yaml": &bintree{runtimeSyntaxKickstartYaml, map[string]*bintree{}}, "kotlin.yaml": &bintree{runtimeSyntaxKotlinYaml, map[string]*bintree{}}, diff --git a/runtime/syntax/julia.yaml b/runtime/syntax/julia.yaml new file mode 100644 index 00000000..7ea5cd09 --- /dev/null +++ b/runtime/syntax/julia.yaml @@ -0,0 +1,53 @@ +filetype: julia + +detect: + filename: "\\.jl$" + header: "^#!.*/(env +)?julia( |$)" + +rules: + + # built-in objects + - constant.bool: "\\b(true|false)\\b" + # built-in attributes + - constant: "__[A-Za-z0-9_]+__" + # definitions + - identifier: "[A-Za-z_][A-Za-z0-9_]*[[:space:]]*[(]" + # keywords + - statement: "\\b(begin|break|catch|continue|function|elseif|else|end|finally|for|global|local|if|include|using|require|macro|println|return|try|type|while|module)\\b" + # decorators + - identifier.macro: "@[A-Za-z0-9_]+" + # operators + - symbol.operator: "[-+*/|=%<>&~^]|\\b(and|not|or|is|in)\\b" + # parentheses + - symbol.brackets: "([(){}]|\\[|\\])" + # numbers + - constant.number: "\\b[0-9]+\\b" + + - constant.string: + start: "\"\"\"" + end: "\"\"\"" + rules: [] + + - constant.string: + start: "'''" + end: "'''" + rules: [] + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - comment: + start: "#" + end: "$" + rules: []