Merge pull request #115309 from pfitzseb/sp/julia-grammar

Add Julia grammar
This commit is contained in:
Martin Aeschlimann 2021-02-08 18:26:51 +01:00 committed by GitHub
commit c86be3bb57
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 3880 additions and 0 deletions

View file

@ -0,0 +1,2 @@
build/**
cgmanifest.json

View file

@ -0,0 +1,17 @@
{
"registrations": [
{
"component": {
"type": "git",
"git": {
"name": " JuliaEditorSupport/atom-language-julia",
"repositoryUrl": "https://github.com/JuliaEditorSupport/atom-language-julia",
"commitHash": "8ae8d9cac742c65ae0bef1a5e2d068e2cae871bc"
}
},
"license": "MIT",
"version": "0.21.0"
}
],
"version": 1
}

View file

@ -0,0 +1,31 @@
{
"comments": {
"lineComment": "#",
"blockComment": [ "#=", "=#" ]
},
"brackets": [
["{", "}"],
["[", "]"],
["(", ")"]
],
"autoClosingPairs": [
["{", "}"],
["[", "]"],
["(", ")"],
["`", "`"],
{ "open": "\"", "close": "\"", "notIn": ["string", "comment"] }
],
"surroundingPairs": [
["{", "}"],
["[", "]"],
["(", ")"],
["\"", "\""],
["`", "`"]
],
"folding": {
"markers": {
"start": "^\\s*#region",
"end": "^\\s*#endregion"
}
}
}

View file

@ -0,0 +1,54 @@
{
"name": "julia",
"displayName": "%displayName%",
"description": "%description%",
"version": "1.0.0",
"publisher": "vscode",
"license": "MIT",
"engines": {
"vscode": "0.10.x"
},
"scripts": {
"update-grammar": "node ../node_modules/.bin/vscode-grammar-updater JuliaEditorSupport/atom-language-julia grammars/julia_vscode.json ./syntaxes/julia.tmLanguage.json"
},
"contributes": {
"languages": [
{
"id": "julia",
"aliases": [
"Julia",
"julia"
],
"extensions": [
".jl"
],
"firstLine": "^#!\\s*/.*\\bjulia[0-9.-]*\\b",
"configuration": "./language-configuration.json"
},
{
"id": "juliamarkdown",
"aliases": [
"Julia Markdown",
"juliamarkdown"
],
"extensions": [
".jmd"
]
}
],
"grammars": [
{
"language": "julia",
"scopeName": "source.julia",
"path": "./syntaxes/julia.tmLanguage.json",
"embeddedLanguages": {
"meta.embedded.inline.cpp": "cpp",
"meta.embedded.inline.javascript": "javascript",
"meta.embedded.inline.python": "python",
"meta.embedded.inline.r": "r",
"meta.embedded.inline.sql": "sql"
}
}
]
}
}

View file

@ -0,0 +1,4 @@
{
"displayName": "Julia Language Basics",
"description": "Provides syntax highlighting & bracket matching in Julia files."
}

File diff suppressed because it is too large Load diff

View file

@ -22,6 +22,7 @@ const mappings = [
['html', 'text.html.basic'],
['ini', 'source.ini'],
['java', 'source.java'],
['jl', 'source.julia'],
['js', 'source.js'],
['json', 'source.json.comments'],
['jsx', 'source.js.jsx'],

View file

@ -141,6 +141,9 @@
{
"include": "#java"
},
{
"include": "#jl"
},
{
"include": "#js"
},
@ -2076,6 +2079,92 @@
}
]
},
"jl": {
"name": "meta.resultBlock.search",
"begin": "^(?!\\s)(.*?)([^\\\\\\/\\n]*\\.jl)(:)$",
"end": "^(?!\\s)",
"beginCaptures": {
"0": {
"name": "string meta.path.search"
},
"1": {
"name": "meta.path.dirname.search"
},
"2": {
"name": "meta.path.basename.search"
},
"3": {
"name": "punctuation.separator"
}
},
"patterns": [
{
"name": "meta.resultLine.search meta.resultLine.multiLine.search",
"begin": "^ (?:\\s*)((\\d+) )",
"while": "^ (?:\\s*)(?:((\\d+)(:))|((\\d+) ))",
"beginCaptures": {
"0": {
"name": "constant.numeric.integer meta.resultLinePrefix.search"
},
"1": {
"name": "meta.resultLinePrefix.contextLinePrefix.search"
},
"2": {
"name": "meta.resultLinePrefix.lineNumber.search"
}
},
"whileCaptures": {
"0": {
"name": "constant.numeric.integer meta.resultLinePrefix.search"
},
"1": {
"name": "meta.resultLinePrefix.matchLinePrefix.search"
},
"2": {
"name": "meta.resultLinePrefix.lineNumber.search"
},
"3": {
"name": "punctuation.separator"
},
"4": {
"name": "meta.resultLinePrefix.contextLinePrefix.search"
},
"5": {
"name": "meta.resultLinePrefix.lineNumber.search"
}
},
"patterns": [
{
"include": "source.julia"
}
]
},
{
"begin": "^ (?:\\s*)((\\d+)(:))",
"while": "(?=not)possible",
"name": "meta.resultLine.search meta.resultLine.singleLine.search",
"beginCaptures": {
"0": {
"name": "constant.numeric.integer meta.resultLinePrefix.search"
},
"1": {
"name": "meta.resultLinePrefix.matchLinePrefix.search"
},
"2": {
"name": "meta.resultLinePrefix.lineNumber.search"
},
"3": {
"name": "punctuation.separator"
}
},
"patterns": [
{
"include": "source.julia"
}
]
}
]
},
"js": {
"name": "meta.resultBlock.search",
"begin": "^(?!\\s)(.*?)([^\\\\\\/\\n]*\\.js)(:)$",

View file

@ -0,0 +1,26 @@
# n-queens (nqueens) solver, for nsquaresx-by-nsquaresy board
struct Queen
x::Int
y::Int
end
hitshorz(queena, queenb) = queena.x == queenb.x
hitsvert(queena, queenb) = queena.y == queenb.y
hitsdiag(queena, queenb) = abs(queena.x - queenb.x) == abs(queena.y - queenb.y)
hitshvd(qa, qb) = hitshorz(qa, qb) || hitsvert(qa, qb) || hitsdiag(qa, qb)
hitsany(testqueen, queens) = any(q -> hitshvd(testqueen, q), queens)
function trysolve(nsquaresx, nsquaresy, nqueens, presqueens = ())
nqueens == 0 && return presqueens
for xsquare in 1:nsquaresx
for ysquare in 1:nsquaresy
testqueen = Queen(xsquare, ysquare)
if !hitsany(testqueen, presqueens)
tryqueens = (presqueens..., testqueen)
maybesol = trysolve(nsquaresx, nsquaresy, nqueens - 1, tryqueens)
maybesol !== nothing && return maybesol
end
end
end
return nothing
end

File diff suppressed because it is too large Load diff