-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
19 changed files
with
447 additions
and
3 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,102 @@ | ||
(function (Prism) { | ||
|
||
/** | ||
* Regular expression for characters that are not allowed in identifiers. | ||
* @type {String} | ||
*/ | ||
var nonId = /\s\x00-\x1f\x22-\x2f\x3a-\x3f\x5b-\x5e\x60\x7b-\x7e/.source; | ||
|
||
/** | ||
* Surround a regular expression for IDs with patterns for non-ID sequences. | ||
* @param {String} pattern A regular expression for identifiers. | ||
* @param {String} [flags] The regular expression flags. | ||
* @returns {RegExp} A wrapped regular expression for identifiers. | ||
*/ | ||
function wrapId(pattern, flags) { | ||
return RegExp(pattern.replace(/<nonId>/g, nonId), flags); | ||
} | ||
|
||
Prism.languages.kumir = { | ||
'comment': { | ||
pattern: /\|.*/ | ||
}, | ||
|
||
'prolog': { | ||
pattern: /#.*/, | ||
greedy: true | ||
}, | ||
|
||
'string': { | ||
pattern: /"[^\n\r"]*"|'[^\n\r']*'/, | ||
greedy: true | ||
}, | ||
|
||
'boolean': { | ||
pattern: wrapId(/(^|[<nonId>])(?:да|нет)(?=[<nonId>]|$)/.source), | ||
lookbehind: true | ||
}, | ||
|
||
'operator-word': { | ||
pattern: wrapId(/(^|[<nonId>])(?:и|или|не)(?=[<nonId>]|$)/.source), | ||
lookbehind: true, | ||
alias: 'keyword' | ||
}, | ||
|
||
'system-variable': { | ||
pattern: wrapId(/(^|[<nonId>])знач(?=[<nonId>]|$)/.source), | ||
lookbehind: true, | ||
alias: 'keyword' | ||
}, | ||
|
||
'type': [ | ||
{ | ||
pattern: wrapId(/(^|[<nonId>])(?:вещ|лит|лог|сим|цел)(?:\x20*таб)?(?=[<nonId>]|$)/.source), | ||
lookbehind: true, | ||
alias: 'builtin' | ||
}, | ||
{ | ||
pattern: wrapId(/(^|[<nonId>])(?:компл|сканкод|файл|цвет)(?=[<nonId>]|$)/.source), | ||
lookbehind: true, | ||
alias: 'important' | ||
} | ||
], | ||
|
||
/** | ||
* Should be performed after searching for type names because of "таб". | ||
* "таб" is a reserved word, but never used without a preceding type name. | ||
* "НАЗНАЧИТЬ", "Фввод", and "Фвывод" are not reserved words. | ||
*/ | ||
'keyword': { | ||
pattern: wrapId(/(^|[<nonId>])(?:алг|арг(?:\x20*рез)?|ввод|ВКЛЮЧИТЬ|вс[её]|выбор|вывод|выход|дано|для|до|дс|если|иначе|исп|использовать|кон(?:(?:\x20+|_)исп)?|кц(?:(?:\x20+|_)при)?|надо|нач|нс|нц|от|пауза|пока|при|раза?|рез|стоп|таб|то|утв|шаг)(?=[<nonId>]|$)/.source), | ||
lookbehind: true | ||
}, | ||
|
||
/** Should be performed after searching for reserved words. */ | ||
'name': { | ||
pattern: wrapId(/(^|[<nonId>])[^\d<nonId>][^<nonId>]*(?:\x20+[^<nonId>]+)*(?=[<nonId>]|$)/.source), | ||
lookbehind: true | ||
}, | ||
|
||
/** Should be performed after searching for names. */ | ||
'number': { | ||
pattern: wrapId(/(^|[<nonId>])(?:\B\$[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)(?=[<nonId>]|$)/.source, 'i'), | ||
lookbehind: true | ||
}, | ||
|
||
/** Should be performed after searching for words. */ | ||
'punctuation': /:=|[(),:;\[\]]/, | ||
|
||
/** | ||
* Should be performed after searching for | ||
* - numeric constants (because of "+" and "-"); | ||
* - punctuation marks (because of ":=" and "="). | ||
*/ | ||
'operator-char': { | ||
pattern: /\*\*?|<[=>]?|>=?|[-+/=]/, | ||
alias: 'operator' | ||
} | ||
}; | ||
|
||
Prism.languages.kum = Prism.languages.kumir; | ||
|
||
}(Prism)); |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
<h2>Example</h2> | ||
|
||
<pre><code>алг | ||
нач | ||
| Решение квадратного уравнения. | ||
вещ a, b, c | ||
вещ таб корни[1:2] | ||
цел индекс, число корней | ||
вывод "Укажите первый коэффициент: " | ||
ввод a | ||
вывод нс, "Укажите второй коэффициент: " | ||
ввод b | ||
вывод нс, "Укажите свободный член: " | ||
ввод c | ||
решить квур(a, b, c, число корней, корни) | ||
если число корней = -1 | ||
то | ||
вывод нс, "Первый коэффициент не может быть равен нулю.", нс | ||
иначе | ||
если число корней = 0 | ||
то | ||
вывод нс, "Уравнение не имеет корней.", нс | ||
иначе | ||
если число корней = 1 | ||
то | ||
вывод нс, "Уравнение имеет один корень.", нс | ||
вывод "x = ", корни[1], нс | ||
иначе | ||
вывод нс, "Уравнение имеет два корня.", нс | ||
нц для индекс от 1 до число корней шаг 1 | ||
вывод "x", индекс, " = ", корни[индекс], нс | ||
кц | ||
все | ||
все | ||
все | ||
кон | ||
|
||
алг решить квур(арг вещ a, b, c, арг рез цел число корней, арг рез вещ таб корни[1:2]) | ||
нач | ||
вещ дискриминант | ||
если a = 0 | ||
то | ||
число корней := -1 | ||
иначе | ||
дискриминант := b**2 - 4 * a * c | ||
если дискриминант > 0 | ||
то | ||
корни[1] := (-b - sqrt(дискриминант)) / (2 * a) | ||
корни[2] := (-b + sqrt(дискриминант)) / (2 * a) | ||
число корней := 2 | ||
иначе | ||
если дискриминант = 0 | ||
то | ||
корни[1] := -b / (2 * a) | ||
число корней := 1 | ||
иначе | ||
число корней := 0 | ||
все | ||
все | ||
все | ||
кон</code></pre> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.