feat: add latex_env blocks with brackets (resolve #24)

This commit is contained in:
Emilia Simmons 2022-05-25 10:59:30 -04:00
parent 5a04a1903b
commit f78edf1ab6
5 changed files with 54820 additions and 46277 deletions

View file

@ -1010,7 +1010,7 @@ Directive.7 - Directive unrelated to section
(expr)))))
================================================================================
LatexEnv.1 - Basic
LatexEnv.1a - Basic
================================================================================
\begin{a}
\end{a}
@ -1023,6 +1023,30 @@ LatexEnv.1 - Basic
(name)
(name))))
================================================================================
LatexEnv.1b - Basic
================================================================================
\(
\)
--------------------------------------------------------------------------------
(document
(body
(latex_env)))
================================================================================
LatexEnv.1c - Basic
================================================================================
\[
\]
--------------------------------------------------------------------------------
(document
(body
(latex_env)))
================================================================================
LatexEnv.2 - Contents
================================================================================
@ -1039,6 +1063,36 @@ a
(expr))
(name))))
================================================================================
LatexEnv.2b - Basic
================================================================================
\(
a
\)
--------------------------------------------------------------------------------
(document
(body
(latex_env
(contents
(expr)))))
================================================================================
LatexEnv.2c - Basic
================================================================================
\[
a
\]
--------------------------------------------------------------------------------
(document
(body
(latex_env
(contents
(expr)))))
================================================================================
LatexEnv.3 - Empty
================================================================================

View file

@ -279,14 +279,30 @@ org_grammar = {
latex_env: $ => seq(
optional($._directive_list),
caseInsensitive('\\begin{'),
field('name', alias(/[\p{L}\p{N}]+/, $.name)),
token.immediate('}'),
$._eol,
optional(field('contents', $.contents)),
caseInsensitive('\\end{'),
alias(/[\p{L}\p{N}]+/, $.name),
token.immediate('}'),
choice(
seq(
caseInsensitive('\\begin{'),
field('name', alias(/[\p{L}\p{N}*]+/, $.name)),
token.immediate('}'),
$._nl,
optional(field('contents', $.contents)),
caseInsensitive('\\end{'),
alias(/[\p{L}\p{N}*]+/, $.name),
token.immediate('}'),
),
seq(
caseInsensitive('\\['),
$._nl,
optional(field('contents', $.contents)),
caseInsensitive('\\]'),
),
seq(
caseInsensitive('\\('),
$._nl,
optional(field('contents', $.contents)),
caseInsensitive('\\)'),
),
),
$._eol,
),

View file

@ -1636,80 +1636,176 @@
}
]
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "\\\\[Bb][Ee][Gg][Ii][Nn]\\{"
},
"named": false,
"value": "\\begin{"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[\\p{L}\\p{N}]+"
},
"named": true,
"value": "name"
}
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "}"
}
},
{
"type": "SYMBOL",
"name": "_eol"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "contents",
"content": {
"type": "SYMBOL",
"name": "contents"
}
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "\\\\[Bb][Ee][Gg][Ii][Nn]\\{"
},
"named": false,
"value": "\\begin{"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[\\p{L}\\p{N}*]+"
},
"named": true,
"value": "name"
}
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "}"
}
},
{
"type": "SYMBOL",
"name": "_nl"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "contents",
"content": {
"type": "SYMBOL",
"name": "contents"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "\\\\[Ee][Nn][Dd]\\{"
},
"named": false,
"value": "\\end{"
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[\\p{L}\\p{N}*]+"
},
"named": true,
"value": "name"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "}"
}
}
]
},
{
"type": "BLANK"
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "\\\\\\["
},
"named": false,
"value": "\\["
},
{
"type": "SYMBOL",
"name": "_nl"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "contents",
"content": {
"type": "SYMBOL",
"name": "contents"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "\\\\\\]"
},
"named": false,
"value": "\\]"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "\\\\\\("
},
"named": false,
"value": "\\("
},
{
"type": "SYMBOL",
"name": "_nl"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "contents",
"content": {
"type": "SYMBOL",
"name": "contents"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "\\\\\\)"
},
"named": false,
"value": "\\)"
}
]
}
]
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "\\\\[Ee][Nn][Dd]\\{"
},
"named": false,
"value": "\\end{"
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[\\p{L}\\p{N}]+"
},
"named": true,
"value": "name"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "}"
}
},
{
"type": "SYMBOL",
"name": "_eol"

View file

@ -456,7 +456,7 @@
},
"name": {
"multiple": false,
"required": true,
"required": false,
"types": [
{
"type": "name",
@ -467,7 +467,7 @@
},
"children": {
"multiple": false,
"required": true,
"required": false,
"types": [
{
"type": "name",
@ -1057,6 +1057,22 @@
"type": "\\",
"named": false
},
{
"type": "\\(",
"named": false
},
{
"type": "\\)",
"named": false
},
{
"type": "\\[",
"named": false
},
{
"type": "\\]",
"named": false
},
{
"type": "\\begin{",
"named": false

100763
src/parser.c

File diff suppressed because it is too large Load diff