Add rules for \author and \title

See #36.
pull/511/head
Patrick Förster 2022-04-13 20:19:21 +07:00
parent 972f88a0e8
commit fc69ab784a
5 changed files with 519057 additions and 462962 deletions

@ -314,6 +314,16 @@ module.exports = grammar({
curly_group_impl: $ => seq('{', repeat($._text_content), '}'),
curly_group_author_list: $ =>
seq(
'{',
sepBy(
alias(repeat1($._text_content), $.author),
alias('\\and', $.command_name)
),
'}'
),
brack_group: $ =>
seq(
'[',
@ -545,6 +555,8 @@ module.exports = grammar({
_command: $ =>
choice(
$.title_declaration,
$.author_declaration,
$.package_include,
$.class_include,
$.latex_include,
@ -588,6 +600,10 @@ module.exports = grammar({
command_name: $ => /\\([^\r\n]|[@a-zA-Z:_]+\*?)?/,
title_declaration: $ => seq('\\title', $.curly_group),
author_declaration: $ => seq('\\author', $.curly_group_author_list),
package_include: $ =>
seq(
field('command', choice('\\usepackage', '\\RequirePackage')),

101
src/grammar.json vendored

@ -1393,6 +1393,73 @@
}
]
},
"curly_group_author_list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "_text_content"
}
},
"named": true,
"value": "author"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "STRING",
"value": "\\and"
},
"named": true,
"value": "command_name"
},
{
"type": "ALIAS",
"content": {
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "_text_content"
}
},
"named": true,
"value": "author"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"brack_group": {
"type": "SEQ",
"members": [
@ -2661,6 +2728,14 @@
"_command": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "title_declaration"
},
{
"type": "SYMBOL",
"name": "author_declaration"
},
{
"type": "SYMBOL",
"name": "package_include"
@ -2828,6 +2903,32 @@
"type": "PATTERN",
"value": "\\\\([^\\r\\n]|[@a-zA-Z:_]+\\*?)?"
},
"title_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\\title"
},
{
"type": "SYMBOL",
"name": "curly_group"
}
]
},
"author_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\\author"
},
{
"type": "SYMBOL",
"name": "curly_group_author_list"
}
]
},
"package_include": {
"type": "SEQ",
"members": [

380
src/node-types.json vendored

@ -259,6 +259,192 @@
}
}
},
{
"type": "author",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "acronym_definition",
"named": true
},
{
"type": "acronym_reference",
"named": true
},
{
"type": "author_declaration",
"named": true
},
{
"type": "biblatex_include",
"named": true
},
{
"type": "bibtex_include",
"named": true
},
{
"type": "block_comment",
"named": true
},
{
"type": "caption",
"named": true
},
{
"type": "citation",
"named": true
},
{
"type": "class_include",
"named": true
},
{
"type": "color_definition",
"named": true
},
{
"type": "color_reference",
"named": true
},
{
"type": "color_set_definition",
"named": true
},
{
"type": "curly_group",
"named": true
},
{
"type": "displayed_equation",
"named": true
},
{
"type": "environment_definition",
"named": true
},
{
"type": "generic_command",
"named": true
},
{
"type": "glossary_entry_definition",
"named": true
},
{
"type": "glossary_entry_reference",
"named": true
},
{
"type": "graphics_include",
"named": true
},
{
"type": "import_include",
"named": true
},
{
"type": "inkscape_include",
"named": true
},
{
"type": "inline_formula",
"named": true
},
{
"type": "label_definition",
"named": true
},
{
"type": "label_number",
"named": true
},
{
"type": "label_reference",
"named": true
},
{
"type": "label_reference_range",
"named": true
},
{
"type": "latex_include",
"named": true
},
{
"type": "let_command_definition",
"named": true
},
{
"type": "math_set",
"named": true
},
{
"type": "new_command_definition",
"named": true
},
{
"type": "old_command_definition",
"named": true
},
{
"type": "package_include",
"named": true
},
{
"type": "paired_delimiter_definition",
"named": true
},
{
"type": "svg_include",
"named": true
},
{
"type": "text",
"named": true
},
{
"type": "text_mode",
"named": true
},
{
"type": "theorem_definition",
"named": true
},
{
"type": "tikz_library_import",
"named": true
},
{
"type": "title_declaration",
"named": true
},
{
"type": "verbatim_include",
"named": true
}
]
}
},
{
"type": "author_declaration",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "curly_group_author_list",
"named": true
}
]
}
},
{
"type": "begin",
"named": true,
@ -419,6 +605,10 @@
"type": "acronym_reference",
"named": true
},
{
"type": "author_declaration",
"named": true
},
{
"type": "biblatex_include",
"named": true
@ -583,6 +773,10 @@
"type": "tikz_library_import",
"named": true
},
{
"type": "title_declaration",
"named": true
},
{
"type": "verbatim_environment",
"named": true
@ -727,6 +921,10 @@
"type": "acronym_reference",
"named": true
},
{
"type": "author_declaration",
"named": true
},
{
"type": "biblatex_include",
"named": true
@ -911,6 +1109,10 @@
"type": "tikz_library_import",
"named": true
},
{
"type": "title_declaration",
"named": true
},
{
"type": "verbatim_environment",
"named": true
@ -1436,6 +1638,10 @@
"type": "acronym_reference",
"named": true
},
{
"type": "author_declaration",
"named": true
},
{
"type": "biblatex_include",
"named": true
@ -1628,6 +1834,10 @@
"type": "tikz_library_import",
"named": true
},
{
"type": "title_declaration",
"named": true
},
{
"type": "verbatim_environment",
"named": true
@ -1639,6 +1849,25 @@
]
}
},
{
"type": "curly_group_author_list",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "author",
"named": true
},
{
"type": "command_name",
"named": true
}
]
}
},
{
"type": "curly_group_command_name",
"named": true,
@ -1687,6 +1916,10 @@
"type": "acronym_reference",
"named": true
},
{
"type": "author_declaration",
"named": true
},
{
"type": "biblatex_include",
"named": true
@ -1827,6 +2060,10 @@
"type": "tikz_library_import",
"named": true
},
{
"type": "title_declaration",
"named": true
},
{
"type": "verbatim_include",
"named": true
@ -1940,6 +2177,10 @@
"type": "acronym_reference",
"named": true
},
{
"type": "author_declaration",
"named": true
},
{
"type": "biblatex_include",
"named": true
@ -2132,6 +2373,10 @@
"type": "tikz_library_import",
"named": true
},
{
"type": "title_declaration",
"named": true
},
{
"type": "verbatim_environment",
"named": true
@ -2220,6 +2465,10 @@
"type": "acronym_reference",
"named": true
},
{
"type": "author_declaration",
"named": true
},
{
"type": "biblatex_include",
"named": true
@ -2380,6 +2629,10 @@
"type": "tikz_library_import",
"named": true
},
{
"type": "title_declaration",
"named": true
},
{
"type": "verbatim_environment",
"named": true
@ -2504,6 +2757,10 @@
"type": "acronym_reference",
"named": true
},
{
"type": "author_declaration",
"named": true
},
{
"type": "biblatex_include",
"named": true
@ -2696,6 +2953,10 @@
"type": "tikz_library_import",
"named": true
},
{
"type": "title_declaration",
"named": true
},
{
"type": "verbatim_environment",
"named": true
@ -3108,6 +3369,10 @@
"type": "acronym_reference",
"named": true
},
{
"type": "author_declaration",
"named": true
},
{
"type": "biblatex_include",
"named": true
@ -3300,6 +3565,10 @@
"type": "tikz_library_import",
"named": true
},
{
"type": "title_declaration",
"named": true
},
{
"type": "verbatim_environment",
"named": true
@ -3667,6 +3936,10 @@
"type": "acronym_reference",
"named": true
},
{
"type": "author_declaration",
"named": true
},
{
"type": "biblatex_include",
"named": true
@ -3859,6 +4132,10 @@
"type": "tikz_library_import",
"named": true
},
{
"type": "title_declaration",
"named": true
},
{
"type": "verbatim_environment",
"named": true
@ -3922,6 +4199,10 @@
"type": "acronym_reference",
"named": true
},
{
"type": "author_declaration",
"named": true
},
{
"type": "biblatex_include",
"named": true
@ -4086,6 +4367,10 @@
"type": "tikz_library_import",
"named": true
},
{
"type": "title_declaration",
"named": true
},
{
"type": "verbatim_environment",
"named": true
@ -4371,6 +4656,10 @@
"type": "acronym_reference",
"named": true
},
{
"type": "author_declaration",
"named": true
},
{
"type": "biblatex_include",
"named": true
@ -4539,6 +4828,10 @@
"type": "tikz_library_import",
"named": true
},
{
"type": "title_declaration",
"named": true
},
{
"type": "verbatim_environment",
"named": true
@ -4599,6 +4892,10 @@
"type": "acronym_reference",
"named": true
},
{
"type": "author_declaration",
"named": true
},
{
"type": "biblatex_include",
"named": true
@ -4787,6 +5084,10 @@
"type": "tikz_library_import",
"named": true
},
{
"type": "title_declaration",
"named": true
},
{
"type": "verbatim_environment",
"named": true
@ -4883,6 +5184,10 @@
"type": "acronym_reference",
"named": true
},
{
"type": "author_declaration",
"named": true
},
{
"type": "biblatex_include",
"named": true
@ -5063,6 +5368,10 @@
"type": "tikz_library_import",
"named": true
},
{
"type": "title_declaration",
"named": true
},
{
"type": "verbatim_environment",
"named": true
@ -5090,6 +5399,10 @@
"type": "acronym_reference",
"named": true
},
{
"type": "author_declaration",
"named": true
},
{
"type": "biblatex_include",
"named": true
@ -5282,6 +5595,10 @@
"type": "tikz_library_import",
"named": true
},
{
"type": "title_declaration",
"named": true
},
{
"type": "verbatim_environment",
"named": true
@ -5334,6 +5651,10 @@
"type": "acronym_reference",
"named": true
},
{
"type": "author_declaration",
"named": true
},
{
"type": "biblatex_include",
"named": true
@ -5498,6 +5819,10 @@
"type": "tikz_library_import",
"named": true
},
{
"type": "title_declaration",
"named": true
},
{
"type": "verbatim_environment",
"named": true
@ -5550,6 +5875,10 @@
"type": "acronym_reference",
"named": true
},
{
"type": "author_declaration",
"named": true
},
{
"type": "biblatex_include",
"named": true
@ -5726,6 +6055,10 @@
"type": "tikz_library_import",
"named": true
},
{
"type": "title_declaration",
"named": true
},
{
"type": "verbatim_environment",
"named": true
@ -5778,6 +6111,10 @@
"type": "acronym_reference",
"named": true
},
{
"type": "author_declaration",
"named": true
},
{
"type": "biblatex_include",
"named": true
@ -5950,6 +6287,10 @@
"type": "tikz_library_import",
"named": true
},
{
"type": "title_declaration",
"named": true
},
{
"type": "verbatim_environment",
"named": true
@ -6013,6 +6354,10 @@
"type": "acronym_reference",
"named": true
},
{
"type": "author_declaration",
"named": true
},
{
"type": "biblatex_include",
"named": true
@ -6137,6 +6482,10 @@
"type": "tikz_library_import",
"named": true
},
{
"type": "title_declaration",
"named": true
},
{
"type": "verbatim_include",
"named": true
@ -6291,6 +6640,21 @@
}
}
},
{
"type": "title_declaration",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "curly_group",
"named": true
}
]
}
},
{
"type": "value",
"named": true,
@ -6307,6 +6671,10 @@
"type": "acronym_reference",
"named": true
},
{
"type": "author_declaration",
"named": true
},
{
"type": "biblatex_include",
"named": true
@ -6451,6 +6819,10 @@
"type": "tikz_library_import",
"named": true
},
{
"type": "title_declaration",
"named": true
},
{
"type": "verbatim_include",
"named": true
@ -7012,6 +7384,10 @@
"type": "\\addsec*",
"named": false
},
{
"type": "\\author",
"named": false
},
{
"type": "\\autocite",
"named": false
@ -7556,6 +7932,10 @@
"type": "\\textcolor",
"named": false
},
{
"type": "\\title",
"named": false
},
{
"type": "\\tvolcite",
"named": false

981501
src/parser.c vendored

File diff suppressed because it is too large Load Diff

@ -150,3 +150,24 @@ Command definition with default arg
(curly_group
(text
(placeholder)))))
================================================================================
Author command
================================================================================
\author{John Doe \and Foo Bar}
--------------------------------------------------------------------------------
(source_file
(author_declaration
(curly_group_author_list
(author
(text
(word)
(word)))
(command_name)
(author
(text
(word)
(word))))))