summaryrefslogtreecommitdiff
path: root/support/texlab/crates/parser
diff options
context:
space:
mode:
Diffstat (limited to 'support/texlab/crates/parser')
-rw-r--r--support/texlab/crates/parser/Cargo.toml7
-rw-r--r--support/texlab/crates/parser/src/bibtex.rs15
-rw-r--r--support/texlab/crates/parser/src/bibtex/tests.rs3994
-rw-r--r--support/texlab/crates/parser/src/build_log.rs12
-rw-r--r--support/texlab/crates/parser/src/build_log/tests.rs1228
-rw-r--r--support/texlab/crates/parser/src/latex.rs17
-rw-r--r--support/texlab/crates/parser/src/latex/tests.rs3523
-rw-r--r--support/texlab/crates/parser/src/latexmkrc.rs52
-rw-r--r--support/texlab/crates/parser/src/lib.rs6
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@comment.txt.snap10
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@issue_809.txt.snap32
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@issue_945.txt.snap27
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@preamble.txt.snap17
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__aho_2006.txt.snap132
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__aksin_2006.txt.snap258
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__almendro_1998.txt.snap246
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__averroes_1998.txt.snap351
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__betram_1996.txt.snap208
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__blom_2021.txt.snap223
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__combi_2004.txt.snap251
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__erwin_2007.txt.snap239
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__jain_1999.txt.snap267
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__kastenholz_2006.txt.snap302
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__knuth_1984.txt.snap320
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__matuz_1990.txt.snap176
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__nietzsche_1998.txt.snap368
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__rivest_1978.txt.snap232
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@001.txt.snap27
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@002.txt.snap20
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@003.txt.snap25
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@004.txt.snap31
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@005.txt.snap30
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@006.txt.snap69
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@007.txt.snap20
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@block_comments.txt.snap30
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@caption__caption_default.txt.snap26
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@caption__caption_default_error.txt.snap25
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@caption__caption_figure.txt.snap30
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@caption__caption_minimal.txt.snap21
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@caption__caption_minimal_error.txt.snap20
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_empty.txt.snap13
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_missing_brace.txt.snap14
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_multiple_keys.txt.snap19
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_prenote.txt.snap20
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_prenote_postnote.txt.snap25
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_redundant_comma.txt.snap17
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_simple.txt.snap15
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_star.txt.snap15
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_definition_simple.txt.snap29
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_reference_simple.txt.snap15
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_set_definition_error1.txt.snap33
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_set_definition_error2.txt.snap23
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_set_definition_error3.txt.snap18
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_set_definition_error4.txt.snap10
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_set_definition_simple.txt.snap38
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_no_argc.txt.snap19
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_no_impl.txt.snap14
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_no_impl_error.txt.snap13
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_optional.txt.snap29
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_simple.txt.snap25
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_with_begin.txt.snap39
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__math_operator_no_impl.txt.snap14
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__math_operator_simple.txt.snap19
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_asymptote.txt.snap41
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_definition.txt.snap40
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_definition_optional_arg.txt.snap35
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_nested.txt.snap41
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_nested_missing_braces.txt.snap42
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_simple.txt.snap29
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@equation.txt.snap17
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@equation_missing_begin.txt.snap32
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@generic_command_args.txt.snap20
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@generic_command_empty.txt.snap10
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@generic_command_escape.txt.snap10
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_declaration.txt.snap50
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_definition_options.txt.snap47
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_definition_simple.txt.snap29
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_package.txt.snap30
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_reference_options.txt.snap30
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_reference_simple.txt.snap15
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__glossary_entry_definition_simple.txt.snap34
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__glossary_entry_reference_options.txt.snap33
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__glossary_entry_reference_simple.txt.snap15
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@graphics_path.txt.snap18
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@graphics_path_command.txt.snap23
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@graphics_path_options.txt.snap23
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__curly_group_missing_end.txt.snap14
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__curly_group_simple.txt.snap15
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__equation_missing_end.txt.snap32
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__escaped_brackets.txt.snap18
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__unmatched_braces.txt.snap12
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__unmatched_brackets.txt.snap12
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__unmatched_brackets_with_group.txt.snap15
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@hello_world.txt.snap12
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__biblatex_include_options.txt.snap31
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__biblatex_include_simple.txt.snap15
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__bibtex_include_simple.txt.snap15
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__class_include_empty.txt.snap13
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__class_include_options.txt.snap38
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__class_include_simple.txt.snap15
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__graphics_include_command.txt.snap31
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__graphics_include_complicated_options.txt.snap26
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__graphics_include_options.txt.snap26
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__graphics_include_simple.txt.snap15
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__import_incomplete.txt.snap14
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__import_simple.txt.snap20
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__inkscape_include_options.txt.snap26
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__inkscape_include_simple.txt.snap15
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__latex_include_equality_sign.txt.snap17
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__latex_include_simple.txt.snap15
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__latex_input_path_brackets.txt.snap19
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__package_include_empty.txt.snap13
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__package_include_multiple.txt.snap19
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__package_include_options.txt.snap38
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__package_include_simple.txt.snap15
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__pgf_library_import_simple.txt.snap15
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__svg_include_options.txt.snap26
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__svg_include_simple.txt.snap15
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__tikz_library_import_simple.txt.snap15
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__verbatim_include_simple.txt.snap15
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@inline.txt.snap26
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@inline_double_dollar.txt.snap26
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_568.txt.snap28
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_745.txt.snap131
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_789.txt.snap15
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_828.txt.snap22
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_853.txt.snap62
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_857.txt.snap33
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_874.txt.snap28
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_919.txt.snap61
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_931.txt.snap16
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_definition_line_break.txt.snap19
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_definition_simple.txt.snap15
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_number.txt.snap23
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_equation.txt.snap15
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_incomplete.txt.snap32
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_multiple.txt.snap19
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_range_error.txt.snap19
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_range_incomplete.txt.snap15
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_range_simple.txt.snap20
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_simple.txt.snap15
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@parameter.txt.snap10
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@parameter_error.txt.snap10
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@structure__paragraphs.txt.snap67
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@structure__structure_enum_item.txt.snap47
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@structure__structure_invalid_nesting.txt.snap23
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@structure__structure_nested.txt.snap57
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@structure__structure_siblings.txt.snap29
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_full.txt.snap30
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_name_with_counter.txt.snap20
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_name_with_description.txt.snap20
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_name_with_description_and_counter.txt.snap25
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_only_name.txt.snap15
-rw-r--r--support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_thmtools.txt.snap35
-rw-r--r--support/texlab/crates/parser/src/test_data/bibtex/comment.txt6
-rw-r--r--support/texlab/crates/parser/src/test_data/bibtex/issue_809.txt3
-rw-r--r--support/texlab/crates/parser/src/test_data/bibtex/issue_945.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/bibtex/preamble.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/bibtex/samples/aho_2006.txt8
-rw-r--r--support/texlab/crates/parser/src/test_data/bibtex/samples/aksin_2006.txt16
-rw-r--r--support/texlab/crates/parser/src/test_data/bibtex/samples/almendro_1998.txt14
-rw-r--r--support/texlab/crates/parser/src/test_data/bibtex/samples/averroes_1998.txt21
-rw-r--r--support/texlab/crates/parser/src/test_data/bibtex/samples/betram_1996.txt16
-rw-r--r--support/texlab/crates/parser/src/test_data/bibtex/samples/blom_2021.txt20
-rw-r--r--support/texlab/crates/parser/src/test_data/bibtex/samples/combi_2004.txt16
-rw-r--r--support/texlab/crates/parser/src/test_data/bibtex/samples/erwin_2007.txt14
-rw-r--r--support/texlab/crates/parser/src/test_data/bibtex/samples/jain_1999.txt18
-rw-r--r--support/texlab/crates/parser/src/test_data/bibtex/samples/kastenholz_2006.txt20
-rw-r--r--support/texlab/crates/parser/src/test_data/bibtex/samples/knuth_1984.txt22
-rw-r--r--support/texlab/crates/parser/src/test_data/bibtex/samples/matuz_1990.txt14
-rw-r--r--support/texlab/crates/parser/src/test_data/bibtex/samples/nietzsche_1998.txt24
-rw-r--r--support/texlab/crates/parser/src/test_data/bibtex/samples/rivest_1978.txt17
-rw-r--r--support/texlab/crates/parser/src/test_data/build_log/001.txt83
-rw-r--r--support/texlab/crates/parser/src/test_data/build_log/002.txt64
-rw-r--r--support/texlab/crates/parser/src/test_data/build_log/003.txt65
-rw-r--r--support/texlab/crates/parser/src/test_data/build_log/004.txt83
-rw-r--r--support/texlab/crates/parser/src/test_data/build_log/005.txt385
-rw-r--r--support/texlab/crates/parser/src/test_data/build_log/006.txt122
-rw-r--r--support/texlab/crates/parser/src/test_data/build_log/007.txt176
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/block_comments.txt9
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/caption/caption_default.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/caption/caption_default_error.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/caption/caption_figure.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/caption/caption_minimal.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/caption/caption_minimal_error.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/citation/citation_empty.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/citation/citation_missing_brace.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/citation/citation_multiple_keys.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/citation/citation_prenote.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/citation/citation_prenote_postnote.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/citation/citation_redundant_comma.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/citation/citation_simple.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/citation/citation_star.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/color/color_definition_simple.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/color/color_reference_simple.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/color/color_set_definition_error1.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/color/color_set_definition_error2.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/color/color_set_definition_error3.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/color/color_set_definition_error4.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/color/color_set_definition_simple.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_no_argc.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_no_impl.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_no_impl_error.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_optional.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_simple.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_with_begin.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/command_definition/math_operator_no_impl.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/command_definition/math_operator_simple.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/environment/environment_asymptote.txt3
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/environment/environment_definition.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/environment/environment_definition_optional_arg.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/environment/environment_nested.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/environment/environment_nested_missing_braces.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/environment/environment_simple.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/equation.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/equation_missing_begin.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/generic_command_args.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/generic_command_empty.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/generic_command_escape.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/glossary/acronym_declaration.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/glossary/acronym_definition_options.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/glossary/acronym_definition_simple.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/glossary/acronym_package.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/glossary/acronym_reference_options.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/glossary/acronym_reference_simple.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/glossary/glossary_entry_definition_simple.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/glossary/glossary_entry_reference_options.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/glossary/glossary_entry_reference_simple.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/graphics_path.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/graphics_path_command.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/graphics_path_options.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/group/curly_group_missing_end.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/group/curly_group_simple.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/group/equation_missing_end.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/group/escaped_brackets.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/group/unmatched_braces.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/group/unmatched_brackets.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/group/unmatched_brackets_with_group.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/hello_world.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/include/biblatex_include_options.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/include/biblatex_include_simple.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/include/bibtex_include_simple.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/include/class_include_empty.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/include/class_include_options.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/include/class_include_simple.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/include/graphics_include_command.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/include/graphics_include_complicated_options.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/include/graphics_include_options.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/include/graphics_include_simple.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/include/import_incomplete.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/include/import_simple.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/include/inkscape_include_options.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/include/inkscape_include_simple.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/include/latex_include_equality_sign.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/include/latex_include_simple.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/include/latex_input_path_brackets.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/include/package_include_empty.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/include/package_include_multiple.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/include/package_include_options.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/include/package_include_simple.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/include/pgf_library_import_simple.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/include/svg_include_options.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/include/svg_include_simple.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/include/tikz_library_import_simple.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/include/verbatim_include_simple.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/inline.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/inline_double_dollar.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/issue_568.txt2
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/issue_745.txt21
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/issue_789.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/issue_828.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/issue_853.txt8
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/issue_857.txt3
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/issue_874.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/issue_919.txt11
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/issue_931.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/label/label_definition_line_break.txt2
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/label/label_definition_simple.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/label/label_number.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/label/label_reference_equation.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/label/label_reference_incomplete.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/label/label_reference_multiple.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/label/label_reference_range_error.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/label/label_reference_range_incomplete.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/label/label_reference_range_simple.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/label/label_reference_simple.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/parameter.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/parameter_error.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/structure/paragraphs.txt11
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/structure/structure_enum_item.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/structure/structure_invalid_nesting.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/structure/structure_nested.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/structure/structure_siblings.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_full.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_name_with_counter.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_name_with_description.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_name_with_description_and_counter.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_only_name.txt1
-rw-r--r--support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_thmtools.txt1
299 files changed, 8809 insertions, 8308 deletions
diff --git a/support/texlab/crates/parser/Cargo.toml b/support/texlab/crates/parser/Cargo.toml
index 989569d0b6..47ab9bc721 100644
--- a/support/texlab/crates/parser/Cargo.toml
+++ b/support/texlab/crates/parser/Cargo.toml
@@ -9,13 +9,14 @@ rust-version.workspace = true
[dependencies]
logos = "0.13.0"
once_cell = "1.18.0"
-regex = "1.9.1"
-rowan = "0.15.11"
+regex = "1.10.2"
+rowan = "0.15.13"
rustc-hash = "1.1.0"
syntax = { path = "../syntax" }
+tempfile = "3.8.1"
[dev-dependencies]
-insta = { version = "1.32.0", features = ["glob", "redactions", "json"] }
+expect-test = "1.4.1"
[lib]
doctest = false
diff --git a/support/texlab/crates/parser/src/bibtex.rs b/support/texlab/crates/parser/src/bibtex.rs
index d74254b2c5..fda0d4a0ad 100644
--- a/support/texlab/crates/parser/src/bibtex.rs
+++ b/support/texlab/crates/parser/src/bibtex.rs
@@ -436,17 +436,4 @@ impl From<ContentToken> for SyntaxKind {
}
#[cfg(test)]
-mod tests {
- use syntax::bibtex;
-
- use super::parse_bibtex;
-
- #[test]
- fn test_parse() {
- insta::glob!("test_data/bibtex/{,**/}*.txt", |path| {
- let text = std::fs::read_to_string(path).unwrap().replace("\r\n", "\n");
- let root = bibtex::SyntaxNode::new_root(parse_bibtex(&text));
- insta::assert_debug_snapshot!(root);
- });
- }
-}
+mod tests;
diff --git a/support/texlab/crates/parser/src/bibtex/tests.rs b/support/texlab/crates/parser/src/bibtex/tests.rs
new file mode 100644
index 0000000000..e2bb1314d8
--- /dev/null
+++ b/support/texlab/crates/parser/src/bibtex/tests.rs
@@ -0,0 +1,3994 @@
+use expect_test::{expect, Expect};
+
+use crate::parse_bibtex;
+
+fn check(input: &str, expect: Expect) {
+ let root = syntax::bibtex::SyntaxNode::new_root(parse_bibtex(input));
+ expect.assert_debug_eq(&root);
+}
+
+#[test]
+fn test_smoke() {
+ check(
+ r#""#,
+ expect![[r#"
+ ROOT@0..0
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_preamble() {
+ check(
+ r#"@article{test, author = {\"{\i}}}"#,
+ expect![[r#"
+ ROOT@0..33
+ ENTRY@0..33
+ TYPE@0..8 "@article"
+ L_DELIM@8..9 "{"
+ NAME@9..13 "test"
+ COMMA@13..14 ","
+ WHITESPACE@14..15 " "
+ FIELD@15..32
+ NAME@15..21 "author"
+ WHITESPACE@21..22 " "
+ EQ@22..23 "="
+ WHITESPACE@23..24 " "
+ CURLY_GROUP@24..32
+ L_CURLY@24..25 "{"
+ ACCENT@25..31
+ ACCENT_NAME@25..27 "\\\""
+ L_CURLY@27..28 "{"
+ COMMAND_NAME@28..30 "\\i"
+ R_CURLY@30..31 "}"
+ R_CURLY@31..32 "}"
+ R_DELIM@32..33 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_comment() {
+ check(
+ r#"Some junk here
+
+@comment{foo,
+ author = {Foo Bar},
+ title = {Some Title},
+}
+"#,
+ expect![[r#"
+ ROOT@0..82
+ JUNK@0..16 "Some junk here\n\n"
+ TYPE@16..24 "@comment"
+ JUNK@24..82 "{foo,\n author = {F ..."
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_issue_809() {
+ check(
+ r#"@article{issue_809,
+ title = {foo (" bar) baz},
+}"#,
+ expect![[r#"
+ ROOT@0..50
+ ENTRY@0..50
+ TYPE@0..8 "@article"
+ L_DELIM@8..9 "{"
+ NAME@9..18 "issue_809"
+ COMMA@18..19 ","
+ WHITESPACE@19..22 "\n "
+ FIELD@22..48
+ NAME@22..27 "title"
+ WHITESPACE@27..28 " "
+ EQ@28..29 "="
+ WHITESPACE@29..30 " "
+ CURLY_GROUP@30..47
+ L_CURLY@30..31 "{"
+ WORD@31..34 "foo"
+ WHITESPACE@34..35 " "
+ WORD@35..36 "("
+ QUOTE@36..37 "\""
+ WHITESPACE@37..38 " "
+ WORD@38..42 "bar)"
+ WHITESPACE@42..43 " "
+ WORD@43..46 "baz"
+ R_CURLY@46..47 "}"
+ COMMA@47..48 ","
+ WHITESPACE@48..49 "\n"
+ R_DELIM@49..50 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_issue_945() {
+ check(
+ r#"@article{test, author = {\"{\i}}}"#,
+ expect![[r#"
+ ROOT@0..33
+ ENTRY@0..33
+ TYPE@0..8 "@article"
+ L_DELIM@8..9 "{"
+ NAME@9..13 "test"
+ COMMA@13..14 ","
+ WHITESPACE@14..15 " "
+ FIELD@15..32
+ NAME@15..21 "author"
+ WHITESPACE@21..22 " "
+ EQ@22..23 "="
+ WHITESPACE@23..24 " "
+ CURLY_GROUP@24..32
+ L_CURLY@24..25 "{"
+ ACCENT@25..31
+ ACCENT_NAME@25..27 "\\\""
+ L_CURLY@27..28 "{"
+ COMMAND_NAME@28..30 "\\i"
+ R_CURLY@30..31 "}"
+ R_CURLY@31..32 "}"
+ R_DELIM@32..33 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_aho_2006() {
+ check(
+ r#"@book{10.5555/1177220,
+ author = {Aho, Alfred V. and Lam, Monica S. and Sethi, Ravi and Ullman, Jeffrey D.},
+ title = {Compilers: Principles, Techniques, and Tools (2nd Edition)},
+ year = {2006},
+ isbn = {0321486811},
+ publisher = {Addison-Wesley Longman Publishing Co., Inc.},
+ address = {USA}
+}"#,
+ expect![[r#"
+ ROOT@0..314
+ ENTRY@0..314
+ TYPE@0..5 "@book"
+ L_DELIM@5..6 "{"
+ NAME@6..21 "10.5555/1177220"
+ COMMA@21..22 ","
+ WHITESPACE@22..27 "\n "
+ FIELD@27..111
+ NAME@27..33 "author"
+ WHITESPACE@33..34 " "
+ EQ@34..35 "="
+ WHITESPACE@35..36 " "
+ CURLY_GROUP@36..110
+ L_CURLY@36..37 "{"
+ WORD@37..40 "Aho"
+ COMMA@40..41 ","
+ WHITESPACE@41..42 " "
+ WORD@42..48 "Alfred"
+ WHITESPACE@48..49 " "
+ WORD@49..51 "V."
+ WHITESPACE@51..52 " "
+ WORD@52..55 "and"
+ WHITESPACE@55..56 " "
+ WORD@56..59 "Lam"
+ COMMA@59..60 ","
+ WHITESPACE@60..61 " "
+ WORD@61..67 "Monica"
+ WHITESPACE@67..68 " "
+ WORD@68..70 "S."
+ WHITESPACE@70..71 " "
+ WORD@71..74 "and"
+ WHITESPACE@74..75 " "
+ WORD@75..80 "Sethi"
+ COMMA@80..81 ","
+ WHITESPACE@81..82 " "
+ WORD@82..86 "Ravi"
+ WHITESPACE@86..87 " "
+ WORD@87..90 "and"
+ WHITESPACE@90..91 " "
+ WORD@91..97 "Ullman"
+ COMMA@97..98 ","
+ WHITESPACE@98..99 " "
+ WORD@99..106 "Jeffrey"
+ WHITESPACE@106..107 " "
+ WORD@107..109 "D."
+ R_CURLY@109..110 "}"
+ COMMA@110..111 ","
+ WHITESPACE@111..116 "\n "
+ FIELD@116..185
+ NAME@116..121 "title"
+ WHITESPACE@121..122 " "
+ EQ@122..123 "="
+ WHITESPACE@123..124 " "
+ CURLY_GROUP@124..184
+ L_CURLY@124..125 "{"
+ WORD@125..135 "Compilers:"
+ WHITESPACE@135..136 " "
+ WORD@136..146 "Principles"
+ COMMA@146..147 ","
+ WHITESPACE@147..148 " "
+ WORD@148..158 "Techniques"
+ COMMA@158..159 ","
+ WHITESPACE@159..160 " "
+ WORD@160..163 "and"
+ WHITESPACE@163..164 " "
+ WORD@164..169 "Tools"
+ WHITESPACE@169..170 " "
+ WORD@170..174 "(2nd"
+ WHITESPACE@174..175 " "
+ WORD@175..183 "Edition)"
+ R_CURLY@183..184 "}"
+ COMMA@184..185 ","
+ WHITESPACE@185..190 "\n "
+ FIELD@190..204
+ NAME@190..194 "year"
+ WHITESPACE@194..195 " "
+ EQ@195..196 "="
+ WHITESPACE@196..197 " "
+ CURLY_GROUP@197..203
+ L_CURLY@197..198 "{"
+ INTEGER@198..202 "2006"
+ R_CURLY@202..203 "}"
+ COMMA@203..204 ","
+ WHITESPACE@204..209 "\n "
+ FIELD@209..229
+ NAME@209..213 "isbn"
+ WHITESPACE@213..214 " "
+ EQ@214..215 "="
+ WHITESPACE@215..216 " "
+ CURLY_GROUP@216..228
+ L_CURLY@216..217 "{"
+ INTEGER@217..227 "0321486811"
+ R_CURLY@227..228 "}"
+ COMMA@228..229 ","
+ WHITESPACE@229..234 "\n "
+ FIELD@234..292
+ NAME@234..243 "publisher"
+ WHITESPACE@243..244 " "
+ EQ@244..245 "="
+ WHITESPACE@245..246 " "
+ CURLY_GROUP@246..291
+ L_CURLY@246..247 "{"
+ WORD@247..261 "Addison-Wesley"
+ WHITESPACE@261..262 " "
+ WORD@262..269 "Longman"
+ WHITESPACE@269..270 " "
+ WORD@270..280 "Publishing"
+ WHITESPACE@280..281 " "
+ WORD@281..284 "Co."
+ COMMA@284..285 ","
+ WHITESPACE@285..286 " "
+ WORD@286..290 "Inc."
+ R_CURLY@290..291 "}"
+ COMMA@291..292 ","
+ WHITESPACE@292..297 "\n "
+ FIELD@297..313
+ NAME@297..304 "address"
+ WHITESPACE@304..305 " "
+ EQ@305..306 "="
+ WHITESPACE@306..307 " "
+ CURLY_GROUP@307..312
+ L_CURLY@307..308 "{"
+ WORD@308..311 "USA"
+ R_CURLY@311..312 "}"
+ WHITESPACE@312..313 "\n"
+ R_DELIM@313..314 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_aksin_2006() {
+ check(
+ r#"@string{jomch = {J.~Organomet. Chem.}}
+
+@article{aksin,
+ author = {Aks{\i}n, {\"O}zge and T{\"u}rkmen, Hayati and Artok, Levent
+ and {\c{C}}etinkaya, Bekir and Ni, Chaoying and
+ B{\"u}y{\"u}kg{\"u}ng{\"o}r, Orhan and {\"O}zkal, Erhan},
+ title = {Effect of immobilization on catalytic characteristics of
+ saturated {Pd-N}-heterocyclic carbenes in {Mizoroki-Heck}
+ reactions},
+ journaltitle = jomch,
+ date = 2006,
+ volume = 691,
+ number = 13,
+ pages = {3027-3036},
+ indextitle = {Effect of immobilization on catalytic characteristics},
+}"#,
+ expect![[r#"
+ ROOT@0..679
+ STRING@0..40
+ TYPE@0..7 "@string"
+ L_DELIM@7..8 "{"
+ NAME@8..13 "jomch"
+ WHITESPACE@13..16 " "
+ EQ@16..17 "="
+ WHITESPACE@17..18 " "
+ CURLY_GROUP@18..39
+ L_CURLY@18..19 "{"
+ WORD@19..21 "J."
+ NBSP@21..22 "~"
+ WORD@22..32 "Organomet."
+ WHITESPACE@32..33 " "
+ WORD@33..38 "Chem."
+ R_CURLY@38..39 "}"
+ R_DELIM@39..40 "}"
+ JUNK@40..42 "\n\n"
+ ENTRY@42..679
+ TYPE@42..50 "@article"
+ L_DELIM@50..51 "{"
+ NAME@51..56 "aksin"
+ COMMA@56..57 ","
+ WHITESPACE@57..62 "\n "
+ FIELD@62..284
+ NAME@62..68 "author"
+ WHITESPACE@68..75 " "
+ EQ@75..76 "="
+ WHITESPACE@76..77 " "
+ CURLY_GROUP@77..283
+ L_CURLY@77..78 "{"
+ WORD@78..81 "Aks"
+ CURLY_GROUP@81..85
+ L_CURLY@81..82 "{"
+ COMMAND@82..84
+ COMMAND_NAME@82..84 "\\i"
+ R_CURLY@84..85 "}"
+ WORD@85..86 "n"
+ COMMA@86..87 ","
+ WHITESPACE@87..88 " "
+ CURLY_GROUP@88..93
+ L_CURLY@88..89 "{"
+ ACCENT@89..92
+ ACCENT_NAME@89..91 "\\\""
+ WORD@91..92 "O"
+ R_CURLY@92..93 "}"
+ WORD@93..96 "zge"
+ WHITESPACE@96..97 " "
+ WORD@97..100 "and"
+ WHITESPACE@100..101 " "
+ WORD@101..102 "T"
+ CURLY_GROUP@102..107
+ L_CURLY@102..103 "{"
+ ACCENT@103..106
+ ACCENT_NAME@103..105 "\\\""
+ WORD@105..106 "u"
+ R_CURLY@106..107 "}"
+ WORD@107..112 "rkmen"
+ COMMA@112..113 ","
+ WHITESPACE@113..114 " "
+ WORD@114..120 "Hayati"
+ WHITESPACE@120..121 " "
+ WORD@121..124 "and"
+ WHITESPACE@124..125 " "
+ WORD@125..130 "Artok"
+ COMMA@130..131 ","
+ WHITESPACE@131..132 " "
+ WORD@132..138 "Levent"
+ WHITESPACE@138..159 "\n "
+ WORD@159..162 "and"
+ WHITESPACE@162..163 " "
+ CURLY_GROUP@163..170
+ L_CURLY@163..164 "{"
+ ACCENT@164..169
+ ACCENT_NAME@164..166 "\\c"
+ L_CURLY@166..167 "{"
+ WORD@167..168 "C"
+ R_CURLY@168..169 "}"
+ R_CURLY@169..170 "}"
+ WORD@170..178 "etinkaya"
+ COMMA@178..179 ","
+ WHITESPACE@179..180 " "
+ WORD@180..185 "Bekir"
+ WHITESPACE@185..186 " "
+ WORD@186..189 "and"
+ WHITESPACE@189..190 " "
+ WORD@190..192 "Ni"
+ COMMA@192..193 ","
+ WHITESPACE@193..194 " "
+ WORD@194..202 "Chaoying"
+ WHITESPACE@202..203 " "
+ WORD@203..206 "and"
+ WHITESPACE@206..227 "\n "
+ WORD@227..228 "B"
+ CURLY_GROUP@228..233
+ L_CURLY@228..229 "{"
+ ACCENT@229..232
+ ACCENT_NAME@229..231 "\\\""
+ WORD@231..232 "u"
+ R_CURLY@232..233 "}"
+ WORD@233..234 "y"
+ CURLY_GROUP@234..239
+ L_CURLY@234..235 "{"
+ ACCENT@235..238
+ ACCENT_NAME@235..237 "\\\""
+ WORD@237..238 "u"
+ R_CURLY@238..239 "}"
+ WORD@239..241 "kg"
+ CURLY_GROUP@241..246
+ L_CURLY@241..242 "{"
+ ACCENT@242..245
+ ACCENT_NAME@242..244 "\\\""
+ WORD@244..245 "u"
+ R_CURLY@245..246 "}"
+ WORD@246..248 "ng"
+ CURLY_GROUP@248..253
+ L_CURLY@248..249 "{"
+ ACCENT@249..252
+ ACCENT_NAME@249..251 "\\\""
+ WORD@251..252 "o"
+ R_CURLY@252..253 "}"
+ WORD@253..254 "r"
+ COMMA@254..255 ","
+ WHITESPACE@255..256 " "
+ WORD@256..261 "Orhan"
+ WHITESPACE@261..262 " "
+ WORD@262..265 "and"
+ WHITESPACE@265..266 " "
+ CURLY_GROUP@266..271
+ L_CURLY@266..267 "{"
+ ACCENT@267..270
+ ACCENT_NAME@267..269 "\\\""
+ WORD@269..270 "O"
+ R_CURLY@270..271 "}"
+ WORD@271..275 "zkal"
+ COMMA@275..276 ","
+ WHITESPACE@276..277 " "
+ WORD@277..282 "Erhan"
+ R_CURLY@282..283 "}"
+ COMMA@283..284 ","
+ WHITESPACE@284..289 "\n "
+ FIELD@289..471
+ NAME@289..294 "title"
+ WHITESPACE@294..302 " "
+ EQ@302..303 "="
+ WHITESPACE@303..304 " "
+ CURLY_GROUP@304..470
+ L_CURLY@304..305 "{"
+ WORD@305..311 "Effect"
+ WHITESPACE@311..312 " "
+ WORD@312..314 "of"
+ WHITESPACE@314..315 " "
+ WORD@315..329 "immobilization"
+ WHITESPACE@329..330 " "
+ WORD@330..332 "on"
+ WHITESPACE@332..333 " "
+ WORD@333..342 "catalytic"
+ WHITESPACE@342..343 " "
+ WORD@343..358 "characteristics"
+ WHITESPACE@358..359 " "
+ WORD@359..361 "of"
+ WHITESPACE@361..382 "\n "
+ WORD@382..391 "saturated"
+ WHITESPACE@391..392 " "
+ CURLY_GROUP@392..398
+ L_CURLY@392..393 "{"
+ WORD@393..397 "Pd-N"
+ R_CURLY@397..398 "}"
+ WORD@398..411 "-heterocyclic"
+ WHITESPACE@411..412 " "
+ WORD@412..420 "carbenes"
+ WHITESPACE@420..421 " "
+ WORD@421..423 "in"
+ WHITESPACE@423..424 " "
+ CURLY_GROUP@424..439
+ L_CURLY@424..425 "{"
+ WORD@425..438 "Mizoroki-Heck"
+ R_CURLY@438..439 "}"
+ WHITESPACE@439..460 "\n "
+ WORD@460..469 "reactions"
+ R_CURLY@469..470 "}"
+ COMMA@470..471 ","
+ WHITESPACE@471..476 "\n "
+ FIELD@476..497
+ NAME@476..488 "journaltitle"
+ WHITESPACE@488..489 " "
+ EQ@489..490 "="
+ WHITESPACE@490..491 " "
+ LITERAL@491..496
+ NAME@491..496 "jomch"
+ COMMA@496..497 ","
+ WHITESPACE@497..502 "\n "
+ FIELD@502..522
+ NAME@502..506 "date"
+ WHITESPACE@506..515 " "
+ EQ@515..516 "="
+ WHITESPACE@516..517 " "
+ LITERAL@517..521
+ INTEGER@517..521 "2006"
+ COMMA@521..522 ","
+ WHITESPACE@522..527 "\n "
+ FIELD@527..546
+ NAME@527..533 "volume"
+ WHITESPACE@533..540 " "
+ EQ@540..541 "="
+ WHITESPACE@541..542 " "
+ LITERAL@542..545
+ INTEGER@542..545 "691"
+ COMMA@545..546 ","
+ WHITESPACE@546..551 "\n "
+ FIELD@551..569
+ NAME@551..557 "number"
+ WHITESPACE@557..564 " "
+ EQ@564..565 "="
+ WHITESPACE@565..566 " "
+ LITERAL@566..568
+ INTEGER@566..568 "13"
+ COMMA@568..569 ","
+ WHITESPACE@569..574 "\n "
+ FIELD@574..601
+ NAME@574..579 "pages"
+ WHITESPACE@579..587 " "
+ EQ@587..588 "="
+ WHITESPACE@588..589 " "
+ CURLY_GROUP@589..600
+ L_CURLY@589..590 "{"
+ WORD@590..599 "3027-3036"
+ R_CURLY@599..600 "}"
+ COMMA@600..601 ","
+ WHITESPACE@601..606 "\n "
+ FIELD@606..677
+ NAME@606..616 "indextitle"
+ WHITESPACE@616..619 " "
+ EQ@619..620 "="
+ WHITESPACE@620..621 " "
+ CURLY_GROUP@621..676
+ L_CURLY@621..622 "{"
+ WORD@622..628 "Effect"
+ WHITESPACE@628..629 " "
+ WORD@629..631 "of"
+ WHITESPACE@631..632 " "
+ WORD@632..646 "immobilization"
+ WHITESPACE@646..647 " "
+ WORD@647..649 "on"
+ WHITESPACE@649..650 " "
+ WORD@650..659 "catalytic"
+ WHITESPACE@659..660 " "
+ WORD@660..675 "characteristics"
+ R_CURLY@675..676 "}"
+ COMMA@676..677 ","
+ WHITESPACE@677..678 "\n"
+ R_DELIM@678..679 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_almendro_1998() {
+ check(
+ r#"@patent{almendro,
+ author = {Almendro, Jos{\'e} L. and Mart{\'i}n, Jacinto and S{\'a}nchez,
+ Alberto and Nozal, Fernando},
+ title = {Elektromagnetisches Signalhorn},
+ number = {EU-29702195U},
+ date = 1998,
+ location = {countryfr and countryuk and countryde},
+ langid = {german},
+ annotation = {This is a \texttt{patent} entry with a \texttt{location}
+ field. The number is given in the \texttt{number} field. Note
+ the format of the \texttt{location} field in the database
+ file. Compare \texttt{laufenberg}, \texttt{sorace}, and
+ \texttt{kowalik}},
+}"#,
+ expect![[r#"
+ ROOT@0..706
+ ENTRY@0..706
+ TYPE@0..7 "@patent"
+ L_DELIM@7..8 "{"
+ NAME@8..16 "almendro"
+ COMMA@16..17 ","
+ WHITESPACE@17..22 "\n "
+ FIELD@22..150
+ NAME@22..28 "author"
+ WHITESPACE@28..35 " "
+ EQ@35..36 "="
+ WHITESPACE@36..37 " "
+ CURLY_GROUP@37..149
+ L_CURLY@37..38 "{"
+ WORD@38..46 "Almendro"
+ COMMA@46..47 ","
+ WHITESPACE@47..48 " "
+ WORD@48..51 "Jos"
+ CURLY_GROUP@51..56
+ L_CURLY@51..52 "{"
+ ACCENT@52..55
+ ACCENT_NAME@52..54 "\\'"
+ WORD@54..55 "e"
+ R_CURLY@55..56 "}"
+ WHITESPACE@56..57 " "
+ WORD@57..59 "L."
+ WHITESPACE@59..60 " "
+ WORD@60..63 "and"
+ WHITESPACE@63..64 " "
+ WORD@64..68 "Mart"
+ CURLY_GROUP@68..73
+ L_CURLY@68..69 "{"
+ ACCENT@69..72
+ ACCENT_NAME@69..71 "\\'"
+ WORD@71..72 "i"
+ R_CURLY@72..73 "}"
+ WORD@73..74 "n"
+ COMMA@74..75 ","
+ WHITESPACE@75..76 " "
+ WORD@76..83 "Jacinto"
+ WHITESPACE@83..84 " "
+ WORD@84..87 "and"
+ WHITESPACE@87..88 " "
+ WORD@88..89 "S"
+ CURLY_GROUP@89..94
+ L_CURLY@89..90 "{"
+ ACCENT@90..93
+ ACCENT_NAME@90..92 "\\'"
+ WORD@92..93 "a"
+ R_CURLY@93..94 "}"
+ WORD@94..99 "nchez"
+ COMMA@99..100 ","
+ WHITESPACE@100..121 "\n "
+ WORD@121..128 "Alberto"
+ WHITESPACE@128..129 " "
+ WORD@129..132 "and"
+ WHITESPACE@132..133 " "
+ WORD@133..138 "Nozal"
+ COMMA@138..139 ","
+ WHITESPACE@139..140 " "
+ WORD@140..148 "Fernando"
+ R_CURLY@148..149 "}"
+ COMMA@149..150 ","
+ WHITESPACE@150..155 "\n "
+ FIELD@155..203
+ NAME@155..160 "title"
+ WHITESPACE@160..168 " "
+ EQ@168..169 "="
+ WHITESPACE@169..170 " "
+ CURLY_GROUP@170..202
+ L_CURLY@170..171 "{"
+ WORD@171..190 "Elektromagnetisches"
+ WHITESPACE@190..191 " "
+ WORD@191..201 "Signalhorn"
+ R_CURLY@201..202 "}"
+ COMMA@202..203 ","
+ WHITESPACE@203..208 "\n "
+ FIELD@208..238
+ NAME@208..214 "number"
+ WHITESPACE@214..221 " "
+ EQ@221..222 "="
+ WHITESPACE@222..223 " "
+ CURLY_GROUP@223..237
+ L_CURLY@223..224 "{"
+ WORD@224..236 "EU-29702195U"
+ R_CURLY@236..237 "}"
+ COMMA@237..238 ","
+ WHITESPACE@238..243 "\n "
+ FIELD@243..263
+ NAME@243..247 "date"
+ WHITESPACE@247..256 " "
+ EQ@256..257 "="
+ WHITESPACE@257..258 " "
+ LITERAL@258..262
+ INTEGER@258..262 "1998"
+ COMMA@262..263 ","
+ WHITESPACE@263..268 "\n "
+ FIELD@268..323
+ NAME@268..276 "location"
+ WHITESPACE@276..281 " "
+ EQ@281..282 "="
+ WHITESPACE@282..283 " "
+ CURLY_GROUP@283..322
+ L_CURLY@283..284 "{"
+ WORD@284..293 "countryfr"
+ WHITESPACE@293..294 " "
+ WORD@294..297 "and"
+ WHITESPACE@297..298 " "
+ WORD@298..307 "countryuk"
+ WHITESPACE@307..308 " "
+ WORD@308..311 "and"
+ WHITESPACE@311..312 " "
+ WORD@312..321 "countryde"
+ R_CURLY@321..322 "}"
+ COMMA@322..323 ","
+ WHITESPACE@323..328 "\n "
+ FIELD@328..352
+ NAME@328..334 "langid"
+ WHITESPACE@334..341 " "
+ EQ@341..342 "="
+ WHITESPACE@342..343 " "
+ CURLY_GROUP@343..351
+ L_CURLY@343..344 "{"
+ WORD@344..350 "german"
+ R_CURLY@350..351 "}"
+ COMMA@351..352 ","
+ WHITESPACE@352..357 "\n "
+ FIELD@357..704
+ NAME@357..367 "annotation"
+ WHITESPACE@367..370 " "
+ EQ@370..371 "="
+ WHITESPACE@371..372 " "
+ CURLY_GROUP@372..703
+ L_CURLY@372..373 "{"
+ WORD@373..377 "This"
+ WHITESPACE@377..378 " "
+ WORD@378..380 "is"
+ WHITESPACE@380..381 " "
+ WORD@381..382 "a"
+ WHITESPACE@382..383 " "
+ COMMAND@383..390
+ COMMAND_NAME@383..390 "\\texttt"
+ CURLY_GROUP@390..398
+ L_CURLY@390..391 "{"
+ WORD@391..397 "patent"
+ R_CURLY@397..398 "}"
+ WHITESPACE@398..399 " "
+ WORD@399..404 "entry"
+ WHITESPACE@404..405 " "
+ WORD@405..409 "with"
+ WHITESPACE@409..410 " "
+ WORD@410..411 "a"
+ WHITESPACE@411..412 " "
+ COMMAND@412..419
+ COMMAND_NAME@412..419 "\\texttt"
+ CURLY_GROUP@419..429
+ L_CURLY@419..420 "{"
+ WORD@420..428 "location"
+ R_CURLY@428..429 "}"
+ WHITESPACE@429..450 "\n "
+ WORD@450..456 "field."
+ WHITESPACE@456..457 " "
+ WORD@457..460 "The"
+ WHITESPACE@460..461 " "
+ WORD@461..467 "number"
+ WHITESPACE@467..468 " "
+ WORD@468..470 "is"
+ WHITESPACE@470..471 " "
+ WORD@471..476 "given"
+ WHITESPACE@476..477 " "
+ WORD@477..479 "in"
+ WHITESPACE@479..480 " "
+ WORD@480..483 "the"
+ WHITESPACE@483..484 " "
+ COMMAND@484..491
+ COMMAND_NAME@484..491 "\\texttt"
+ CURLY_GROUP@491..499
+ L_CURLY@491..492 "{"
+ WORD@492..498 "number"
+ R_CURLY@498..499 "}"
+ WHITESPACE@499..500 " "
+ WORD@500..506 "field."
+ WHITESPACE@506..507 " "
+ WORD@507..511 "Note"
+ WHITESPACE@511..532 "\n "
+ WORD@532..535 "the"
+ WHITESPACE@535..536 " "
+ WORD@536..542 "format"
+ WHITESPACE@542..543 " "
+ WORD@543..545 "of"
+ WHITESPACE@545..546 " "
+ WORD@546..549 "the"
+ WHITESPACE@549..550 " "
+ COMMAND@550..557
+ COMMAND_NAME@550..557 "\\texttt"
+ CURLY_GROUP@557..567
+ L_CURLY@557..558 "{"
+ WORD@558..566 "location"
+ R_CURLY@566..567 "}"
+ WHITESPACE@567..568 " "
+ WORD@568..573 "field"
+ WHITESPACE@573..574 " "
+ WORD@574..576 "in"
+ WHITESPACE@576..577 " "
+ WORD@577..580 "the"
+ WHITESPACE@580..581 " "
+ WORD@581..589 "database"
+ WHITESPACE@589..610 "\n "
+ WORD@610..615 "file."
+ WHITESPACE@615..616 " "
+ WORD@616..623 "Compare"
+ WHITESPACE@623..624 " "
+ COMMAND@624..631
+ COMMAND_NAME@624..631 "\\texttt"
+ CURLY_GROUP@631..643
+ L_CURLY@631..632 "{"
+ WORD@632..642 "laufenberg"
+ R_CURLY@642..643 "}"
+ COMMA@643..644 ","
+ WHITESPACE@644..645 " "
+ COMMAND@645..652
+ COMMAND_NAME@645..652 "\\texttt"
+ CURLY_GROUP@652..660
+ L_CURLY@652..653 "{"
+ WORD@653..659 "sorace"
+ R_CURLY@659..660 "}"
+ COMMA@660..661 ","
+ WHITESPACE@661..662 " "
+ WORD@662..665 "and"
+ WHITESPACE@665..686 "\n "
+ COMMAND@686..693
+ COMMAND_NAME@686..693 "\\texttt"
+ CURLY_GROUP@693..702
+ L_CURLY@693..694 "{"
+ WORD@694..701 "kowalik"
+ R_CURLY@701..702 "}"
+ R_CURLY@702..703 "}"
+ COMMA@703..704 ","
+ WHITESPACE@704..705 "\n"
+ R_DELIM@705..706 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_averroes_1998() {
+ check(
+ r#"@book{averroes/bland,
+ author = {Averroes},
+ title = {The Epistle on the Possibility of Conjunction with the Active
+ Intellect by {Ibn Rushd} with the Commentary of {Moses Narboni}},
+ date = 1982,
+ editor = {Bland, Kalman P.},
+ translator = {Bland, Kalman P.},
+ series = {Moreshet: Studies in {Jewish} History, Literature and Thought},
+ number = 7,
+ publisher = {Jewish Theological Seminary of America},
+ location = {New York},
+ keywords = {primary},
+ langid = {english},
+ langidopts = {variant=american},
+ indextitle = {Epistle on the Possibility of Conjunction, The},
+ shorttitle = {Possibility of Conjunction},
+ annotation = {A \texttt{book} entry with a \texttt{series} and a
+ \texttt{number}. Note the concatenation of the \texttt{editor}
+ and \texttt{translator} fields as well as the
+ \texttt{indextitle} field},
+}"#,
+ expect![[r#"
+ ROOT@0..1008
+ ENTRY@0..1008
+ TYPE@0..5 "@book"
+ L_DELIM@5..6 "{"
+ NAME@6..20 "averroes/bland"
+ COMMA@20..21 ","
+ WHITESPACE@21..26 "\n "
+ FIELD@26..52
+ NAME@26..32 "author"
+ WHITESPACE@32..39 " "
+ EQ@39..40 "="
+ WHITESPACE@40..41 " "
+ CURLY_GROUP@41..51
+ L_CURLY@41..42 "{"
+ WORD@42..50 "Averroes"
+ R_CURLY@50..51 "}"
+ COMMA@51..52 ","
+ WHITESPACE@52..57 "\n "
+ FIELD@57..220
+ NAME@57..62 "title"
+ WHITESPACE@62..70 " "
+ EQ@70..71 "="
+ WHITESPACE@71..72 " "
+ CURLY_GROUP@72..219
+ L_CURLY@72..73 "{"
+ WORD@73..76 "The"
+ WHITESPACE@76..77 " "
+ WORD@77..84 "Epistle"
+ WHITESPACE@84..85 " "
+ WORD@85..87 "on"
+ WHITESPACE@87..88 " "
+ WORD@88..91 "the"
+ WHITESPACE@91..92 " "
+ WORD@92..103 "Possibility"
+ WHITESPACE@103..104 " "
+ WORD@104..106 "of"
+ WHITESPACE@106..107 " "
+ WORD@107..118 "Conjunction"
+ WHITESPACE@118..119 " "
+ WORD@119..123 "with"
+ WHITESPACE@123..124 " "
+ WORD@124..127 "the"
+ WHITESPACE@127..128 " "
+ WORD@128..134 "Active"
+ WHITESPACE@134..155 "\n "
+ WORD@155..164 "Intellect"
+ WHITESPACE@164..165 " "
+ WORD@165..167 "by"
+ WHITESPACE@167..168 " "
+ CURLY_GROUP@168..179
+ L_CURLY@168..169 "{"
+ WORD@169..172 "Ibn"
+ WHITESPACE@172..173 " "
+ WORD@173..178 "Rushd"
+ R_CURLY@178..179 "}"
+ WHITESPACE@179..180 " "
+ WORD@180..184 "with"
+ WHITESPACE@184..185 " "
+ WORD@185..188 "the"
+ WHITESPACE@188..189 " "
+ WORD@189..199 "Commentary"
+ WHITESPACE@199..200 " "
+ WORD@200..202 "of"
+ WHITESPACE@202..203 " "
+ CURLY_GROUP@203..218
+ L_CURLY@203..204 "{"
+ WORD@204..209 "Moses"
+ WHITESPACE@209..210 " "
+ WORD@210..217 "Narboni"
+ R_CURLY@217..218 "}"
+ R_CURLY@218..219 "}"
+ COMMA@219..220 ","
+ WHITESPACE@220..225 "\n "
+ FIELD@225..245
+ NAME@225..229 "date"
+ WHITESPACE@229..238 " "
+ EQ@238..239 "="
+ WHITESPACE@239..240 " "
+ LITERAL@240..244
+ INTEGER@240..244 "1982"
+ COMMA@244..245 ","
+ WHITESPACE@245..250 "\n "
+ FIELD@250..284
+ NAME@250..256 "editor"
+ WHITESPACE@256..263 " "
+ EQ@263..264 "="
+ WHITESPACE@264..265 " "
+ CURLY_GROUP@265..283
+ L_CURLY@265..266 "{"
+ WORD@266..271 "Bland"
+ COMMA@271..272 ","
+ WHITESPACE@272..273 " "
+ WORD@273..279 "Kalman"
+ WHITESPACE@279..280 " "
+ WORD@280..282 "P."
+ R_CURLY@282..283 "}"
+ COMMA@283..284 ","
+ WHITESPACE@284..289 "\n "
+ FIELD@289..323
+ NAME@289..299 "translator"
+ WHITESPACE@299..302 " "
+ EQ@302..303 "="
+ WHITESPACE@303..304 " "
+ CURLY_GROUP@304..322
+ L_CURLY@304..305 "{"
+ WORD@305..310 "Bland"
+ COMMA@310..311 ","
+ WHITESPACE@311..312 " "
+ WORD@312..318 "Kalman"
+ WHITESPACE@318..319 " "
+ WORD@319..321 "P."
+ R_CURLY@321..322 "}"
+ COMMA@322..323 ","
+ WHITESPACE@323..328 "\n "
+ FIELD@328..407
+ NAME@328..334 "series"
+ WHITESPACE@334..341 " "
+ EQ@341..342 "="
+ WHITESPACE@342..343 " "
+ CURLY_GROUP@343..406
+ L_CURLY@343..344 "{"
+ WORD@344..353 "Moreshet:"
+ WHITESPACE@353..354 " "
+ WORD@354..361 "Studies"
+ WHITESPACE@361..362 " "
+ WORD@362..364 "in"
+ WHITESPACE@364..365 " "
+ CURLY_GROUP@365..373
+ L_CURLY@365..366 "{"
+ WORD@366..372 "Jewish"
+ R_CURLY@372..373 "}"
+ WHITESPACE@373..374 " "
+ WORD@374..381 "History"
+ COMMA@381..382 ","
+ WHITESPACE@382..383 " "
+ WORD@383..393 "Literature"
+ WHITESPACE@393..394 " "
+ WORD@394..397 "and"
+ WHITESPACE@397..398 " "
+ WORD@398..405 "Thought"
+ R_CURLY@405..406 "}"
+ COMMA@406..407 ","
+ WHITESPACE@407..412 "\n "
+ FIELD@412..429
+ NAME@412..418 "number"
+ WHITESPACE@418..425 " "
+ EQ@425..426 "="
+ WHITESPACE@426..427 " "
+ LITERAL@427..428
+ INTEGER@427..428 "7"
+ COMMA@428..429 ","
+ WHITESPACE@429..434 "\n "
+ FIELD@434..490
+ NAME@434..443 "publisher"
+ WHITESPACE@443..447 " "
+ EQ@447..448 "="
+ WHITESPACE@448..449 " "
+ CURLY_GROUP@449..489
+ L_CURLY@449..450 "{"
+ WORD@450..456 "Jewish"
+ WHITESPACE@456..457 " "
+ WORD@457..468 "Theological"
+ WHITESPACE@468..469 " "
+ WORD@469..477 "Seminary"
+ WHITESPACE@477..478 " "
+ WORD@478..480 "of"
+ WHITESPACE@480..481 " "
+ WORD@481..488 "America"
+ R_CURLY@488..489 "}"
+ COMMA@489..490 ","
+ WHITESPACE@490..495 "\n "
+ FIELD@495..521
+ NAME@495..503 "location"
+ WHITESPACE@503..508 " "
+ EQ@508..509 "="
+ WHITESPACE@509..510 " "
+ CURLY_GROUP@510..520
+ L_CURLY@510..511 "{"
+ WORD@511..514 "New"
+ WHITESPACE@514..515 " "
+ WORD@515..519 "York"
+ R_CURLY@519..520 "}"
+ COMMA@520..521 ","
+ WHITESPACE@521..526 "\n "
+ FIELD@526..551
+ NAME@526..534 "keywords"
+ WHITESPACE@534..539 " "
+ EQ@539..540 "="
+ WHITESPACE@540..541 " "
+ CURLY_GROUP@541..550
+ L_CURLY@541..542 "{"
+ WORD@542..549 "primary"
+ R_CURLY@549..550 "}"
+ COMMA@550..551 ","
+ WHITESPACE@551..556 "\n "
+ FIELD@556..581
+ NAME@556..562 "langid"
+ WHITESPACE@562..569 " "
+ EQ@569..570 "="
+ WHITESPACE@570..571 " "
+ CURLY_GROUP@571..580
+ L_CURLY@571..572 "{"
+ WORD@572..579 "english"
+ R_CURLY@579..580 "}"
+ COMMA@580..581 ","
+ WHITESPACE@581..586 "\n "
+ FIELD@586..620
+ NAME@586..596 "langidopts"
+ WHITESPACE@596..599 " "
+ EQ@599..600 "="
+ WHITESPACE@600..601 " "
+ CURLY_GROUP@601..619
+ L_CURLY@601..602 "{"
+ WORD@602..618 "variant=american"
+ R_CURLY@618..619 "}"
+ COMMA@619..620 ","
+ WHITESPACE@620..625 "\n "
+ FIELD@625..689
+ NAME@625..635 "indextitle"
+ WHITESPACE@635..638 " "
+ EQ@638..639 "="
+ WHITESPACE@639..640 " "
+ CURLY_GROUP@640..688
+ L_CURLY@640..641 "{"
+ WORD@641..648 "Epistle"
+ WHITESPACE@648..649 " "
+ WORD@649..651 "on"
+ WHITESPACE@651..652 " "
+ WORD@652..655 "the"
+ WHITESPACE@655..656 " "
+ WORD@656..667 "Possibility"
+ WHITESPACE@667..668 " "
+ WORD@668..670 "of"
+ WHITESPACE@670..671 " "
+ WORD@671..682 "Conjunction"
+ COMMA@682..683 ","
+ WHITESPACE@683..684 " "
+ WORD@684..687 "The"
+ R_CURLY@687..688 "}"
+ COMMA@688..689 ","
+ WHITESPACE@689..694 "\n "
+ FIELD@694..738
+ NAME@694..704 "shorttitle"
+ WHITESPACE@704..707 " "
+ EQ@707..708 "="
+ WHITESPACE@708..709 " "
+ CURLY_GROUP@709..737
+ L_CURLY@709..710 "{"
+ WORD@710..721 "Possibility"
+ WHITESPACE@721..722 " "
+ WORD@722..724 "of"
+ WHITESPACE@724..725 " "
+ WORD@725..736 "Conjunction"
+ R_CURLY@736..737 "}"
+ COMMA@737..738 ","
+ WHITESPACE@738..743 "\n "
+ FIELD@743..1006
+ NAME@743..753 "annotation"
+ WHITESPACE@753..756 " "
+ EQ@756..757 "="
+ WHITESPACE@757..758 " "
+ CURLY_GROUP@758..1005
+ L_CURLY@758..759 "{"
+ WORD@759..760 "A"
+ WHITESPACE@760..761 " "
+ COMMAND@761..768
+ COMMAND_NAME@761..768 "\\texttt"
+ CURLY_GROUP@768..774
+ L_CURLY@768..769 "{"
+ WORD@769..773 "book"
+ R_CURLY@773..774 "}"
+ WHITESPACE@774..775 " "
+ WORD@775..780 "entry"
+ WHITESPACE@780..781 " "
+ WORD@781..785 "with"
+ WHITESPACE@785..786 " "
+ WORD@786..787 "a"
+ WHITESPACE@787..788 " "
+ COMMAND@788..795
+ COMMAND_NAME@788..795 "\\texttt"
+ CURLY_GROUP@795..803
+ L_CURLY@795..796 "{"
+ WORD@796..802 "series"
+ R_CURLY@802..803 "}"
+ WHITESPACE@803..804 " "
+ WORD@804..807 "and"
+ WHITESPACE@807..808 " "
+ WORD@808..809 "a"
+ WHITESPACE@809..830 "\n "
+ COMMAND@830..837
+ COMMAND_NAME@830..837 "\\texttt"
+ CURLY_GROUP@837..845
+ L_CURLY@837..838 "{"
+ WORD@838..844 "number"
+ R_CURLY@844..845 "}"
+ WORD@845..846 "."
+ WHITESPACE@846..847 " "
+ WORD@847..851 "Note"
+ WHITESPACE@851..852 " "
+ WORD@852..855 "the"
+ WHITESPACE@855..856 " "
+ WORD@856..869 "concatenation"
+ WHITESPACE@869..870 " "
+ WORD@870..872 "of"
+ WHITESPACE@872..873 " "
+ WORD@873..876 "the"
+ WHITESPACE@876..877 " "
+ COMMAND@877..884
+ COMMAND_NAME@877..884 "\\texttt"
+ CURLY_GROUP@884..892
+ L_CURLY@884..885 "{"
+ WORD@885..891 "editor"
+ R_CURLY@891..892 "}"
+ WHITESPACE@892..913 "\n "
+ WORD@913..916 "and"
+ WHITESPACE@916..917 " "
+ COMMAND@917..924
+ COMMAND_NAME@917..924 "\\texttt"
+ CURLY_GROUP@924..936
+ L_CURLY@924..925 "{"
+ WORD@925..935 "translator"
+ R_CURLY@935..936 "}"
+ WHITESPACE@936..937 " "
+ WORD@937..943 "fields"
+ WHITESPACE@943..944 " "
+ WORD@944..946 "as"
+ WHITESPACE@946..947 " "
+ WORD@947..951 "well"
+ WHITESPACE@951..952 " "
+ WORD@952..954 "as"
+ WHITESPACE@954..955 " "
+ WORD@955..958 "the"
+ WHITESPACE@958..979 "\n "
+ COMMAND@979..986
+ COMMAND_NAME@979..986 "\\texttt"
+ CURLY_GROUP@986..998
+ L_CURLY@986..987 "{"
+ WORD@987..997 "indextitle"
+ R_CURLY@997..998 "}"
+ WHITESPACE@998..999 " "
+ WORD@999..1004 "field"
+ R_CURLY@1004..1005 "}"
+ COMMA@1005..1006 ","
+ WHITESPACE@1006..1007 "\n"
+ R_DELIM@1007..1008 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_betram_1996() {
+ check(
+ r#"@string{jams = {J.~Amer. Math. Soc.}}
+
+@article{bertram,
+ author = {Bertram, Aaron and Wentworth, Richard},
+ title = {Gromov invariants for holomorphic maps on {Riemann} surfaces},
+ journaltitle = jams,
+ date = 1996,
+ volume = 9,
+ number = 2,
+ pages = {529-571},
+ langid = {english},
+ langidopts = {variant=american},
+ shorttitle = {Gromov invariants},
+ annotation = {An \texttt{article} entry with a \texttt{volume} and a
+ \texttt{number} field},
+}"#,
+ expect![[r#"
+ ROOT@0..556
+ STRING@0..40
+ TYPE@0..7 "@string"
+ L_DELIM@7..8 "{"
+ NAME@8..12 "jams"
+ WHITESPACE@12..16 " "
+ EQ@16..17 "="
+ WHITESPACE@17..18 " "
+ CURLY_GROUP@18..39
+ L_CURLY@18..19 "{"
+ WORD@19..21 "J."
+ NBSP@21..22 "~"
+ WORD@22..27 "Amer."
+ WHITESPACE@27..28 " "
+ WORD@28..33 "Math."
+ WHITESPACE@33..34 " "
+ WORD@34..38 "Soc."
+ R_CURLY@38..39 "}"
+ R_DELIM@39..40 "}"
+ JUNK@40..42 "\n\n"
+ ENTRY@42..556
+ TYPE@42..50 "@article"
+ L_DELIM@50..51 "{"
+ NAME@51..58 "bertram"
+ COMMA@58..59 ","
+ WHITESPACE@59..64 "\n "
+ FIELD@64..119
+ NAME@64..70 "author"
+ WHITESPACE@70..77 " "
+ EQ@77..78 "="
+ WHITESPACE@78..79 " "
+ CURLY_GROUP@79..118
+ L_CURLY@79..80 "{"
+ WORD@80..87 "Bertram"
+ COMMA@87..88 ","
+ WHITESPACE@88..89 " "
+ WORD@89..94 "Aaron"
+ WHITESPACE@94..95 " "
+ WORD@95..98 "and"
+ WHITESPACE@98..99 " "
+ WORD@99..108 "Wentworth"
+ COMMA@108..109 ","
+ WHITESPACE@109..110 " "
+ WORD@110..117 "Richard"
+ R_CURLY@117..118 "}"
+ COMMA@118..119 ","
+ WHITESPACE@119..124 "\n "
+ FIELD@124..202
+ NAME@124..129 "title"
+ WHITESPACE@129..137 " "
+ EQ@137..138 "="
+ WHITESPACE@138..139 " "
+ CURLY_GROUP@139..201
+ L_CURLY@139..140 "{"
+ WORD@140..146 "Gromov"
+ WHITESPACE@146..147 " "
+ WORD@147..157 "invariants"
+ WHITESPACE@157..158 " "
+ WORD@158..161 "for"
+ WHITESPACE@161..162 " "
+ WORD@162..173 "holomorphic"
+ WHITESPACE@173..174 " "
+ WORD@174..178 "maps"
+ WHITESPACE@178..179 " "
+ WORD@179..181 "on"
+ WHITESPACE@181..182 " "
+ CURLY_GROUP@182..191
+ L_CURLY@182..183 "{"
+ WORD@183..190 "Riemann"
+ R_CURLY@190..191 "}"
+ WHITESPACE@191..192 " "
+ WORD@192..200 "surfaces"
+ R_CURLY@200..201 "}"
+ COMMA@201..202 ","
+ WHITESPACE@202..207 "\n "
+ FIELD@207..227
+ NAME@207..219 "journaltitle"
+ WHITESPACE@219..220 " "
+ EQ@220..221 "="
+ WHITESPACE@221..222 " "
+ LITERAL@222..226
+ NAME@222..226 "jams"
+ COMMA@226..227 ","
+ WHITESPACE@227..232 "\n "
+ FIELD@232..252
+ NAME@232..236 "date"
+ WHITESPACE@236..245 " "
+ EQ@245..246 "="
+ WHITESPACE@246..247 " "
+ LITERAL@247..251
+ INTEGER@247..251 "1996"
+ COMMA@251..252 ","
+ WHITESPACE@252..257 "\n "
+ FIELD@257..274
+ NAME@257..263 "volume"
+ WHITESPACE@263..270 " "
+ EQ@270..271 "="
+ WHITESPACE@271..272 " "
+ LITERAL@272..273
+ INTEGER@272..273 "9"
+ COMMA@273..274 ","
+ WHITESPACE@274..279 "\n "
+ FIELD@279..296
+ NAME@279..285 "number"
+ WHITESPACE@285..292 " "
+ EQ@292..293 "="
+ WHITESPACE@293..294 " "
+ LITERAL@294..295
+ INTEGER@294..295 "2"
+ COMMA@295..296 ","
+ WHITESPACE@296..301 "\n "
+ FIELD@301..326
+ NAME@301..306 "pages"
+ WHITESPACE@306..314 " "
+ EQ@314..315 "="
+ WHITESPACE@315..316 " "
+ CURLY_GROUP@316..325
+ L_CURLY@316..317 "{"
+ WORD@317..324 "529-571"
+ R_CURLY@324..325 "}"
+ COMMA@325..326 ","
+ WHITESPACE@326..331 "\n "
+ FIELD@331..356
+ NAME@331..337 "langid"
+ WHITESPACE@337..344 " "
+ EQ@344..345 "="
+ WHITESPACE@345..346 " "
+ CURLY_GROUP@346..355
+ L_CURLY@346..347 "{"
+ WORD@347..354 "english"
+ R_CURLY@354..355 "}"
+ COMMA@355..356 ","
+ WHITESPACE@356..361 "\n "
+ FIELD@361..395
+ NAME@361..371 "langidopts"
+ WHITESPACE@371..374 " "
+ EQ@374..375 "="
+ WHITESPACE@375..376 " "
+ CURLY_GROUP@376..394
+ L_CURLY@376..377 "{"
+ WORD@377..393 "variant=american"
+ R_CURLY@393..394 "}"
+ COMMA@394..395 ","
+ WHITESPACE@395..400 "\n "
+ FIELD@400..435
+ NAME@400..410 "shorttitle"
+ WHITESPACE@410..413 " "
+ EQ@413..414 "="
+ WHITESPACE@414..415 " "
+ CURLY_GROUP@415..434
+ L_CURLY@415..416 "{"
+ WORD@416..422 "Gromov"
+ WHITESPACE@422..423 " "
+ WORD@423..433 "invariants"
+ R_CURLY@433..434 "}"
+ COMMA@434..435 ","
+ WHITESPACE@435..440 "\n "
+ FIELD@440..554
+ NAME@440..450 "annotation"
+ WHITESPACE@450..453 " "
+ EQ@453..454 "="
+ WHITESPACE@454..455 " "
+ CURLY_GROUP@455..553
+ L_CURLY@455..456 "{"
+ WORD@456..458 "An"
+ WHITESPACE@458..459 " "
+ COMMAND@459..466
+ COMMAND_NAME@459..466 "\\texttt"
+ CURLY_GROUP@466..475
+ L_CURLY@466..467 "{"
+ WORD@467..474 "article"
+ R_CURLY@474..475 "}"
+ WHITESPACE@475..476 " "
+ WORD@476..481 "entry"
+ WHITESPACE@481..482 " "
+ WORD@482..486 "with"
+ WHITESPACE@486..487 " "
+ WORD@487..488 "a"
+ WHITESPACE@488..489 " "
+ COMMAND@489..496
+ COMMAND_NAME@489..496 "\\texttt"
+ CURLY_GROUP@496..504
+ L_CURLY@496..497 "{"
+ WORD@497..503 "volume"
+ R_CURLY@503..504 "}"
+ WHITESPACE@504..505 " "
+ WORD@505..508 "and"
+ WHITESPACE@508..509 " "
+ WORD@509..510 "a"
+ WHITESPACE@510..531 "\n "
+ COMMAND@531..538
+ COMMAND_NAME@531..538 "\\texttt"
+ CURLY_GROUP@538..546
+ L_CURLY@538..539 "{"
+ WORD@539..545 "number"
+ R_CURLY@545..546 "}"
+ WHITESPACE@546..547 " "
+ WORD@547..552 "field"
+ R_CURLY@552..553 "}"
+ COMMA@553..554 ","
+ WHITESPACE@554..555 "\n"
+ R_DELIM@555..556 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_blom_2021() {
+ check(
+ r#"@article{DBLP:journals/corr/abs-2107-11903,
+ author = {Michelle L. Blom and
+ Jurlind Budurushi and
+ Ronald L. Rivest and
+ Philip B. Stark and
+ Peter J. Stuckey and
+ Vanessa Teague and
+ Damjan Vukcevic},
+ title = {Assertion-based Approaches to Auditing Complex Elections, with application
+ to party-list proportional elections},
+ journal = {CoRR},
+ volume = {abs/2107.11903},
+ year = {2021},
+ url = {https://arxiv.org/abs/2107.11903},
+ eprinttype = {arXiv},
+ eprint = {2107.11903},
+ timestamp = {Thu, 29 Jul 2021 16:14:15 +0200},
+ biburl = {https://dblp.org/rec/journals/corr/abs-2107-11903.bib},
+ bibsource = {dblp computer science bibliography, https://dblp.org}
+}"#,
+ expect![[r#"
+ ROOT@0..860
+ ENTRY@0..860
+ TYPE@0..8 "@article"
+ L_DELIM@8..9 "{"
+ NAME@9..42 "DBLP:journals/corr/ab ..."
+ COMMA@42..43 ","
+ WHITESPACE@43..48 "\n "
+ FIELD@48..322
+ NAME@48..54 "author"
+ WHITESPACE@54..58 " "
+ EQ@58..59 "="
+ WHITESPACE@59..60 " "
+ CURLY_GROUP@60..321
+ L_CURLY@60..61 "{"
+ WORD@61..69 "Michelle"
+ WHITESPACE@69..70 " "
+ WORD@70..72 "L."
+ WHITESPACE@72..73 " "
+ WORD@73..77 "Blom"
+ WHITESPACE@77..78 " "
+ WORD@78..81 "and"
+ WHITESPACE@81..102 "\n "
+ WORD@102..109 "Jurlind"
+ WHITESPACE@109..110 " "
+ WORD@110..119 "Budurushi"
+ WHITESPACE@119..120 " "
+ WORD@120..123 "and"
+ WHITESPACE@123..144 "\n "
+ WORD@144..150 "Ronald"
+ WHITESPACE@150..151 " "
+ WORD@151..153 "L."
+ WHITESPACE@153..154 " "
+ WORD@154..160 "Rivest"
+ WHITESPACE@160..161 " "
+ WORD@161..164 "and"
+ WHITESPACE@164..185 "\n "
+ WORD@185..191 "Philip"
+ WHITESPACE@191..192 " "
+ WORD@192..194 "B."
+ WHITESPACE@194..195 " "
+ WORD@195..200 "Stark"
+ WHITESPACE@200..201 " "
+ WORD@201..204 "and"
+ WHITESPACE@204..225 "\n "
+ WORD@225..230 "Peter"
+ WHITESPACE@230..231 " "
+ WORD@231..233 "J."
+ WHITESPACE@233..234 " "
+ WORD@234..241 "Stuckey"
+ WHITESPACE@241..242 " "
+ WORD@242..245 "and"
+ WHITESPACE@245..266 "\n "
+ WORD@266..273 "Vanessa"
+ WHITESPACE@273..274 " "
+ WORD@274..280 "Teague"
+ WHITESPACE@280..281 " "
+ WORD@281..284 "and"
+ WHITESPACE@284..305 "\n "
+ WORD@305..311 "Damjan"
+ WHITESPACE@311..312 " "
+ WORD@312..320 "Vukcevic"
+ R_CURLY@320..321 "}"
+ COMMA@321..322 ","
+ WHITESPACE@322..327 "\n "
+ FIELD@327..473
+ NAME@327..332 "title"
+ WHITESPACE@332..337 " "
+ EQ@337..338 "="
+ WHITESPACE@338..339 " "
+ CURLY_GROUP@339..472
+ L_CURLY@339..340 "{"
+ WORD@340..355 "Assertion-based"
+ WHITESPACE@355..356 " "
+ WORD@356..366 "Approaches"
+ WHITESPACE@366..367 " "
+ WORD@367..369 "to"
+ WHITESPACE@369..370 " "
+ WORD@370..378 "Auditing"
+ WHITESPACE@378..379 " "
+ WORD@379..386 "Complex"
+ WHITESPACE@386..387 " "
+ WORD@387..396 "Elections"
+ COMMA@396..397 ","
+ WHITESPACE@397..398 " "
+ WORD@398..402 "with"
+ WHITESPACE@402..403 " "
+ WORD@403..414 "application"
+ WHITESPACE@414..435 "\n "
+ WORD@435..437 "to"
+ WHITESPACE@437..438 " "
+ WORD@438..448 "party-list"
+ WHITESPACE@448..449 " "
+ WORD@449..461 "proportional"
+ WHITESPACE@461..462 " "
+ WORD@462..471 "elections"
+ R_CURLY@471..472 "}"
+ COMMA@472..473 ","
+ WHITESPACE@473..478 "\n "
+ FIELD@478..497
+ NAME@478..485 "journal"
+ WHITESPACE@485..488 " "
+ EQ@488..489 "="
+ WHITESPACE@489..490 " "
+ CURLY_GROUP@490..496
+ L_CURLY@490..491 "{"
+ WORD@491..495 "CoRR"
+ R_CURLY@495..496 "}"
+ COMMA@496..497 ","
+ WHITESPACE@497..502 "\n "
+ FIELD@502..531
+ NAME@502..508 "volume"
+ WHITESPACE@508..512 " "
+ EQ@512..513 "="
+ WHITESPACE@513..514 " "
+ CURLY_GROUP@514..530
+ L_CURLY@514..515 "{"
+ WORD@515..529 "abs/2107.11903"
+ R_CURLY@529..530 "}"
+ COMMA@530..531 ","
+ WHITESPACE@531..536 "\n "
+ FIELD@536..555
+ NAME@536..540 "year"
+ WHITESPACE@540..546 " "
+ EQ@546..547 "="
+ WHITESPACE@547..548 " "
+ CURLY_GROUP@548..554
+ L_CURLY@548..549 "{"
+ INTEGER@549..553 "2021"
+ R_CURLY@553..554 "}"
+ COMMA@554..555 ","
+ WHITESPACE@555..560 "\n "
+ FIELD@560..607
+ NAME@560..563 "url"
+ WHITESPACE@563..570 " "
+ EQ@570..571 "="
+ WHITESPACE@571..572 " "
+ CURLY_GROUP@572..606
+ L_CURLY@572..573 "{"
+ WORD@573..605 "https://arxiv.org/abs ..."
+ R_CURLY@605..606 "}"
+ COMMA@606..607 ","
+ WHITESPACE@607..612 "\n "
+ FIELD@612..633
+ NAME@612..622 "eprinttype"
+ WHITESPACE@622..623 " "
+ EQ@623..624 "="
+ WHITESPACE@624..625 " "
+ CURLY_GROUP@625..632
+ L_CURLY@625..626 "{"
+ WORD@626..631 "arXiv"
+ R_CURLY@631..632 "}"
+ COMMA@632..633 ","
+ WHITESPACE@633..638 "\n "
+ FIELD@638..663
+ NAME@638..644 "eprint"
+ WHITESPACE@644..648 " "
+ EQ@648..649 "="
+ WHITESPACE@649..650 " "
+ CURLY_GROUP@650..662
+ L_CURLY@650..651 "{"
+ WORD@651..661 "2107.11903"
+ R_CURLY@661..662 "}"
+ COMMA@662..663 ","
+ WHITESPACE@663..668 "\n "
+ FIELD@668..714
+ NAME@668..677 "timestamp"
+ WHITESPACE@677..678 " "
+ EQ@678..679 "="
+ WHITESPACE@679..680 " "
+ CURLY_GROUP@680..713
+ L_CURLY@680..681 "{"
+ WORD@681..684 "Thu"
+ COMMA@684..685 ","
+ WHITESPACE@685..686 " "
+ INTEGER@686..688 "29"
+ WHITESPACE@688..689 " "
+ WORD@689..692 "Jul"
+ WHITESPACE@692..693 " "
+ INTEGER@693..697 "2021"
+ WHITESPACE@697..698 " "
+ WORD@698..706 "16:14:15"
+ WHITESPACE@706..707 " "
+ WORD@707..712 "+0200"
+ R_CURLY@712..713 "}"
+ COMMA@713..714 ","
+ WHITESPACE@714..719 "\n "
+ FIELD@719..787
+ NAME@719..725 "biburl"
+ WHITESPACE@725..729 " "
+ EQ@729..730 "="
+ WHITESPACE@730..731 " "
+ CURLY_GROUP@731..786
+ L_CURLY@731..732 "{"
+ WORD@732..785 "https://dblp.org/rec/ ..."
+ R_CURLY@785..786 "}"
+ COMMA@786..787 ","
+ WHITESPACE@787..792 "\n "
+ FIELD@792..859
+ NAME@792..801 "bibsource"
+ WHITESPACE@801..802 " "
+ EQ@802..803 "="
+ WHITESPACE@803..804 " "
+ CURLY_GROUP@804..858
+ L_CURLY@804..805 "{"
+ WORD@805..809 "dblp"
+ WHITESPACE@809..810 " "
+ WORD@810..818 "computer"
+ WHITESPACE@818..819 " "
+ WORD@819..826 "science"
+ WHITESPACE@826..827 " "
+ WORD@827..839 "bibliography"
+ COMMA@839..840 ","
+ WHITESPACE@840..841 " "
+ WORD@841..857 "https://dblp.org"
+ R_CURLY@857..858 "}"
+ WHITESPACE@858..859 "\n"
+ R_DELIM@859..860 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_combi_2004() {
+ check(
+ r#"@inproceedings{10.1145/967900.968040,
+ author = {Combi, Carlo and Pozzi, Giuseppe},
+ title = {Architectures for a Temporal Workflow Management System},
+ year = {2004},
+ isbn = {1581138121},
+ publisher = {Association for Computing Machinery},
+ address = {New York, NY, USA},
+ url = {https://doi.org/10.1145/967900.968040},
+ doi = {10.1145/967900.968040},
+ booktitle = {Proceedings of the 2004 ACM Symposium on Applied Computing},
+ pages = {659-666},
+ numpages = {8},
+ keywords = {active DBMS, temporal DBMS, workflow management system - WfMS, temporal workflow management system},
+ location = {Nicosia, Cyprus},
+ series = {SAC '04}
+}"#,
+ expect![[r#"
+ ROOT@0..674
+ ENTRY@0..674
+ TYPE@0..14 "@inproceedings"
+ L_DELIM@14..15 "{"
+ NAME@15..36 "10.1145/967900.968040"
+ COMMA@36..37 ","
+ WHITESPACE@37..42 "\n "
+ FIELD@42..86
+ NAME@42..48 "author"
+ WHITESPACE@48..49 " "
+ EQ@49..50 "="
+ WHITESPACE@50..51 " "
+ CURLY_GROUP@51..85
+ L_CURLY@51..52 "{"
+ WORD@52..57 "Combi"
+ COMMA@57..58 ","
+ WHITESPACE@58..59 " "
+ WORD@59..64 "Carlo"
+ WHITESPACE@64..65 " "
+ WORD@65..68 "and"
+ WHITESPACE@68..69 " "
+ WORD@69..74 "Pozzi"
+ COMMA@74..75 ","
+ WHITESPACE@75..76 " "
+ WORD@76..84 "Giuseppe"
+ R_CURLY@84..85 "}"
+ COMMA@85..86 ","
+ WHITESPACE@86..91 "\n "
+ FIELD@91..157
+ NAME@91..96 "title"
+ WHITESPACE@96..97 " "
+ EQ@97..98 "="
+ WHITESPACE@98..99 " "
+ CURLY_GROUP@99..156
+ L_CURLY@99..100 "{"
+ WORD@100..113 "Architectures"
+ WHITESPACE@113..114 " "
+ WORD@114..117 "for"
+ WHITESPACE@117..118 " "
+ WORD@118..119 "a"
+ WHITESPACE@119..120 " "
+ WORD@120..128 "Temporal"
+ WHITESPACE@128..129 " "
+ WORD@129..137 "Workflow"
+ WHITESPACE@137..138 " "
+ WORD@138..148 "Management"
+ WHITESPACE@148..149 " "
+ WORD@149..155 "System"
+ R_CURLY@155..156 "}"
+ COMMA@156..157 ","
+ WHITESPACE@157..162 "\n "
+ FIELD@162..176
+ NAME@162..166 "year"
+ WHITESPACE@166..167 " "
+ EQ@167..168 "="
+ WHITESPACE@168..169 " "
+ CURLY_GROUP@169..175
+ L_CURLY@169..170 "{"
+ INTEGER@170..174 "2004"
+ R_CURLY@174..175 "}"
+ COMMA@175..176 ","
+ WHITESPACE@176..181 "\n "
+ FIELD@181..201
+ NAME@181..185 "isbn"
+ WHITESPACE@185..186 " "
+ EQ@186..187 "="
+ WHITESPACE@187..188 " "
+ CURLY_GROUP@188..200
+ L_CURLY@188..189 "{"
+ INTEGER@189..199 "1581138121"
+ R_CURLY@199..200 "}"
+ COMMA@200..201 ","
+ WHITESPACE@201..206 "\n "
+ FIELD@206..256
+ NAME@206..215 "publisher"
+ WHITESPACE@215..216 " "
+ EQ@216..217 "="
+ WHITESPACE@217..218 " "
+ CURLY_GROUP@218..255
+ L_CURLY@218..219 "{"
+ WORD@219..230 "Association"
+ WHITESPACE@230..231 " "
+ WORD@231..234 "for"
+ WHITESPACE@234..235 " "
+ WORD@235..244 "Computing"
+ WHITESPACE@244..245 " "
+ WORD@245..254 "Machinery"
+ R_CURLY@254..255 "}"
+ COMMA@255..256 ","
+ WHITESPACE@256..261 "\n "
+ FIELD@261..291
+ NAME@261..268 "address"
+ WHITESPACE@268..269 " "
+ EQ@269..270 "="
+ WHITESPACE@270..271 " "
+ CURLY_GROUP@271..290
+ L_CURLY@271..272 "{"
+ WORD@272..275 "New"
+ WHITESPACE@275..276 " "
+ WORD@276..280 "York"
+ COMMA@280..281 ","
+ WHITESPACE@281..282 " "
+ WORD@282..284 "NY"
+ COMMA@284..285 ","
+ WHITESPACE@285..286 " "
+ WORD@286..289 "USA"
+ R_CURLY@289..290 "}"
+ COMMA@290..291 ","
+ WHITESPACE@291..296 "\n "
+ FIELD@296..342
+ NAME@296..299 "url"
+ WHITESPACE@299..300 " "
+ EQ@300..301 "="
+ WHITESPACE@301..302 " "
+ CURLY_GROUP@302..341
+ L_CURLY@302..303 "{"
+ WORD@303..340 "https://doi.org/10.11 ..."
+ R_CURLY@340..341 "}"
+ COMMA@341..342 ","
+ WHITESPACE@342..347 "\n "
+ FIELD@347..377
+ NAME@347..350 "doi"
+ WHITESPACE@350..351 " "
+ EQ@351..352 "="
+ WHITESPACE@352..353 " "
+ CURLY_GROUP@353..376
+ L_CURLY@353..354 "{"
+ WORD@354..375 "10.1145/967900.968040"
+ R_CURLY@375..376 "}"
+ COMMA@376..377 ","
+ WHITESPACE@377..382 "\n "
+ FIELD@382..455
+ NAME@382..391 "booktitle"
+ WHITESPACE@391..392 " "
+ EQ@392..393 "="
+ WHITESPACE@393..394 " "
+ CURLY_GROUP@394..454
+ L_CURLY@394..395 "{"
+ WORD@395..406 "Proceedings"
+ WHITESPACE@406..407 " "
+ WORD@407..409 "of"
+ WHITESPACE@409..410 " "
+ WORD@410..413 "the"
+ WHITESPACE@413..414 " "
+ INTEGER@414..418 "2004"
+ WHITESPACE@418..419 " "
+ WORD@419..422 "ACM"
+ WHITESPACE@422..423 " "
+ WORD@423..432 "Symposium"
+ WHITESPACE@432..433 " "
+ WORD@433..435 "on"
+ WHITESPACE@435..436 " "
+ WORD@436..443 "Applied"
+ WHITESPACE@443..444 " "
+ WORD@444..453 "Computing"
+ R_CURLY@453..454 "}"
+ COMMA@454..455 ","
+ WHITESPACE@455..460 "\n "
+ FIELD@460..478
+ NAME@460..465 "pages"
+ WHITESPACE@465..466 " "
+ EQ@466..467 "="
+ WHITESPACE@467..468 " "
+ CURLY_GROUP@468..477
+ L_CURLY@468..469 "{"
+ WORD@469..476 "659-666"
+ R_CURLY@476..477 "}"
+ COMMA@477..478 ","
+ WHITESPACE@478..483 "\n "
+ FIELD@483..498
+ NAME@483..491 "numpages"
+ WHITESPACE@491..492 " "
+ EQ@492..493 "="
+ WHITESPACE@493..494 " "
+ CURLY_GROUP@494..497
+ L_CURLY@494..495 "{"
+ INTEGER@495..496 "8"
+ R_CURLY@496..497 "}"
+ COMMA@497..498 ","
+ WHITESPACE@498..503 "\n "
+ FIELD@503..615
+ NAME@503..511 "keywords"
+ WHITESPACE@511..512 " "
+ EQ@512..513 "="
+ WHITESPACE@513..514 " "
+ CURLY_GROUP@514..614
+ L_CURLY@514..515 "{"
+ WORD@515..521 "active"
+ WHITESPACE@521..522 " "
+ WORD@522..526 "DBMS"
+ COMMA@526..527 ","
+ WHITESPACE@527..528 " "
+ WORD@528..536 "temporal"
+ WHITESPACE@536..537 " "
+ WORD@537..541 "DBMS"
+ COMMA@541..542 ","
+ WHITESPACE@542..543 " "
+ WORD@543..551 "workflow"
+ WHITESPACE@551..552 " "
+ WORD@552..562 "management"
+ WHITESPACE@562..563 " "
+ WORD@563..569 "system"
+ WHITESPACE@569..570 " "
+ WORD@570..571 "-"
+ WHITESPACE@571..572 " "
+ WORD@572..576 "WfMS"
+ COMMA@576..577 ","
+ WHITESPACE@577..578 " "
+ WORD@578..586 "temporal"
+ WHITESPACE@586..587 " "
+ WORD@587..595 "workflow"
+ WHITESPACE@595..596 " "
+ WORD@596..606 "management"
+ WHITESPACE@606..607 " "
+ WORD@607..613 "system"
+ R_CURLY@613..614 "}"
+ COMMA@614..615 ","
+ WHITESPACE@615..620 "\n "
+ FIELD@620..649
+ NAME@620..628 "location"
+ WHITESPACE@628..629 " "
+ EQ@629..630 "="
+ WHITESPACE@630..631 " "
+ CURLY_GROUP@631..648
+ L_CURLY@631..632 "{"
+ WORD@632..639 "Nicosia"
+ COMMA@639..640 ","
+ WHITESPACE@640..641 " "
+ WORD@641..647 "Cyprus"
+ R_CURLY@647..648 "}"
+ COMMA@648..649 ","
+ WHITESPACE@649..654 "\n "
+ FIELD@654..673
+ NAME@654..660 "series"
+ WHITESPACE@660..661 " "
+ EQ@661..662 "="
+ WHITESPACE@662..663 " "
+ CURLY_GROUP@663..672
+ L_CURLY@663..664 "{"
+ WORD@664..667 "SAC"
+ WHITESPACE@667..668 " "
+ WORD@668..671 "'04"
+ R_CURLY@671..672 "}"
+ WHITESPACE@672..673 "\n"
+ R_DELIM@673..674 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_erwin_2007() {
+ check(
+ r#"@inproceedings{10.5555/1386993.1386994,
+ author = {Erwin, Alva and Gopalan, Raj P. and Achuthan, N. R.},
+ title = {A Bottom-up Projection Based Algorithm for Mining High Utility Itemsets},
+ year = {2007},
+ isbn = {9781920682651},
+ publisher = {Australian Computer Society, Inc.},
+ address = {AUS},
+ booktitle = {Proceedings of the 2nd International Workshop on Integrating Artificial Intelligence and Data Mining - Volume 84},
+ pages = {3-11},
+ numpages = {9},
+ keywords = {pattern growth, high utility itemset mining},
+ location = {Gold Coast, Australia},
+ series = {AIDM '07}
+}"#,
+ expect![[r#"
+ ROOT@0..615
+ ENTRY@0..615
+ TYPE@0..14 "@inproceedings"
+ L_DELIM@14..15 "{"
+ NAME@15..38 "10.5555/1386993.1386994"
+ COMMA@38..39 ","
+ WHITESPACE@39..44 "\n "
+ FIELD@44..107
+ NAME@44..50 "author"
+ WHITESPACE@50..51 " "
+ EQ@51..52 "="
+ WHITESPACE@52..53 " "
+ CURLY_GROUP@53..106
+ L_CURLY@53..54 "{"
+ WORD@54..59 "Erwin"
+ COMMA@59..60 ","
+ WHITESPACE@60..61 " "
+ WORD@61..65 "Alva"
+ WHITESPACE@65..66 " "
+ WORD@66..69 "and"
+ WHITESPACE@69..70 " "
+ WORD@70..77 "Gopalan"
+ COMMA@77..78 ","
+ WHITESPACE@78..79 " "
+ WORD@79..82 "Raj"
+ WHITESPACE@82..83 " "
+ WORD@83..85 "P."
+ WHITESPACE@85..86 " "
+ WORD@86..89 "and"
+ WHITESPACE@89..90 " "
+ WORD@90..98 "Achuthan"
+ COMMA@98..99 ","
+ WHITESPACE@99..100 " "
+ WORD@100..102 "N."
+ WHITESPACE@102..103 " "
+ WORD@103..105 "R."
+ R_CURLY@105..106 "}"
+ COMMA@106..107 ","
+ WHITESPACE@107..112 "\n "
+ FIELD@112..194
+ NAME@112..117 "title"
+ WHITESPACE@117..118 " "
+ EQ@118..119 "="
+ WHITESPACE@119..120 " "
+ CURLY_GROUP@120..193
+ L_CURLY@120..121 "{"
+ WORD@121..122 "A"
+ WHITESPACE@122..123 " "
+ WORD@123..132 "Bottom-up"
+ WHITESPACE@132..133 " "
+ WORD@133..143 "Projection"
+ WHITESPACE@143..144 " "
+ WORD@144..149 "Based"
+ WHITESPACE@149..150 " "
+ WORD@150..159 "Algorithm"
+ WHITESPACE@159..160 " "
+ WORD@160..163 "for"
+ WHITESPACE@163..164 " "
+ WORD@164..170 "Mining"
+ WHITESPACE@170..171 " "
+ WORD@171..175 "High"
+ WHITESPACE@175..176 " "
+ WORD@176..183 "Utility"
+ WHITESPACE@183..184 " "
+ WORD@184..192 "Itemsets"
+ R_CURLY@192..193 "}"
+ COMMA@193..194 ","
+ WHITESPACE@194..199 "\n "
+ FIELD@199..213
+ NAME@199..203 "year"
+ WHITESPACE@203..204 " "
+ EQ@204..205 "="
+ WHITESPACE@205..206 " "
+ CURLY_GROUP@206..212
+ L_CURLY@206..207 "{"
+ INTEGER@207..211 "2007"
+ R_CURLY@211..212 "}"
+ COMMA@212..213 ","
+ WHITESPACE@213..218 "\n "
+ FIELD@218..241
+ NAME@218..222 "isbn"
+ WHITESPACE@222..223 " "
+ EQ@223..224 "="
+ WHITESPACE@224..225 " "
+ CURLY_GROUP@225..240
+ L_CURLY@225..226 "{"
+ INTEGER@226..239 "9781920682651"
+ R_CURLY@239..240 "}"
+ COMMA@240..241 ","
+ WHITESPACE@241..246 "\n "
+ FIELD@246..294
+ NAME@246..255 "publisher"
+ WHITESPACE@255..256 " "
+ EQ@256..257 "="
+ WHITESPACE@257..258 " "
+ CURLY_GROUP@258..293
+ L_CURLY@258..259 "{"
+ WORD@259..269 "Australian"
+ WHITESPACE@269..270 " "
+ WORD@270..278 "Computer"
+ WHITESPACE@278..279 " "
+ WORD@279..286 "Society"
+ COMMA@286..287 ","
+ WHITESPACE@287..288 " "
+ WORD@288..292 "Inc."
+ R_CURLY@292..293 "}"
+ COMMA@293..294 ","
+ WHITESPACE@294..299 "\n "
+ FIELD@299..315
+ NAME@299..306 "address"
+ WHITESPACE@306..307 " "
+ EQ@307..308 "="
+ WHITESPACE@308..309 " "
+ CURLY_GROUP@309..314
+ L_CURLY@309..310 "{"
+ WORD@310..313 "AUS"
+ R_CURLY@313..314 "}"
+ COMMA@314..315 ","
+ WHITESPACE@315..320 "\n "
+ FIELD@320..447
+ NAME@320..329 "booktitle"
+ WHITESPACE@329..330 " "
+ EQ@330..331 "="
+ WHITESPACE@331..332 " "
+ CURLY_GROUP@332..446
+ L_CURLY@332..333 "{"
+ WORD@333..344 "Proceedings"
+ WHITESPACE@344..345 " "
+ WORD@345..347 "of"
+ WHITESPACE@347..348 " "
+ WORD@348..351 "the"
+ WHITESPACE@351..352 " "
+ WORD@352..355 "2nd"
+ WHITESPACE@355..356 " "
+ WORD@356..369 "International"
+ WHITESPACE@369..370 " "
+ WORD@370..378 "Workshop"
+ WHITESPACE@378..379 " "
+ WORD@379..381 "on"
+ WHITESPACE@381..382 " "
+ WORD@382..393 "Integrating"
+ WHITESPACE@393..394 " "
+ WORD@394..404 "Artificial"
+ WHITESPACE@404..405 " "
+ WORD@405..417 "Intelligence"
+ WHITESPACE@417..418 " "
+ WORD@418..421 "and"
+ WHITESPACE@421..422 " "
+ WORD@422..426 "Data"
+ WHITESPACE@426..427 " "
+ WORD@427..433 "Mining"
+ WHITESPACE@433..434 " "
+ WORD@434..435 "-"
+ WHITESPACE@435..436 " "
+ WORD@436..442 "Volume"
+ WHITESPACE@442..443 " "
+ INTEGER@443..445 "84"
+ R_CURLY@445..446 "}"
+ COMMA@446..447 ","
+ WHITESPACE@447..452 "\n "
+ FIELD@452..467
+ NAME@452..457 "pages"
+ WHITESPACE@457..458 " "
+ EQ@458..459 "="
+ WHITESPACE@459..460 " "
+ CURLY_GROUP@460..466
+ L_CURLY@460..461 "{"
+ WORD@461..465 "3-11"
+ R_CURLY@465..466 "}"
+ COMMA@466..467 ","
+ WHITESPACE@467..472 "\n "
+ FIELD@472..487
+ NAME@472..480 "numpages"
+ WHITESPACE@480..481 " "
+ EQ@481..482 "="
+ WHITESPACE@482..483 " "
+ CURLY_GROUP@483..486
+ L_CURLY@483..484 "{"
+ INTEGER@484..485 "9"
+ R_CURLY@485..486 "}"
+ COMMA@486..487 ","
+ WHITESPACE@487..492 "\n "
+ FIELD@492..549
+ NAME@492..500 "keywords"
+ WHITESPACE@500..501 " "
+ EQ@501..502 "="
+ WHITESPACE@502..503 " "
+ CURLY_GROUP@503..548
+ L_CURLY@503..504 "{"
+ WORD@504..511 "pattern"
+ WHITESPACE@511..512 " "
+ WORD@512..518 "growth"
+ COMMA@518..519 ","
+ WHITESPACE@519..520 " "
+ WORD@520..524 "high"
+ WHITESPACE@524..525 " "
+ WORD@525..532 "utility"
+ WHITESPACE@532..533 " "
+ WORD@533..540 "itemset"
+ WHITESPACE@540..541 " "
+ WORD@541..547 "mining"
+ R_CURLY@547..548 "}"
+ COMMA@548..549 ","
+ WHITESPACE@549..554 "\n "
+ FIELD@554..589
+ NAME@554..562 "location"
+ WHITESPACE@562..563 " "
+ EQ@563..564 "="
+ WHITESPACE@564..565 " "
+ CURLY_GROUP@565..588
+ L_CURLY@565..566 "{"
+ WORD@566..570 "Gold"
+ WHITESPACE@570..571 " "
+ WORD@571..576 "Coast"
+ COMMA@576..577 ","
+ WHITESPACE@577..578 " "
+ WORD@578..587 "Australia"
+ R_CURLY@587..588 "}"
+ COMMA@588..589 ","
+ WHITESPACE@589..594 "\n "
+ FIELD@594..614
+ NAME@594..600 "series"
+ WHITESPACE@600..601 " "
+ EQ@601..602 "="
+ WHITESPACE@602..603 " "
+ CURLY_GROUP@603..613
+ L_CURLY@603..604 "{"
+ WORD@604..608 "AIDM"
+ WHITESPACE@608..609 " "
+ WORD@609..612 "'07"
+ R_CURLY@612..613 "}"
+ WHITESPACE@613..614 "\n"
+ R_DELIM@614..615 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_jain_1999() {
+ check(
+ r#"@article{10.1145/331499.331504,
+ author = {Jain, A. K. and Murty, M. N. and Flynn, P. J.},
+ title = {Data Clustering: A Review},
+ year = {1999},
+ issue_date = {Sept. 1999},
+ publisher = {Association for Computing Machinery},
+ address = {New York, NY, USA},
+ volume = {31},
+ number = {3},
+ issn = {0360-0300},
+ url = {https://doi.org/10.1145/331499.331504},
+ doi = {10.1145/331499.331504},
+ journal = {ACM Comput. Surv.},
+ month = {sep},
+ pages = {264-323},
+ numpages = {60},
+ keywords = {incremental clustering, clustering applications, exploratory data analysis, cluster analysis, similarity indices, unsupervised learning}
+}"#,
+ expect![[r#"
+ ROOT@0..674
+ ENTRY@0..674
+ TYPE@0..8 "@article"
+ L_DELIM@8..9 "{"
+ NAME@9..30 "10.1145/331499.331504"
+ COMMA@30..31 ","
+ WHITESPACE@31..36 "\n "
+ FIELD@36..93
+ NAME@36..42 "author"
+ WHITESPACE@42..43 " "
+ EQ@43..44 "="
+ WHITESPACE@44..45 " "
+ CURLY_GROUP@45..92
+ L_CURLY@45..46 "{"
+ WORD@46..50 "Jain"
+ COMMA@50..51 ","
+ WHITESPACE@51..52 " "
+ WORD@52..54 "A."
+ WHITESPACE@54..55 " "
+ WORD@55..57 "K."
+ WHITESPACE@57..58 " "
+ WORD@58..61 "and"
+ WHITESPACE@61..62 " "
+ WORD@62..67 "Murty"
+ COMMA@67..68 ","
+ WHITESPACE@68..69 " "
+ WORD@69..71 "M."
+ WHITESPACE@71..72 " "
+ WORD@72..74 "N."
+ WHITESPACE@74..75 " "
+ WORD@75..78 "and"
+ WHITESPACE@78..79 " "
+ WORD@79..84 "Flynn"
+ COMMA@84..85 ","
+ WHITESPACE@85..86 " "
+ WORD@86..88 "P."
+ WHITESPACE@88..89 " "
+ WORD@89..91 "J."
+ R_CURLY@91..92 "}"
+ COMMA@92..93 ","
+ WHITESPACE@93..98 "\n "
+ FIELD@98..134
+ NAME@98..103 "title"
+ WHITESPACE@103..104 " "
+ EQ@104..105 "="
+ WHITESPACE@105..106 " "
+ CURLY_GROUP@106..133
+ L_CURLY@106..107 "{"
+ WORD@107..111 "Data"
+ WHITESPACE@111..112 " "
+ WORD@112..123 "Clustering:"
+ WHITESPACE@123..124 " "
+ WORD@124..125 "A"
+ WHITESPACE@125..126 " "
+ WORD@126..132 "Review"
+ R_CURLY@132..133 "}"
+ COMMA@133..134 ","
+ WHITESPACE@134..139 "\n "
+ FIELD@139..153
+ NAME@139..143 "year"
+ WHITESPACE@143..144 " "
+ EQ@144..145 "="
+ WHITESPACE@145..146 " "
+ CURLY_GROUP@146..152
+ L_CURLY@146..147 "{"
+ INTEGER@147..151 "1999"
+ R_CURLY@151..152 "}"
+ COMMA@152..153 ","
+ WHITESPACE@153..158 "\n "
+ FIELD@158..184
+ NAME@158..168 "issue_date"
+ WHITESPACE@168..169 " "
+ EQ@169..170 "="
+ WHITESPACE@170..171 " "
+ CURLY_GROUP@171..183
+ L_CURLY@171..172 "{"
+ WORD@172..177 "Sept."
+ WHITESPACE@177..178 " "
+ INTEGER@178..182 "1999"
+ R_CURLY@182..183 "}"
+ COMMA@183..184 ","
+ WHITESPACE@184..189 "\n "
+ FIELD@189..239
+ NAME@189..198 "publisher"
+ WHITESPACE@198..199 " "
+ EQ@199..200 "="
+ WHITESPACE@200..201 " "
+ CURLY_GROUP@201..238
+ L_CURLY@201..202 "{"
+ WORD@202..213 "Association"
+ WHITESPACE@213..214 " "
+ WORD@214..217 "for"
+ WHITESPACE@217..218 " "
+ WORD@218..227 "Computing"
+ WHITESPACE@227..228 " "
+ WORD@228..237 "Machinery"
+ R_CURLY@237..238 "}"
+ COMMA@238..239 ","
+ WHITESPACE@239..244 "\n "
+ FIELD@244..274
+ NAME@244..251 "address"
+ WHITESPACE@251..252 " "
+ EQ@252..253 "="
+ WHITESPACE@253..254 " "
+ CURLY_GROUP@254..273
+ L_CURLY@254..255 "{"
+ WORD@255..258 "New"
+ WHITESPACE@258..259 " "
+ WORD@259..263 "York"
+ COMMA@263..264 ","
+ WHITESPACE@264..265 " "
+ WORD@265..267 "NY"
+ COMMA@267..268 ","
+ WHITESPACE@268..269 " "
+ WORD@269..272 "USA"
+ R_CURLY@272..273 "}"
+ COMMA@273..274 ","
+ WHITESPACE@274..279 "\n "
+ FIELD@279..293
+ NAME@279..285 "volume"
+ WHITESPACE@285..286 " "
+ EQ@286..287 "="
+ WHITESPACE@287..288 " "
+ CURLY_GROUP@288..292
+ L_CURLY@288..289 "{"
+ INTEGER@289..291 "31"
+ R_CURLY@291..292 "}"
+ COMMA@292..293 ","
+ WHITESPACE@293..298 "\n "
+ FIELD@298..311
+ NAME@298..304 "number"
+ WHITESPACE@304..305 " "
+ EQ@305..306 "="
+ WHITESPACE@306..307 " "
+ CURLY_GROUP@307..310
+ L_CURLY@307..308 "{"
+ INTEGER@308..309 "3"
+ R_CURLY@309..310 "}"
+ COMMA@310..311 ","
+ WHITESPACE@311..316 "\n "
+ FIELD@316..335
+ NAME@316..320 "issn"
+ WHITESPACE@320..321 " "
+ EQ@321..322 "="
+ WHITESPACE@322..323 " "
+ CURLY_GROUP@323..334
+ L_CURLY@323..324 "{"
+ WORD@324..333 "0360-0300"
+ R_CURLY@333..334 "}"
+ COMMA@334..335 ","
+ WHITESPACE@335..340 "\n "
+ FIELD@340..386
+ NAME@340..343 "url"
+ WHITESPACE@343..344 " "
+ EQ@344..345 "="
+ WHITESPACE@345..346 " "
+ CURLY_GROUP@346..385
+ L_CURLY@346..347 "{"
+ WORD@347..384 "https://doi.org/10.11 ..."
+ R_CURLY@384..385 "}"
+ COMMA@385..386 ","
+ WHITESPACE@386..391 "\n "
+ FIELD@391..421
+ NAME@391..394 "doi"
+ WHITESPACE@394..395 " "
+ EQ@395..396 "="
+ WHITESPACE@396..397 " "
+ CURLY_GROUP@397..420
+ L_CURLY@397..398 "{"
+ WORD@398..419 "10.1145/331499.331504"
+ R_CURLY@419..420 "}"
+ COMMA@420..421 ","
+ WHITESPACE@421..426 "\n "
+ FIELD@426..456
+ NAME@426..433 "journal"
+ WHITESPACE@433..434 " "
+ EQ@434..435 "="
+ WHITESPACE@435..436 " "
+ CURLY_GROUP@436..455
+ L_CURLY@436..437 "{"
+ WORD@437..440 "ACM"
+ WHITESPACE@440..441 " "
+ WORD@441..448 "Comput."
+ WHITESPACE@448..449 " "
+ WORD@449..454 "Surv."
+ R_CURLY@454..455 "}"
+ COMMA@455..456 ","
+ WHITESPACE@456..461 "\n "
+ FIELD@461..475
+ NAME@461..466 "month"
+ WHITESPACE@466..467 " "
+ EQ@467..468 "="
+ WHITESPACE@468..469 " "
+ CURLY_GROUP@469..474
+ L_CURLY@469..470 "{"
+ WORD@470..473 "sep"
+ R_CURLY@473..474 "}"
+ COMMA@474..475 ","
+ WHITESPACE@475..480 "\n "
+ FIELD@480..498
+ NAME@480..485 "pages"
+ WHITESPACE@485..486 " "
+ EQ@486..487 "="
+ WHITESPACE@487..488 " "
+ CURLY_GROUP@488..497
+ L_CURLY@488..489 "{"
+ WORD@489..496 "264-323"
+ R_CURLY@496..497 "}"
+ COMMA@497..498 ","
+ WHITESPACE@498..503 "\n "
+ FIELD@503..519
+ NAME@503..511 "numpages"
+ WHITESPACE@511..512 " "
+ EQ@512..513 "="
+ WHITESPACE@513..514 " "
+ CURLY_GROUP@514..518
+ L_CURLY@514..515 "{"
+ INTEGER@515..517 "60"
+ R_CURLY@517..518 "}"
+ COMMA@518..519 ","
+ WHITESPACE@519..524 "\n "
+ FIELD@524..673
+ NAME@524..532 "keywords"
+ WHITESPACE@532..533 " "
+ EQ@533..534 "="
+ WHITESPACE@534..535 " "
+ CURLY_GROUP@535..672
+ L_CURLY@535..536 "{"
+ WORD@536..547 "incremental"
+ WHITESPACE@547..548 " "
+ WORD@548..558 "clustering"
+ COMMA@558..559 ","
+ WHITESPACE@559..560 " "
+ WORD@560..570 "clustering"
+ WHITESPACE@570..571 " "
+ WORD@571..583 "applications"
+ COMMA@583..584 ","
+ WHITESPACE@584..585 " "
+ WORD@585..596 "exploratory"
+ WHITESPACE@596..597 " "
+ WORD@597..601 "data"
+ WHITESPACE@601..602 " "
+ WORD@602..610 "analysis"
+ COMMA@610..611 ","
+ WHITESPACE@611..612 " "
+ WORD@612..619 "cluster"
+ WHITESPACE@619..620 " "
+ WORD@620..628 "analysis"
+ COMMA@628..629 ","
+ WHITESPACE@629..630 " "
+ WORD@630..640 "similarity"
+ WHITESPACE@640..641 " "
+ WORD@641..648 "indices"
+ COMMA@648..649 ","
+ WHITESPACE@649..650 " "
+ WORD@650..662 "unsupervised"
+ WHITESPACE@662..663 " "
+ WORD@663..671 "learning"
+ R_CURLY@671..672 "}"
+ WHITESPACE@672..673 "\n"
+ R_DELIM@673..674 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_kastenholz_2006() {
+ check(
+ r#"@string{jchph = {J.~Chem. Phys.}}
+
+@article{kastenholz,
+ author = {Kastenholz, M. A. and H{\"u}nenberger, Philippe H.},
+ title = {Computation of methodology\hyphen independent ionic solvation
+ free energies from molecular simulations},
+ journaltitle = jchph,
+ date = 2006,
+ subtitle = {{I}. {The} electrostatic potential in molecular liquids},
+ volume = 124,
+ eid = 124106,
+ doi = {10.1063/1.2172593},
+ langid = {english},
+ langidopts = {variant=american},
+ indextitle = {Computation of ionic solvation free energies},
+ annotation = {An \texttt{article} entry with an \texttt{eid} and a
+ \texttt{doi} field. Note that the \textsc{doi} is transformed
+ into a clickable link if \texttt{hyperref} support has been
+ enabled},
+}"#,
+ expect![[r#"
+ ROOT@0..898
+ STRING@0..35
+ TYPE@0..7 "@string"
+ L_DELIM@7..8 "{"
+ NAME@8..13 "jchph"
+ WHITESPACE@13..16 " "
+ EQ@16..17 "="
+ WHITESPACE@17..18 " "
+ CURLY_GROUP@18..34
+ L_CURLY@18..19 "{"
+ WORD@19..21 "J."
+ NBSP@21..22 "~"
+ WORD@22..27 "Chem."
+ WHITESPACE@27..28 " "
+ WORD@28..33 "Phys."
+ R_CURLY@33..34 "}"
+ R_DELIM@34..35 "}"
+ JUNK@35..37 "\n\n"
+ ENTRY@37..898
+ TYPE@37..45 "@article"
+ L_DELIM@45..46 "{"
+ NAME@46..56 "kastenholz"
+ COMMA@56..57 ","
+ WHITESPACE@57..62 "\n "
+ FIELD@62..130
+ NAME@62..68 "author"
+ WHITESPACE@68..75 " "
+ EQ@75..76 "="
+ WHITESPACE@76..77 " "
+ CURLY_GROUP@77..129
+ L_CURLY@77..78 "{"
+ WORD@78..88 "Kastenholz"
+ COMMA@88..89 ","
+ WHITESPACE@89..90 " "
+ WORD@90..92 "M."
+ WHITESPACE@92..93 " "
+ WORD@93..95 "A."
+ WHITESPACE@95..96 " "
+ WORD@96..99 "and"
+ WHITESPACE@99..100 " "
+ WORD@100..101 "H"
+ CURLY_GROUP@101..106
+ L_CURLY@101..102 "{"
+ ACCENT@102..105
+ ACCENT_NAME@102..104 "\\\""
+ WORD@104..105 "u"
+ R_CURLY@105..106 "}"
+ WORD@106..115 "nenberger"
+ COMMA@115..116 ","
+ WHITESPACE@116..117 " "
+ WORD@117..125 "Philippe"
+ WHITESPACE@125..126 " "
+ WORD@126..128 "H."
+ R_CURLY@128..129 "}"
+ COMMA@129..130 ","
+ WHITESPACE@130..135 "\n "
+ FIELD@135..275
+ NAME@135..140 "title"
+ WHITESPACE@140..148 " "
+ EQ@148..149 "="
+ WHITESPACE@149..150 " "
+ CURLY_GROUP@150..274
+ L_CURLY@150..151 "{"
+ WORD@151..162 "Computation"
+ WHITESPACE@162..163 " "
+ WORD@163..165 "of"
+ WHITESPACE@165..166 " "
+ WORD@166..177 "methodology"
+ COMMAND@177..184
+ COMMAND_NAME@177..184 "\\hyphen"
+ WHITESPACE@184..185 " "
+ WORD@185..196 "independent"
+ WHITESPACE@196..197 " "
+ WORD@197..202 "ionic"
+ WHITESPACE@202..203 " "
+ WORD@203..212 "solvation"
+ WHITESPACE@212..233 "\n "
+ WORD@233..237 "free"
+ WHITESPACE@237..238 " "
+ WORD@238..246 "energies"
+ WHITESPACE@246..247 " "
+ WORD@247..251 "from"
+ WHITESPACE@251..252 " "
+ WORD@252..261 "molecular"
+ WHITESPACE@261..262 " "
+ WORD@262..273 "simulations"
+ R_CURLY@273..274 "}"
+ COMMA@274..275 ","
+ WHITESPACE@275..280 "\n "
+ FIELD@280..301
+ NAME@280..292 "journaltitle"
+ WHITESPACE@292..293 " "
+ EQ@293..294 "="
+ WHITESPACE@294..295 " "
+ LITERAL@295..300
+ NAME@295..300 "jchph"
+ COMMA@300..301 ","
+ WHITESPACE@301..306 "\n "
+ FIELD@306..326
+ NAME@306..310 "date"
+ WHITESPACE@310..319 " "
+ EQ@319..320 "="
+ WHITESPACE@320..321 " "
+ LITERAL@321..325
+ INTEGER@321..325 "2006"
+ COMMA@325..326 ","
+ WHITESPACE@326..331 "\n "
+ FIELD@331..404
+ NAME@331..339 "subtitle"
+ WHITESPACE@339..344 " "
+ EQ@344..345 "="
+ WHITESPACE@345..346 " "
+ CURLY_GROUP@346..403
+ L_CURLY@346..347 "{"
+ CURLY_GROUP@347..350
+ L_CURLY@347..348 "{"
+ WORD@348..349 "I"
+ R_CURLY@349..350 "}"
+ WORD@350..351 "."
+ WHITESPACE@351..352 " "
+ CURLY_GROUP@352..357
+ L_CURLY@352..353 "{"
+ WORD@353..356 "The"
+ R_CURLY@356..357 "}"
+ WHITESPACE@357..358 " "
+ WORD@358..371 "electrostatic"
+ WHITESPACE@371..372 " "
+ WORD@372..381 "potential"
+ WHITESPACE@381..382 " "
+ WORD@382..384 "in"
+ WHITESPACE@384..385 " "
+ WORD@385..394 "molecular"
+ WHITESPACE@394..395 " "
+ WORD@395..402 "liquids"
+ R_CURLY@402..403 "}"
+ COMMA@403..404 ","
+ WHITESPACE@404..409 "\n "
+ FIELD@409..428
+ NAME@409..415 "volume"
+ WHITESPACE@415..422 " "
+ EQ@422..423 "="
+ WHITESPACE@423..424 " "
+ LITERAL@424..427
+ INTEGER@424..427 "124"
+ COMMA@427..428 ","
+ WHITESPACE@428..433 "\n "
+ FIELD@433..455
+ NAME@433..436 "eid"
+ WHITESPACE@436..446 " "
+ EQ@446..447 "="
+ WHITESPACE@447..448 " "
+ LITERAL@448..454
+ INTEGER@448..454 "124106"
+ COMMA@454..455 ","
+ WHITESPACE@455..460 "\n "
+ FIELD@460..495
+ NAME@460..463 "doi"
+ WHITESPACE@463..473 " "
+ EQ@473..474 "="
+ WHITESPACE@474..475 " "
+ CURLY_GROUP@475..494
+ L_CURLY@475..476 "{"
+ WORD@476..493 "10.1063/1.2172593"
+ R_CURLY@493..494 "}"
+ COMMA@494..495 ","
+ WHITESPACE@495..500 "\n "
+ FIELD@500..525
+ NAME@500..506 "langid"
+ WHITESPACE@506..513 " "
+ EQ@513..514 "="
+ WHITESPACE@514..515 " "
+ CURLY_GROUP@515..524
+ L_CURLY@515..516 "{"
+ WORD@516..523 "english"
+ R_CURLY@523..524 "}"
+ COMMA@524..525 ","
+ WHITESPACE@525..530 "\n "
+ FIELD@530..564
+ NAME@530..540 "langidopts"
+ WHITESPACE@540..543 " "
+ EQ@543..544 "="
+ WHITESPACE@544..545 " "
+ CURLY_GROUP@545..563
+ L_CURLY@545..546 "{"
+ WORD@546..562 "variant=american"
+ R_CURLY@562..563 "}"
+ COMMA@563..564 ","
+ WHITESPACE@564..569 "\n "
+ FIELD@569..631
+ NAME@569..579 "indextitle"
+ WHITESPACE@579..582 " "
+ EQ@582..583 "="
+ WHITESPACE@583..584 " "
+ CURLY_GROUP@584..630
+ L_CURLY@584..585 "{"
+ WORD@585..596 "Computation"
+ WHITESPACE@596..597 " "
+ WORD@597..599 "of"
+ WHITESPACE@599..600 " "
+ WORD@600..605 "ionic"
+ WHITESPACE@605..606 " "
+ WORD@606..615 "solvation"
+ WHITESPACE@615..616 " "
+ WORD@616..620 "free"
+ WHITESPACE@620..621 " "
+ WORD@621..629 "energies"
+ R_CURLY@629..630 "}"
+ COMMA@630..631 ","
+ WHITESPACE@631..636 "\n "
+ FIELD@636..896
+ NAME@636..646 "annotation"
+ WHITESPACE@646..649 " "
+ EQ@649..650 "="
+ WHITESPACE@650..651 " "
+ CURLY_GROUP@651..895
+ L_CURLY@651..652 "{"
+ WORD@652..654 "An"
+ WHITESPACE@654..655 " "
+ COMMAND@655..662
+ COMMAND_NAME@655..662 "\\texttt"
+ CURLY_GROUP@662..671
+ L_CURLY@662..663 "{"
+ WORD@663..670 "article"
+ R_CURLY@670..671 "}"
+ WHITESPACE@671..672 " "
+ WORD@672..677 "entry"
+ WHITESPACE@677..678 " "
+ WORD@678..682 "with"
+ WHITESPACE@682..683 " "
+ WORD@683..685 "an"
+ WHITESPACE@685..686 " "
+ COMMAND@686..693
+ COMMAND_NAME@686..693 "\\texttt"
+ CURLY_GROUP@693..698
+ L_CURLY@693..694 "{"
+ WORD@694..697 "eid"
+ R_CURLY@697..698 "}"
+ WHITESPACE@698..699 " "
+ WORD@699..702 "and"
+ WHITESPACE@702..703 " "
+ WORD@703..704 "a"
+ WHITESPACE@704..725 "\n "
+ COMMAND@725..732
+ COMMAND_NAME@725..732 "\\texttt"
+ CURLY_GROUP@732..737
+ L_CURLY@732..733 "{"
+ WORD@733..736 "doi"
+ R_CURLY@736..737 "}"
+ WHITESPACE@737..738 " "
+ WORD@738..744 "field."
+ WHITESPACE@744..745 " "
+ WORD@745..749 "Note"
+ WHITESPACE@749..750 " "
+ WORD@750..754 "that"
+ WHITESPACE@754..755 " "
+ WORD@755..758 "the"
+ WHITESPACE@758..759 " "
+ COMMAND@759..766
+ COMMAND_NAME@759..766 "\\textsc"
+ CURLY_GROUP@766..771
+ L_CURLY@766..767 "{"
+ WORD@767..770 "doi"
+ R_CURLY@770..771 "}"
+ WHITESPACE@771..772 " "
+ WORD@772..774 "is"
+ WHITESPACE@774..775 " "
+ WORD@775..786 "transformed"
+ WHITESPACE@786..807 "\n "
+ WORD@807..811 "into"
+ WHITESPACE@811..812 " "
+ WORD@812..813 "a"
+ WHITESPACE@813..814 " "
+ WORD@814..823 "clickable"
+ WHITESPACE@823..824 " "
+ WORD@824..828 "link"
+ WHITESPACE@828..829 " "
+ WORD@829..831 "if"
+ WHITESPACE@831..832 " "
+ COMMAND@832..839
+ COMMAND_NAME@832..839 "\\texttt"
+ CURLY_GROUP@839..849
+ L_CURLY@839..840 "{"
+ WORD@840..848 "hyperref"
+ R_CURLY@848..849 "}"
+ WHITESPACE@849..850 " "
+ WORD@850..857 "support"
+ WHITESPACE@857..858 " "
+ WORD@858..861 "has"
+ WHITESPACE@861..862 " "
+ WORD@862..866 "been"
+ WHITESPACE@866..887 "\n "
+ WORD@887..894 "enabled"
+ R_CURLY@894..895 "}"
+ COMMA@895..896 ","
+ WHITESPACE@896..897 "\n"
+ R_DELIM@897..898 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_knuth_1984() {
+ check(
+ r#"@book{knuth:ct:a,
+ author = {Knuth, Donald E.},
+ title = {The {\TeX book}},
+ date = 1984,
+ maintitle = {Computers \& Typesetting},
+ volume = {A},
+ publisher = {Addison-Wesley},
+ location = {Reading, Mass.},
+ langid = {english},
+ langidopts = {variant=american},
+ sorttitle = {Computers & Typesetting A},
+ indexsorttitle= {The TeXbook},
+ indextitle = {\protect\TeX book, The},
+ shorttitle = {\TeX book},
+ annotation = {The first volume of a five-volume book. Note the
+ \texttt{sorttitle} field. We want this
+ volume to be listed after the entry referring to the entire
+ five-volume set. Also note the \texttt{indextitle} and
+ \texttt{indexsorttitle} fields. Indexing packages that don't
+ generate robust index entries require some control sequences
+ to be protected from expansion},
+}"#,
+ expect![[r#"
+ ROOT@0..993
+ ENTRY@0..993
+ TYPE@0..5 "@book"
+ L_DELIM@5..6 "{"
+ NAME@6..16 "knuth:ct:a"
+ COMMA@16..17 ","
+ WHITESPACE@17..22 "\n "
+ FIELD@22..56
+ NAME@22..28 "author"
+ WHITESPACE@28..35 " "
+ EQ@35..36 "="
+ WHITESPACE@36..37 " "
+ CURLY_GROUP@37..55
+ L_CURLY@37..38 "{"
+ WORD@38..43 "Knuth"
+ COMMA@43..44 ","
+ WHITESPACE@44..45 " "
+ WORD@45..51 "Donald"
+ WHITESPACE@51..52 " "
+ WORD@52..54 "E."
+ R_CURLY@54..55 "}"
+ COMMA@55..56 ","
+ WHITESPACE@56..61 "\n "
+ FIELD@61..94
+ NAME@61..66 "title"
+ WHITESPACE@66..74 " "
+ EQ@74..75 "="
+ WHITESPACE@75..76 " "
+ CURLY_GROUP@76..93
+ L_CURLY@76..77 "{"
+ WORD@77..80 "The"
+ WHITESPACE@80..81 " "
+ CURLY_GROUP@81..92
+ L_CURLY@81..82 "{"
+ COMMAND@82..86
+ COMMAND_NAME@82..86 "\\TeX"
+ WHITESPACE@86..87 " "
+ WORD@87..91 "book"
+ R_CURLY@91..92 "}"
+ R_CURLY@92..93 "}"
+ COMMA@93..94 ","
+ WHITESPACE@94..99 "\n "
+ FIELD@99..119
+ NAME@99..103 "date"
+ WHITESPACE@103..112 " "
+ EQ@112..113 "="
+ WHITESPACE@113..114 " "
+ LITERAL@114..118
+ INTEGER@114..118 "1984"
+ COMMA@118..119 ","
+ WHITESPACE@119..124 "\n "
+ FIELD@124..166
+ NAME@124..133 "maintitle"
+ WHITESPACE@133..137 " "
+ EQ@137..138 "="
+ WHITESPACE@138..139 " "
+ CURLY_GROUP@139..165
+ L_CURLY@139..140 "{"
+ WORD@140..149 "Computers"
+ WHITESPACE@149..150 " "
+ COMMAND@150..152
+ COMMAND_NAME@150..152 "\\&"
+ WHITESPACE@152..153 " "
+ WORD@153..164 "Typesetting"
+ R_CURLY@164..165 "}"
+ COMMA@165..166 ","
+ WHITESPACE@166..171 "\n "
+ FIELD@171..190
+ NAME@171..177 "volume"
+ WHITESPACE@177..184 " "
+ EQ@184..185 "="
+ WHITESPACE@185..186 " "
+ CURLY_GROUP@186..189
+ L_CURLY@186..187 "{"
+ WORD@187..188 "A"
+ R_CURLY@188..189 "}"
+ COMMA@189..190 ","
+ WHITESPACE@190..195 "\n "
+ FIELD@195..227
+ NAME@195..204 "publisher"
+ WHITESPACE@204..208 " "
+ EQ@208..209 "="
+ WHITESPACE@209..210 " "
+ CURLY_GROUP@210..226
+ L_CURLY@210..211 "{"
+ WORD@211..225 "Addison-Wesley"
+ R_CURLY@225..226 "}"
+ COMMA@226..227 ","
+ WHITESPACE@227..232 "\n "
+ FIELD@232..264
+ NAME@232..240 "location"
+ WHITESPACE@240..245 " "
+ EQ@245..246 "="
+ WHITESPACE@246..247 " "
+ CURLY_GROUP@247..263
+ L_CURLY@247..248 "{"
+ WORD@248..255 "Reading"
+ COMMA@255..256 ","
+ WHITESPACE@256..257 " "
+ WORD@257..262 "Mass."
+ R_CURLY@262..263 "}"
+ COMMA@263..264 ","
+ WHITESPACE@264..269 "\n "
+ FIELD@269..294
+ NAME@269..275 "langid"
+ WHITESPACE@275..282 " "
+ EQ@282..283 "="
+ WHITESPACE@283..284 " "
+ CURLY_GROUP@284..293
+ L_CURLY@284..285 "{"
+ WORD@285..292 "english"
+ R_CURLY@292..293 "}"
+ COMMA@293..294 ","
+ WHITESPACE@294..299 "\n "
+ FIELD@299..333
+ NAME@299..309 "langidopts"
+ WHITESPACE@309..312 " "
+ EQ@312..313 "="
+ WHITESPACE@313..314 " "
+ CURLY_GROUP@314..332
+ L_CURLY@314..315 "{"
+ WORD@315..331 "variant=american"
+ R_CURLY@331..332 "}"
+ COMMA@332..333 ","
+ WHITESPACE@333..338 "\n "
+ FIELD@338..381
+ NAME@338..347 "sorttitle"
+ WHITESPACE@347..351 " "
+ EQ@351..352 "="
+ WHITESPACE@352..353 " "
+ CURLY_GROUP@353..380
+ L_CURLY@353..354 "{"
+ WORD@354..363 "Computers"
+ WHITESPACE@363..364 " "
+ WORD@364..365 "&"
+ WHITESPACE@365..366 " "
+ WORD@366..377 "Typesetting"
+ WHITESPACE@377..378 " "
+ WORD@378..379 "A"
+ R_CURLY@379..380 "}"
+ COMMA@380..381 ","
+ WHITESPACE@381..386 "\n "
+ FIELD@386..416
+ NAME@386..400 "indexsorttitle"
+ EQ@400..401 "="
+ WHITESPACE@401..402 " "
+ CURLY_GROUP@402..415
+ L_CURLY@402..403 "{"
+ WORD@403..406 "The"
+ WHITESPACE@406..407 " "
+ WORD@407..414 "TeXbook"
+ R_CURLY@414..415 "}"
+ COMMA@415..416 ","
+ WHITESPACE@416..421 "\n "
+ FIELD@421..461
+ NAME@421..431 "indextitle"
+ WHITESPACE@431..434 " "
+ EQ@434..435 "="
+ WHITESPACE@435..436 " "
+ CURLY_GROUP@436..460
+ L_CURLY@436..437 "{"
+ COMMAND@437..445
+ COMMAND_NAME@437..445 "\\protect"
+ COMMAND@445..449
+ COMMAND_NAME@445..449 "\\TeX"
+ WHITESPACE@449..450 " "
+ WORD@450..454 "book"
+ COMMA@454..455 ","
+ WHITESPACE@455..456 " "
+ WORD@456..459 "The"
+ R_CURLY@459..460 "}"
+ COMMA@460..461 ","
+ WHITESPACE@461..466 "\n "
+ FIELD@466..493
+ NAME@466..476 "shorttitle"
+ WHITESPACE@476..479 " "
+ EQ@479..480 "="
+ WHITESPACE@480..481 " "
+ CURLY_GROUP@481..492
+ L_CURLY@481..482 "{"
+ COMMAND@482..486
+ COMMAND_NAME@482..486 "\\TeX"
+ WHITESPACE@486..487 " "
+ WORD@487..491 "book"
+ R_CURLY@491..492 "}"
+ COMMA@492..493 ","
+ WHITESPACE@493..498 "\n "
+ FIELD@498..991
+ NAME@498..508 "annotation"
+ WHITESPACE@508..511 " "
+ EQ@511..512 "="
+ WHITESPACE@512..513 " "
+ CURLY_GROUP@513..990
+ L_CURLY@513..514 "{"
+ WORD@514..517 "The"
+ WHITESPACE@517..518 " "
+ WORD@518..523 "first"
+ WHITESPACE@523..524 " "
+ WORD@524..530 "volume"
+ WHITESPACE@530..531 " "
+ WORD@531..533 "of"
+ WHITESPACE@533..534 " "
+ WORD@534..535 "a"
+ WHITESPACE@535..536 " "
+ WORD@536..547 "five-volume"
+ WHITESPACE@547..548 " "
+ WORD@548..553 "book."
+ WHITESPACE@553..554 " "
+ WORD@554..558 "Note"
+ WHITESPACE@558..559 " "
+ WORD@559..562 "the"
+ WHITESPACE@562..583 "\n "
+ COMMAND@583..590
+ COMMAND_NAME@583..590 "\\texttt"
+ CURLY_GROUP@590..601
+ L_CURLY@590..591 "{"
+ WORD@591..600 "sorttitle"
+ R_CURLY@600..601 "}"
+ WHITESPACE@601..602 " "
+ WORD@602..608 "field."
+ WHITESPACE@608..609 " "
+ WORD@609..611 "We"
+ WHITESPACE@611..612 " "
+ WORD@612..616 "want"
+ WHITESPACE@616..617 " "
+ WORD@617..621 "this"
+ WHITESPACE@621..642 "\n "
+ WORD@642..648 "volume"
+ WHITESPACE@648..649 " "
+ WORD@649..651 "to"
+ WHITESPACE@651..652 " "
+ WORD@652..654 "be"
+ WHITESPACE@654..655 " "
+ WORD@655..661 "listed"
+ WHITESPACE@661..662 " "
+ WORD@662..667 "after"
+ WHITESPACE@667..668 " "
+ WORD@668..671 "the"
+ WHITESPACE@671..672 " "
+ WORD@672..677 "entry"
+ WHITESPACE@677..678 " "
+ WORD@678..687 "referring"
+ WHITESPACE@687..688 " "
+ WORD@688..690 "to"
+ WHITESPACE@690..691 " "
+ WORD@691..694 "the"
+ WHITESPACE@694..695 " "
+ WORD@695..701 "entire"
+ WHITESPACE@701..722 "\n "
+ WORD@722..733 "five-volume"
+ WHITESPACE@733..734 " "
+ WORD@734..738 "set."
+ WHITESPACE@738..739 " "
+ WORD@739..743 "Also"
+ WHITESPACE@743..744 " "
+ WORD@744..748 "note"
+ WHITESPACE@748..749 " "
+ WORD@749..752 "the"
+ WHITESPACE@752..753 " "
+ COMMAND@753..760
+ COMMAND_NAME@753..760 "\\texttt"
+ CURLY_GROUP@760..772
+ L_CURLY@760..761 "{"
+ WORD@761..771 "indextitle"
+ R_CURLY@771..772 "}"
+ WHITESPACE@772..773 " "
+ WORD@773..776 "and"
+ WHITESPACE@776..797 "\n "
+ COMMAND@797..804
+ COMMAND_NAME@797..804 "\\texttt"
+ CURLY_GROUP@804..820
+ L_CURLY@804..805 "{"
+ WORD@805..819 "indexsorttitle"
+ R_CURLY@819..820 "}"
+ WHITESPACE@820..821 " "
+ WORD@821..828 "fields."
+ WHITESPACE@828..829 " "
+ WORD@829..837 "Indexing"
+ WHITESPACE@837..838 " "
+ WORD@838..846 "packages"
+ WHITESPACE@846..847 " "
+ WORD@847..851 "that"
+ WHITESPACE@851..852 " "
+ WORD@852..857 "don't"
+ WHITESPACE@857..878 "\n "
+ WORD@878..886 "generate"
+ WHITESPACE@886..887 " "
+ WORD@887..893 "robust"
+ WHITESPACE@893..894 " "
+ WORD@894..899 "index"
+ WHITESPACE@899..900 " "
+ WORD@900..907 "entries"
+ WHITESPACE@907..908 " "
+ WORD@908..915 "require"
+ WHITESPACE@915..916 " "
+ WORD@916..920 "some"
+ WHITESPACE@920..921 " "
+ WORD@921..928 "control"
+ WHITESPACE@928..929 " "
+ WORD@929..938 "sequences"
+ WHITESPACE@938..959 "\n "
+ WORD@959..961 "to"
+ WHITESPACE@961..962 " "
+ WORD@962..964 "be"
+ WHITESPACE@964..965 " "
+ WORD@965..974 "protected"
+ WHITESPACE@974..975 " "
+ WORD@975..979 "from"
+ WHITESPACE@979..980 " "
+ WORD@980..989 "expansion"
+ R_CURLY@989..990 "}"
+ COMMA@990..991 ","
+ WHITESPACE@991..992 "\n"
+ R_DELIM@992..993 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_matuz_1990() {
+ check(
+ r#"@collection{matuz:doody,
+ editor = {Matuz, Roger},
+ title = {Contemporary Literary Criticism},
+ year = 1990,
+ volume = 61,
+ publisher = {Gale},
+ location = {Detroit},
+ pages = {204-208},
+ langid = {english},
+ langidopts = {variant=american},
+ annotation = {A \texttt{collection} entry providing the excerpt information
+ for the \texttt{doody} entry. Note the format of the
+ \texttt{pages} field},
+}"#,
+ expect![[r#"
+ ROOT@0..517
+ ENTRY@0..517
+ TYPE@0..11 "@collection"
+ L_DELIM@11..12 "{"
+ NAME@12..23 "matuz:doody"
+ COMMA@23..24 ","
+ WHITESPACE@24..29 "\n "
+ FIELD@29..59
+ NAME@29..35 "editor"
+ WHITESPACE@35..42 " "
+ EQ@42..43 "="
+ WHITESPACE@43..44 " "
+ CURLY_GROUP@44..58
+ L_CURLY@44..45 "{"
+ WORD@45..50 "Matuz"
+ COMMA@50..51 ","
+ WHITESPACE@51..52 " "
+ WORD@52..57 "Roger"
+ R_CURLY@57..58 "}"
+ COMMA@58..59 ","
+ WHITESPACE@59..64 "\n "
+ FIELD@64..113
+ NAME@64..69 "title"
+ WHITESPACE@69..77 " "
+ EQ@77..78 "="
+ WHITESPACE@78..79 " "
+ CURLY_GROUP@79..112
+ L_CURLY@79..80 "{"
+ WORD@80..92 "Contemporary"
+ WHITESPACE@92..93 " "
+ WORD@93..101 "Literary"
+ WHITESPACE@101..102 " "
+ WORD@102..111 "Criticism"
+ R_CURLY@111..112 "}"
+ COMMA@112..113 ","
+ WHITESPACE@113..118 "\n "
+ FIELD@118..138
+ NAME@118..122 "year"
+ WHITESPACE@122..131 " "
+ EQ@131..132 "="
+ WHITESPACE@132..133 " "
+ LITERAL@133..137
+ INTEGER@133..137 "1990"
+ COMMA@137..138 ","
+ WHITESPACE@138..143 "\n "
+ FIELD@143..161
+ NAME@143..149 "volume"
+ WHITESPACE@149..156 " "
+ EQ@156..157 "="
+ WHITESPACE@157..158 " "
+ LITERAL@158..160
+ INTEGER@158..160 "61"
+ COMMA@160..161 ","
+ WHITESPACE@161..166 "\n "
+ FIELD@166..188
+ NAME@166..175 "publisher"
+ WHITESPACE@175..179 " "
+ EQ@179..180 "="
+ WHITESPACE@180..181 " "
+ CURLY_GROUP@181..187
+ L_CURLY@181..182 "{"
+ WORD@182..186 "Gale"
+ R_CURLY@186..187 "}"
+ COMMA@187..188 ","
+ WHITESPACE@188..193 "\n "
+ FIELD@193..218
+ NAME@193..201 "location"
+ WHITESPACE@201..206 " "
+ EQ@206..207 "="
+ WHITESPACE@207..208 " "
+ CURLY_GROUP@208..217
+ L_CURLY@208..209 "{"
+ WORD@209..216 "Detroit"
+ R_CURLY@216..217 "}"
+ COMMA@217..218 ","
+ WHITESPACE@218..223 "\n "
+ FIELD@223..248
+ NAME@223..228 "pages"
+ WHITESPACE@228..236 " "
+ EQ@236..237 "="
+ WHITESPACE@237..238 " "
+ CURLY_GROUP@238..247
+ L_CURLY@238..239 "{"
+ WORD@239..246 "204-208"
+ R_CURLY@246..247 "}"
+ COMMA@247..248 ","
+ WHITESPACE@248..253 "\n "
+ FIELD@253..278
+ NAME@253..259 "langid"
+ WHITESPACE@259..266 " "
+ EQ@266..267 "="
+ WHITESPACE@267..268 " "
+ CURLY_GROUP@268..277
+ L_CURLY@268..269 "{"
+ WORD@269..276 "english"
+ R_CURLY@276..277 "}"
+ COMMA@277..278 ","
+ WHITESPACE@278..283 "\n "
+ FIELD@283..317
+ NAME@283..293 "langidopts"
+ WHITESPACE@293..296 " "
+ EQ@296..297 "="
+ WHITESPACE@297..298 " "
+ CURLY_GROUP@298..316
+ L_CURLY@298..299 "{"
+ WORD@299..315 "variant=american"
+ R_CURLY@315..316 "}"
+ COMMA@316..317 ","
+ WHITESPACE@317..322 "\n "
+ FIELD@322..515
+ NAME@322..332 "annotation"
+ WHITESPACE@332..335 " "
+ EQ@335..336 "="
+ WHITESPACE@336..337 " "
+ CURLY_GROUP@337..514
+ L_CURLY@337..338 "{"
+ WORD@338..339 "A"
+ WHITESPACE@339..340 " "
+ COMMAND@340..347
+ COMMAND_NAME@340..347 "\\texttt"
+ CURLY_GROUP@347..359
+ L_CURLY@347..348 "{"
+ WORD@348..358 "collection"
+ R_CURLY@358..359 "}"
+ WHITESPACE@359..360 " "
+ WORD@360..365 "entry"
+ WHITESPACE@365..366 " "
+ WORD@366..375 "providing"
+ WHITESPACE@375..376 " "
+ WORD@376..379 "the"
+ WHITESPACE@379..380 " "
+ WORD@380..387 "excerpt"
+ WHITESPACE@387..388 " "
+ WORD@388..399 "information"
+ WHITESPACE@399..420 "\n "
+ WORD@420..423 "for"
+ WHITESPACE@423..424 " "
+ WORD@424..427 "the"
+ WHITESPACE@427..428 " "
+ COMMAND@428..435
+ COMMAND_NAME@428..435 "\\texttt"
+ CURLY_GROUP@435..442
+ L_CURLY@435..436 "{"
+ WORD@436..441 "doody"
+ R_CURLY@441..442 "}"
+ WHITESPACE@442..443 " "
+ WORD@443..449 "entry."
+ WHITESPACE@449..450 " "
+ WORD@450..454 "Note"
+ WHITESPACE@454..455 " "
+ WORD@455..458 "the"
+ WHITESPACE@458..459 " "
+ WORD@459..465 "format"
+ WHITESPACE@465..466 " "
+ WORD@466..468 "of"
+ WHITESPACE@468..469 " "
+ WORD@469..472 "the"
+ WHITESPACE@472..493 "\n "
+ COMMAND@493..500
+ COMMAND_NAME@493..500 "\\texttt"
+ CURLY_GROUP@500..507
+ L_CURLY@500..501 "{"
+ WORD@501..506 "pages"
+ R_CURLY@506..507 "}"
+ WHITESPACE@507..508 " "
+ WORD@508..513 "field"
+ R_CURLY@513..514 "}"
+ COMMA@514..515 ","
+ WHITESPACE@515..516 "\n"
+ R_DELIM@516..517 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_nietzsche_1998() {
+ check(
+ r#"@string{dtv = {Deutscher Taschenbuch-Verlag}}
+
+@mvbook{nietzsche:ksa,
+ author = {Nietzsche, Friedrich},
+ title = {S{\"a}mtliche Werke},
+ date = 1988,
+ editor = {Colli, Giorgio and Montinari, Mazzino},
+ edition = 2,
+ volumes = 15,
+ publisher = dtv # { and Walter de Gruyter},
+ location = {M{\"u}nchen and Berlin and New York},
+ langid = {german},
+ sorttitle = {Werke-00-000},
+ indexsorttitle= {Samtliche Werke},
+ subtitle = {Kritische Studienausgabe},
+ annotation = {The critical edition of Nietzsche's works. This is a
+ \texttt{mvbook} entry referring to a 15-volume work as a
+ whole. Note the \texttt{volumes} field and the format of the
+ \texttt{publisher} and \texttt{location} fields in the
+ database file. Also note the \texttt{sorttitle} and
+ field which is used to fine-tune the
+ sorting order of the bibliography. We want this item listed
+ first in the bibliography},
+}"#,
+ expect![[r##"
+ ROOT@0..1112
+ STRING@0..49
+ TYPE@0..7 "@string"
+ L_DELIM@7..8 "{"
+ NAME@8..11 "dtv"
+ WHITESPACE@11..16 " "
+ EQ@16..17 "="
+ WHITESPACE@17..18 " "
+ CURLY_GROUP@18..48
+ L_CURLY@18..19 "{"
+ WORD@19..28 "Deutscher"
+ WHITESPACE@28..29 " "
+ WORD@29..47 "Taschenbuch-Verlag"
+ R_CURLY@47..48 "}"
+ R_DELIM@48..49 "}"
+ JUNK@49..51 "\n\n"
+ ENTRY@51..1112
+ TYPE@51..58 "@mvbook"
+ L_DELIM@58..59 "{"
+ NAME@59..72 "nietzsche:ksa"
+ COMMA@72..73 ","
+ WHITESPACE@73..78 "\n "
+ FIELD@78..116
+ NAME@78..84 "author"
+ WHITESPACE@84..91 " "
+ EQ@91..92 "="
+ WHITESPACE@92..93 " "
+ CURLY_GROUP@93..115
+ L_CURLY@93..94 "{"
+ WORD@94..103 "Nietzsche"
+ COMMA@103..104 ","
+ WHITESPACE@104..105 " "
+ WORD@105..114 "Friedrich"
+ R_CURLY@114..115 "}"
+ COMMA@115..116 ","
+ WHITESPACE@116..121 "\n "
+ FIELD@121..158
+ NAME@121..126 "title"
+ WHITESPACE@126..134 " "
+ EQ@134..135 "="
+ WHITESPACE@135..136 " "
+ CURLY_GROUP@136..157
+ L_CURLY@136..137 "{"
+ WORD@137..138 "S"
+ CURLY_GROUP@138..143
+ L_CURLY@138..139 "{"
+ ACCENT@139..142
+ ACCENT_NAME@139..141 "\\\""
+ WORD@141..142 "a"
+ R_CURLY@142..143 "}"
+ WORD@143..150 "mtliche"
+ WHITESPACE@150..151 " "
+ WORD@151..156 "Werke"
+ R_CURLY@156..157 "}"
+ COMMA@157..158 ","
+ WHITESPACE@158..163 "\n "
+ FIELD@163..183
+ NAME@163..167 "date"
+ WHITESPACE@167..176 " "
+ EQ@176..177 "="
+ WHITESPACE@177..178 " "
+ LITERAL@178..182
+ INTEGER@178..182 "1988"
+ COMMA@182..183 ","
+ WHITESPACE@183..188 "\n "
+ FIELD@188..243
+ NAME@188..194 "editor"
+ WHITESPACE@194..201 " "
+ EQ@201..202 "="
+ WHITESPACE@202..203 " "
+ CURLY_GROUP@203..242
+ L_CURLY@203..204 "{"
+ WORD@204..209 "Colli"
+ COMMA@209..210 ","
+ WHITESPACE@210..211 " "
+ WORD@211..218 "Giorgio"
+ WHITESPACE@218..219 " "
+ WORD@219..222 "and"
+ WHITESPACE@222..223 " "
+ WORD@223..232 "Montinari"
+ COMMA@232..233 ","
+ WHITESPACE@233..234 " "
+ WORD@234..241 "Mazzino"
+ R_CURLY@241..242 "}"
+ COMMA@242..243 ","
+ WHITESPACE@243..248 "\n "
+ FIELD@248..265
+ NAME@248..255 "edition"
+ WHITESPACE@255..261 " "
+ EQ@261..262 "="
+ WHITESPACE@262..263 " "
+ LITERAL@263..264
+ INTEGER@263..264 "2"
+ COMMA@264..265 ","
+ WHITESPACE@265..270 "\n "
+ FIELD@270..288
+ NAME@270..277 "volumes"
+ WHITESPACE@277..283 " "
+ EQ@283..284 "="
+ WHITESPACE@284..285 " "
+ LITERAL@285..287
+ INTEGER@285..287 "15"
+ COMMA@287..288 ","
+ WHITESPACE@288..293 "\n "
+ FIELD@293..339
+ NAME@293..302 "publisher"
+ WHITESPACE@302..306 " "
+ EQ@306..307 "="
+ WHITESPACE@307..308 " "
+ JOIN@308..338
+ LITERAL@308..311
+ NAME@308..311 "dtv"
+ WHITESPACE@311..312 " "
+ POUND@312..313 "#"
+ WHITESPACE@313..314 " "
+ CURLY_GROUP@314..338
+ L_CURLY@314..315 "{"
+ WHITESPACE@315..316 " "
+ WORD@316..319 "and"
+ WHITESPACE@319..320 " "
+ WORD@320..326 "Walter"
+ WHITESPACE@326..327 " "
+ WORD@327..329 "de"
+ WHITESPACE@329..330 " "
+ WORD@330..337 "Gruyter"
+ R_CURLY@337..338 "}"
+ COMMA@338..339 ","
+ WHITESPACE@339..344 "\n "
+ FIELD@344..397
+ NAME@344..352 "location"
+ WHITESPACE@352..357 " "
+ EQ@357..358 "="
+ WHITESPACE@358..359 " "
+ CURLY_GROUP@359..396
+ L_CURLY@359..360 "{"
+ WORD@360..361 "M"
+ CURLY_GROUP@361..366
+ L_CURLY@361..362 "{"
+ ACCENT@362..365
+ ACCENT_NAME@362..364 "\\\""
+ WORD@364..365 "u"
+ R_CURLY@365..366 "}"
+ WORD@366..371 "nchen"
+ WHITESPACE@371..372 " "
+ WORD@372..375 "and"
+ WHITESPACE@375..376 " "
+ WORD@376..382 "Berlin"
+ WHITESPACE@382..383 " "
+ WORD@383..386 "and"
+ WHITESPACE@386..387 " "
+ WORD@387..390 "New"
+ WHITESPACE@390..391 " "
+ WORD@391..395 "York"
+ R_CURLY@395..396 "}"
+ COMMA@396..397 ","
+ WHITESPACE@397..402 "\n "
+ FIELD@402..426
+ NAME@402..408 "langid"
+ WHITESPACE@408..415 " "
+ EQ@415..416 "="
+ WHITESPACE@416..417 " "
+ CURLY_GROUP@417..425
+ L_CURLY@417..418 "{"
+ WORD@418..424 "german"
+ R_CURLY@424..425 "}"
+ COMMA@425..426 ","
+ WHITESPACE@426..431 "\n "
+ FIELD@431..461
+ NAME@431..440 "sorttitle"
+ WHITESPACE@440..444 " "
+ EQ@444..445 "="
+ WHITESPACE@445..446 " "
+ CURLY_GROUP@446..460
+ L_CURLY@446..447 "{"
+ WORD@447..459 "Werke-00-000"
+ R_CURLY@459..460 "}"
+ COMMA@460..461 ","
+ WHITESPACE@461..466 "\n "
+ FIELD@466..500
+ NAME@466..480 "indexsorttitle"
+ EQ@480..481 "="
+ WHITESPACE@481..482 " "
+ CURLY_GROUP@482..499
+ L_CURLY@482..483 "{"
+ WORD@483..492 "Samtliche"
+ WHITESPACE@492..493 " "
+ WORD@493..498 "Werke"
+ R_CURLY@498..499 "}"
+ COMMA@499..500 ","
+ WHITESPACE@500..505 "\n "
+ FIELD@505..547
+ NAME@505..513 "subtitle"
+ WHITESPACE@513..518 " "
+ EQ@518..519 "="
+ WHITESPACE@519..520 " "
+ CURLY_GROUP@520..546
+ L_CURLY@520..521 "{"
+ WORD@521..530 "Kritische"
+ WHITESPACE@530..531 " "
+ WORD@531..545 "Studienausgabe"
+ R_CURLY@545..546 "}"
+ COMMA@546..547 ","
+ WHITESPACE@547..552 "\n "
+ FIELD@552..1110
+ NAME@552..562 "annotation"
+ WHITESPACE@562..565 " "
+ EQ@565..566 "="
+ WHITESPACE@566..567 " "
+ CURLY_GROUP@567..1109
+ L_CURLY@567..568 "{"
+ WORD@568..571 "The"
+ WHITESPACE@571..572 " "
+ WORD@572..580 "critical"
+ WHITESPACE@580..581 " "
+ WORD@581..588 "edition"
+ WHITESPACE@588..589 " "
+ WORD@589..591 "of"
+ WHITESPACE@591..592 " "
+ WORD@592..603 "Nietzsche's"
+ WHITESPACE@603..604 " "
+ WORD@604..610 "works."
+ WHITESPACE@610..611 " "
+ WORD@611..615 "This"
+ WHITESPACE@615..616 " "
+ WORD@616..618 "is"
+ WHITESPACE@618..619 " "
+ WORD@619..620 "a"
+ WHITESPACE@620..641 "\n "
+ COMMAND@641..648
+ COMMAND_NAME@641..648 "\\texttt"
+ CURLY_GROUP@648..656
+ L_CURLY@648..649 "{"
+ WORD@649..655 "mvbook"
+ R_CURLY@655..656 "}"
+ WHITESPACE@656..657 " "
+ WORD@657..662 "entry"
+ WHITESPACE@662..663 " "
+ WORD@663..672 "referring"
+ WHITESPACE@672..673 " "
+ WORD@673..675 "to"
+ WHITESPACE@675..676 " "
+ WORD@676..677 "a"
+ WHITESPACE@677..678 " "
+ WORD@678..687 "15-volume"
+ WHITESPACE@687..688 " "
+ WORD@688..692 "work"
+ WHITESPACE@692..693 " "
+ WORD@693..695 "as"
+ WHITESPACE@695..696 " "
+ WORD@696..697 "a"
+ WHITESPACE@697..718 "\n "
+ WORD@718..724 "whole."
+ WHITESPACE@724..725 " "
+ WORD@725..729 "Note"
+ WHITESPACE@729..730 " "
+ WORD@730..733 "the"
+ WHITESPACE@733..734 " "
+ COMMAND@734..741
+ COMMAND_NAME@734..741 "\\texttt"
+ CURLY_GROUP@741..750
+ L_CURLY@741..742 "{"
+ WORD@742..749 "volumes"
+ R_CURLY@749..750 "}"
+ WHITESPACE@750..751 " "
+ WORD@751..756 "field"
+ WHITESPACE@756..757 " "
+ WORD@757..760 "and"
+ WHITESPACE@760..761 " "
+ WORD@761..764 "the"
+ WHITESPACE@764..765 " "
+ WORD@765..771 "format"
+ WHITESPACE@771..772 " "
+ WORD@772..774 "of"
+ WHITESPACE@774..775 " "
+ WORD@775..778 "the"
+ WHITESPACE@778..799 "\n "
+ COMMAND@799..806
+ COMMAND_NAME@799..806 "\\texttt"
+ CURLY_GROUP@806..817
+ L_CURLY@806..807 "{"
+ WORD@807..816 "publisher"
+ R_CURLY@816..817 "}"
+ WHITESPACE@817..818 " "
+ WORD@818..821 "and"
+ WHITESPACE@821..822 " "
+ COMMAND@822..829
+ COMMAND_NAME@822..829 "\\texttt"
+ CURLY_GROUP@829..839
+ L_CURLY@829..830 "{"
+ WORD@830..838 "location"
+ R_CURLY@838..839 "}"
+ WHITESPACE@839..840 " "
+ WORD@840..846 "fields"
+ WHITESPACE@846..847 " "
+ WORD@847..849 "in"
+ WHITESPACE@849..850 " "
+ WORD@850..853 "the"
+ WHITESPACE@853..874 "\n "
+ WORD@874..882 "database"
+ WHITESPACE@882..883 " "
+ WORD@883..888 "file."
+ WHITESPACE@888..889 " "
+ WORD@889..893 "Also"
+ WHITESPACE@893..894 " "
+ WORD@894..898 "note"
+ WHITESPACE@898..899 " "
+ WORD@899..902 "the"
+ WHITESPACE@902..903 " "
+ COMMAND@903..910
+ COMMAND_NAME@903..910 "\\texttt"
+ CURLY_GROUP@910..921
+ L_CURLY@910..911 "{"
+ WORD@911..920 "sorttitle"
+ R_CURLY@920..921 "}"
+ WHITESPACE@921..922 " "
+ WORD@922..925 "and"
+ WHITESPACE@925..946 "\n "
+ WORD@946..951 "field"
+ WHITESPACE@951..952 " "
+ WORD@952..957 "which"
+ WHITESPACE@957..958 " "
+ WORD@958..960 "is"
+ WHITESPACE@960..961 " "
+ WORD@961..965 "used"
+ WHITESPACE@965..966 " "
+ WORD@966..968 "to"
+ WHITESPACE@968..969 " "
+ WORD@969..978 "fine-tune"
+ WHITESPACE@978..979 " "
+ WORD@979..982 "the"
+ WHITESPACE@982..1003 "\n "
+ WORD@1003..1010 "sorting"
+ WHITESPACE@1010..1011 " "
+ WORD@1011..1016 "order"
+ WHITESPACE@1016..1017 " "
+ WORD@1017..1019 "of"
+ WHITESPACE@1019..1020 " "
+ WORD@1020..1023 "the"
+ WHITESPACE@1023..1024 " "
+ WORD@1024..1037 "bibliography."
+ WHITESPACE@1037..1038 " "
+ WORD@1038..1040 "We"
+ WHITESPACE@1040..1041 " "
+ WORD@1041..1045 "want"
+ WHITESPACE@1045..1046 " "
+ WORD@1046..1050 "this"
+ WHITESPACE@1050..1051 " "
+ WORD@1051..1055 "item"
+ WHITESPACE@1055..1056 " "
+ WORD@1056..1062 "listed"
+ WHITESPACE@1062..1083 "\n "
+ WORD@1083..1088 "first"
+ WHITESPACE@1088..1089 " "
+ WORD@1089..1091 "in"
+ WHITESPACE@1091..1092 " "
+ WORD@1092..1095 "the"
+ WHITESPACE@1095..1096 " "
+ WORD@1096..1108 "bibliography"
+ R_CURLY@1108..1109 "}"
+ COMMA@1109..1110 ","
+ WHITESPACE@1110..1111 "\n"
+ R_DELIM@1111..1112 "}"
+
+ "##]],
+ );
+}
+
+#[test]
+fn test_rivest_1978() {
+ check(
+ r#"@article{10.1145/359340.359342,
+ author = {Rivest, R. L. and Shamir, A. and Adleman, L.},
+ title = {A Method for Obtaining Digital Signatures and Public-Key Cryptosystems},
+ year = {1978},
+ issue_date = {Feb. 1978},
+ publisher = {Association for Computing Machinery},
+ address = {New York, NY, USA},
+ volume = {21},
+ number = {2},
+ issn = {0001-0782},
+ url = {https://doi.org/10.1145/359340.359342},
+ doi = {10.1145/359340.359342},
+ journal = {Commun. ACM},
+ month = {feb},
+ pages = {120-126},
+ numpages = {7},
+}"#,
+ expect![[r#"
+ ROOT@0..557
+ ENTRY@0..557
+ TYPE@0..8 "@article"
+ L_DELIM@8..9 "{"
+ NAME@9..30 "10.1145/359340.359342"
+ COMMA@30..31 ","
+ WHITESPACE@31..36 "\n "
+ FIELD@36..92
+ NAME@36..42 "author"
+ WHITESPACE@42..43 " "
+ EQ@43..44 "="
+ WHITESPACE@44..45 " "
+ CURLY_GROUP@45..91
+ L_CURLY@45..46 "{"
+ WORD@46..52 "Rivest"
+ COMMA@52..53 ","
+ WHITESPACE@53..54 " "
+ WORD@54..56 "R."
+ WHITESPACE@56..57 " "
+ WORD@57..59 "L."
+ WHITESPACE@59..60 " "
+ WORD@60..63 "and"
+ WHITESPACE@63..64 " "
+ WORD@64..70 "Shamir"
+ COMMA@70..71 ","
+ WHITESPACE@71..72 " "
+ WORD@72..74 "A."
+ WHITESPACE@74..75 " "
+ WORD@75..78 "and"
+ WHITESPACE@78..79 " "
+ WORD@79..86 "Adleman"
+ COMMA@86..87 ","
+ WHITESPACE@87..88 " "
+ WORD@88..90 "L."
+ R_CURLY@90..91 "}"
+ COMMA@91..92 ","
+ WHITESPACE@92..97 "\n "
+ FIELD@97..178
+ NAME@97..102 "title"
+ WHITESPACE@102..103 " "
+ EQ@103..104 "="
+ WHITESPACE@104..105 " "
+ CURLY_GROUP@105..177
+ L_CURLY@105..106 "{"
+ WORD@106..107 "A"
+ WHITESPACE@107..108 " "
+ WORD@108..114 "Method"
+ WHITESPACE@114..115 " "
+ WORD@115..118 "for"
+ WHITESPACE@118..119 " "
+ WORD@119..128 "Obtaining"
+ WHITESPACE@128..129 " "
+ WORD@129..136 "Digital"
+ WHITESPACE@136..137 " "
+ WORD@137..147 "Signatures"
+ WHITESPACE@147..148 " "
+ WORD@148..151 "and"
+ WHITESPACE@151..152 " "
+ WORD@152..162 "Public-Key"
+ WHITESPACE@162..163 " "
+ WORD@163..176 "Cryptosystems"
+ R_CURLY@176..177 "}"
+ COMMA@177..178 ","
+ WHITESPACE@178..183 "\n "
+ FIELD@183..197
+ NAME@183..187 "year"
+ WHITESPACE@187..188 " "
+ EQ@188..189 "="
+ WHITESPACE@189..190 " "
+ CURLY_GROUP@190..196
+ L_CURLY@190..191 "{"
+ INTEGER@191..195 "1978"
+ R_CURLY@195..196 "}"
+ COMMA@196..197 ","
+ WHITESPACE@197..202 "\n "
+ FIELD@202..227
+ NAME@202..212 "issue_date"
+ WHITESPACE@212..213 " "
+ EQ@213..214 "="
+ WHITESPACE@214..215 " "
+ CURLY_GROUP@215..226
+ L_CURLY@215..216 "{"
+ WORD@216..220 "Feb."
+ WHITESPACE@220..221 " "
+ INTEGER@221..225 "1978"
+ R_CURLY@225..226 "}"
+ COMMA@226..227 ","
+ WHITESPACE@227..232 "\n "
+ FIELD@232..282
+ NAME@232..241 "publisher"
+ WHITESPACE@241..242 " "
+ EQ@242..243 "="
+ WHITESPACE@243..244 " "
+ CURLY_GROUP@244..281
+ L_CURLY@244..245 "{"
+ WORD@245..256 "Association"
+ WHITESPACE@256..257 " "
+ WORD@257..260 "for"
+ WHITESPACE@260..261 " "
+ WORD@261..270 "Computing"
+ WHITESPACE@270..271 " "
+ WORD@271..280 "Machinery"
+ R_CURLY@280..281 "}"
+ COMMA@281..282 ","
+ WHITESPACE@282..287 "\n "
+ FIELD@287..317
+ NAME@287..294 "address"
+ WHITESPACE@294..295 " "
+ EQ@295..296 "="
+ WHITESPACE@296..297 " "
+ CURLY_GROUP@297..316
+ L_CURLY@297..298 "{"
+ WORD@298..301 "New"
+ WHITESPACE@301..302 " "
+ WORD@302..306 "York"
+ COMMA@306..307 ","
+ WHITESPACE@307..308 " "
+ WORD@308..310 "NY"
+ COMMA@310..311 ","
+ WHITESPACE@311..312 " "
+ WORD@312..315 "USA"
+ R_CURLY@315..316 "}"
+ COMMA@316..317 ","
+ WHITESPACE@317..322 "\n "
+ FIELD@322..336
+ NAME@322..328 "volume"
+ WHITESPACE@328..329 " "
+ EQ@329..330 "="
+ WHITESPACE@330..331 " "
+ CURLY_GROUP@331..335
+ L_CURLY@331..332 "{"
+ INTEGER@332..334 "21"
+ R_CURLY@334..335 "}"
+ COMMA@335..336 ","
+ WHITESPACE@336..341 "\n "
+ FIELD@341..354
+ NAME@341..347 "number"
+ WHITESPACE@347..348 " "
+ EQ@348..349 "="
+ WHITESPACE@349..350 " "
+ CURLY_GROUP@350..353
+ L_CURLY@350..351 "{"
+ INTEGER@351..352 "2"
+ R_CURLY@352..353 "}"
+ COMMA@353..354 ","
+ WHITESPACE@354..359 "\n "
+ FIELD@359..378
+ NAME@359..363 "issn"
+ WHITESPACE@363..364 " "
+ EQ@364..365 "="
+ WHITESPACE@365..366 " "
+ CURLY_GROUP@366..377
+ L_CURLY@366..367 "{"
+ WORD@367..376 "0001-0782"
+ R_CURLY@376..377 "}"
+ COMMA@377..378 ","
+ WHITESPACE@378..383 "\n "
+ FIELD@383..429
+ NAME@383..386 "url"
+ WHITESPACE@386..387 " "
+ EQ@387..388 "="
+ WHITESPACE@388..389 " "
+ CURLY_GROUP@389..428
+ L_CURLY@389..390 "{"
+ WORD@390..427 "https://doi.org/10.11 ..."
+ R_CURLY@427..428 "}"
+ COMMA@428..429 ","
+ WHITESPACE@429..434 "\n "
+ FIELD@434..464
+ NAME@434..437 "doi"
+ WHITESPACE@437..438 " "
+ EQ@438..439 "="
+ WHITESPACE@439..440 " "
+ CURLY_GROUP@440..463
+ L_CURLY@440..441 "{"
+ WORD@441..462 "10.1145/359340.359342"
+ R_CURLY@462..463 "}"
+ COMMA@463..464 ","
+ WHITESPACE@464..469 "\n "
+ FIELD@469..493
+ NAME@469..476 "journal"
+ WHITESPACE@476..477 " "
+ EQ@477..478 "="
+ WHITESPACE@478..479 " "
+ CURLY_GROUP@479..492
+ L_CURLY@479..480 "{"
+ WORD@480..487 "Commun."
+ WHITESPACE@487..488 " "
+ WORD@488..491 "ACM"
+ R_CURLY@491..492 "}"
+ COMMA@492..493 ","
+ WHITESPACE@493..498 "\n "
+ FIELD@498..512
+ NAME@498..503 "month"
+ WHITESPACE@503..504 " "
+ EQ@504..505 "="
+ WHITESPACE@505..506 " "
+ CURLY_GROUP@506..511
+ L_CURLY@506..507 "{"
+ WORD@507..510 "feb"
+ R_CURLY@510..511 "}"
+ COMMA@511..512 ","
+ WHITESPACE@512..517 "\n "
+ FIELD@517..535
+ NAME@517..522 "pages"
+ WHITESPACE@522..523 " "
+ EQ@523..524 "="
+ WHITESPACE@524..525 " "
+ CURLY_GROUP@525..534
+ L_CURLY@525..526 "{"
+ WORD@526..533 "120-126"
+ R_CURLY@533..534 "}"
+ COMMA@534..535 ","
+ WHITESPACE@535..540 "\n "
+ FIELD@540..555
+ NAME@540..548 "numpages"
+ WHITESPACE@548..549 " "
+ EQ@549..550 "="
+ WHITESPACE@550..551 " "
+ CURLY_GROUP@551..554
+ L_CURLY@551..552 "{"
+ INTEGER@552..553 "7"
+ R_CURLY@553..554 "}"
+ COMMA@554..555 ","
+ WHITESPACE@555..556 "\n"
+ R_DELIM@556..557 "}"
+
+ "#]],
+ );
+}
diff --git a/support/texlab/crates/parser/src/build_log.rs b/support/texlab/crates/parser/src/build_log.rs
index 27f3699a66..420d2dda20 100644
--- a/support/texlab/crates/parser/src/build_log.rs
+++ b/support/texlab/crates/parser/src/build_log.rs
@@ -174,14 +174,4 @@ impl PartialOrd for FileRange {
}
#[cfg(test)]
-mod tests {
- use super::parse_build_log;
-
- #[test]
- fn test_parse() {
- insta::glob!("test_data/build_log/*.txt", |path| {
- let text = std::fs::read_to_string(path).unwrap().replace("\r\n", "\n");
- insta::assert_debug_snapshot!(parse_build_log(&text));
- });
- }
-}
+mod tests;
diff --git a/support/texlab/crates/parser/src/build_log/tests.rs b/support/texlab/crates/parser/src/build_log/tests.rs
new file mode 100644
index 0000000000..20d165e008
--- /dev/null
+++ b/support/texlab/crates/parser/src/build_log/tests.rs
@@ -0,0 +1,1228 @@
+use expect_test::{expect, Expect};
+
+use crate::parse_build_log;
+
+fn check(input: &str, expect: Expect) {
+ expect.assert_debug_eq(&parse_build_log(input));
+}
+
+#[test]
+fn test_001() {
+ check(
+ r#"This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/W32TeX) (preloaded format=pdflatex 2018.3.30) 26 DEC 2018 16:50
+entering extended mode
+restricted \write18 enabled.
+%&-line parsing enabled.
+**./parent.tex
+(./parent.tex
+LaTeX2e <2017-04-15>
+Babel <3.10> and hyphenation patterns for 84 language(s) loaded.
+(/TexLive/texmf-dist/tex/latex/base/article.cls
+Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
+(/TexLive/texmf-dist/tex/latex/base/size10.clo
+File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option)
+)
+\c@part=\count79
+\c@section=\count80
+\c@subsection=\count81
+\c@subsubsection=\count82
+\c@paragraph=\count83
+\c@subparagraph=\count84
+\c@figure=\count85
+\c@table=\count86
+\abovecaptionskip=\skip41
+\belowcaptionskip=\skip42
+\bibindent=\dimen102
+)
+(/TexLive/texmf-dist/tex/latex/multirow/bigstrut.sty
+Package: bigstrut 2016/11/25 v2.2 Provide larger struts in tabulars
+\bigstrutjot=\dimen103
+)
+(/TexLive/texmf-dist/tex/latex/multirow/multirow.sty
+Package: multirow 2016/11/25 v2.2 Span multiple rows of a table
+\multirow@colwidth=\skip43
+\multirow@cntb=\count87
+\multirow@dima=\skip44
+) (./parent.aux)
+\openout1 = `parent.aux'.
+
+LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 6.
+LaTeX Font Info: ... okay on input line 6.
+LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 6.
+LaTeX Font Info: ... okay on input line 6.
+LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 6.
+LaTeX Font Info: ... okay on input line 6.
+LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 6.
+LaTeX Font Info: ... okay on input line 6.
+LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 6.
+LaTeX Font Info: ... okay on input line 6.
+LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 6.
+LaTeX Font Info: ... okay on input line 6.
+
+Overfull \hbox (200.00162pt too wide) in paragraph at lines 8--9
+[]\OT1/cmr/m/n/10 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+[]
+
+LaTeX Font Info: External font `cmex10' loaded for size
+(Font) <7> on input line 11.
+LaTeX Font Info: External font `cmex10' loaded for size
+(Font) <5> on input line 11.
+
+Overfull \vbox (3.19998pt too high) detected at line 23
+[]
+
+[1
+
+{/TexLive/texmf-var/fonts/map/pdftex/updmap/pdftex.map}] (./parent.aux) )
+Here is how much of TeX's memory you used:
+265 strings out of 492995
+3121 string characters out of 6138727
+55074 words of memory out of 5000000
+3896 multiletter control sequences out of 15000+600000
+3640 words of font info for 14 fonts, out of 8000000 for 9000
+1141 hyphenation exceptions out of 8191
+23i,20n,20p,124b,282s stack positions out of 5000i,500n,10000p,200000b,80000s
+</
+TexLive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb></TexLive/texmf-d
+ist/fonts/type1/public/amsfonts/cm/cmr7.pfb>
+Output written on parent.pdf (1 page, 17505 bytes).
+PDF statistics:
+16 PDF objects out of 1000 (max. 8388607)
+10 compressed objects within 1 object stream
+0 named destinations out of 1000 (max. 500000)
+1 words of extra memory for PDF output out of 10000 (max. 10000000)"#,
+ expect![[r#"
+ BuildLog {
+ errors: [
+ BuildError {
+ relative_path: "./parent.tex",
+ level: Warning,
+ message: "Overfull \\hbox (200.00162pt too wide) in paragraph at lines 8--9",
+ hint: None,
+ line: Some(
+ 7,
+ ),
+ },
+ BuildError {
+ relative_path: "./parent.tex",
+ level: Warning,
+ message: "Overfull \\vbox (3.19998pt too high) detected at line 23",
+ hint: None,
+ line: Some(
+ 22,
+ ),
+ },
+ ],
+ }
+ "#]],
+ );
+}
+
+#[test]
+fn test_002() {
+ check(
+ r#"This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/W32TeX) (preloaded format=pdflatex 2018.3.30) 26 DEC 2018 16:52
+entering extended mode
+restricted \write18 enabled.
+%&-line parsing enabled.
+**./parent.tex
+(./parent.tex
+LaTeX2e <2017-04-15>
+Babel <3.10> and hyphenation patterns for 84 language(s) loaded.
+(/TexLive/texmf-dist/tex/latex/base/article.cls
+Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
+(/TexLive/texmf-dist/tex/latex/base/size10.clo
+File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option)
+)
+\c@part=\count79
+\c@section=\count80
+\c@subsection=\count81
+\c@subsubsection=\count82
+\c@paragraph=\count83
+\c@subparagraph=\count84
+\c@figure=\count85
+\c@table=\count86
+\abovecaptionskip=\skip41
+\belowcaptionskip=\skip42
+\bibindent=\dimen102
+) (./parent.aux (./child.aux))
+\openout1 = `parent.aux'.
+
+LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 4.
+LaTeX Font Info: ... okay on input line 4.
+LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 4.
+LaTeX Font Info: ... okay on input line 4.
+LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 4.
+LaTeX Font Info: ... okay on input line 4.
+LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 4.
+LaTeX Font Info: ... okay on input line 4.
+LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 4.
+LaTeX Font Info: ... okay on input line 4.
+LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 4.
+LaTeX Font Info: ... okay on input line 4.
+(./child.tex
+! Undefined control sequence.
+l.1 \foo
+
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+) (./parent.aux) )
+Here is how much of TeX's memory you used:
+205 strings out of 492995
+2149 string characters out of 6138727
+54074 words of memory out of 5000000
+3841 multiletter control sequences out of 15000+600000
+3640 words of font info for 14 fonts, out of 8000000 for 9000
+1141 hyphenation exceptions out of 8191
+23i,1n,17p,116b,36s stack positions out of 5000i,500n,10000p,200000b,80000s
+
+No pages of output.
+PDF statistics:
+0 PDF objects out of 1000 (max. 8388607)
+0 named destinations out of 1000 (max. 500000)
+1 words of extra memory for PDF output out of 10000 (max. 10000000)"#,
+ expect![[r#"
+ BuildLog {
+ errors: [
+ BuildError {
+ relative_path: "./child.tex",
+ level: Error,
+ message: "Undefined control sequence.",
+ hint: Some(
+ "\\foo",
+ ),
+ line: Some(
+ 0,
+ ),
+ },
+ ],
+ }
+ "#]],
+ );
+}
+
+#[test]
+fn test_003() {
+ check(
+ r#"This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/W32TeX) (preloaded format=pdflatex 2018.3.30) 26 DEC 2018 16:51
+entering extended mode
+restricted \write18 enabled.
+%&-line parsing enabled.
+**./parent.tex
+(./parent.tex
+LaTeX2e <2017-04-15>
+Babel <3.10> and hyphenation patterns for 84 language(s) loaded.
+(/TexLive/texmf-dist/tex/latex/base/article.cls
+Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
+(/TexLive/texmf-dist/tex/latex/base/size10.clo
+File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option)
+)
+\c@part=\count79
+\c@section=\count80
+\c@subsection=\count81
+\c@subsubsection=\count82
+\c@paragraph=\count83
+\c@subparagraph=\count84
+\c@figure=\count85
+\c@table=\count86
+\abovecaptionskip=\skip41
+\belowcaptionskip=\skip42
+\bibindent=\dimen102
+) (./parent.aux)
+\openout1 = `parent.aux'.
+
+LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 4.
+LaTeX Font Info: ... okay on input line 4.
+LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 4.
+LaTeX Font Info: ... okay on input line 4.
+LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 4.
+LaTeX Font Info: ... okay on input line 4.
+LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 4.
+LaTeX Font Info: ... okay on input line 4.
+LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 4.
+LaTeX Font Info: ... okay on input line 4.
+LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 4.
+LaTeX Font Info: ... okay on input line 4.
+
+LaTeX Warning: Citation `foo' on page 1 undefined on input line 6.
+
+[1
+
+{/TexLive/texmf-var/fonts/map/pdftex/updmap/pdftex.map}] (./parent.aux)
+
+LaTeX Warning: There were undefined references.
+
+)
+Here is how much of TeX's memory you used:
+204 strings out of 492995
+2142 string characters out of 6138727
+54074 words of memory out of 5000000
+3842 multiletter control sequences out of 15000+600000
+3948 words of font info for 15 fonts, out of 8000000 for 9000
+1141 hyphenation exceptions out of 8191
+23i,4n,21p,116b,107s stack positions out of 5000i,500n,10000p,200000b,80000s
+</TexLive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb></TexLive/
+texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb>
+Output written on parent.pdf (1 page, 17339 bytes).
+PDF statistics:
+16 PDF objects out of 1000 (max. 8388607)
+10 compressed objects within 1 object stream
+0 named destinations out of 1000 (max. 500000)
+1 words of extra memory for PDF output out of 10000 (max. 10000000)"#,
+ expect![[r#"
+ BuildLog {
+ errors: [
+ BuildError {
+ relative_path: "./parent.tex",
+ level: Warning,
+ message: "LaTeX Warning: Citation `foo' on page 1 undefined on input line 6.",
+ hint: None,
+ line: Some(
+ 5,
+ ),
+ },
+ BuildError {
+ relative_path: "./parent.tex",
+ level: Warning,
+ message: "LaTeX Warning: There were undefined references.",
+ hint: None,
+ line: None,
+ },
+ ],
+ }
+ "#]],
+ );
+}
+
+#[test]
+fn test_004() {
+ check(
+ r#"This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/W32TeX) (preloaded format=pdflatex 2018.3.30) 26 DEC 2018 16:40
+entering extended mode
+restricted \write18 enabled.
+%&-line parsing enabled.
+**./parent.tex
+(./parent.tex
+LaTeX2e <2017-04-15>
+Babel <3.10> and hyphenation patterns for 84 language(s) loaded.
+(/TexLive/texmf-dist/tex/latex/base/article.cls
+Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
+(/TexLive/texmf-dist/tex/latex/base/size10.clo
+File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option)
+)
+\c@part=\count79
+\c@section=\count80
+\c@subsection=\count81
+\c@subsubsection=\count82
+\c@paragraph=\count83
+\c@subparagraph=\count84
+\c@figure=\count85
+\c@table=\count86
+\abovecaptionskip=\skip41
+\belowcaptionskip=\skip42
+\bibindent=\dimen102
+)
+(/TexLive/texmf-dist/tex/generic/babel/babel.sty
+Package: babel 2017/05/19 3.10 The Babel package
+
+! Package babel Error: Unknown option `foo'. Either you misspelled it
+(babel) or the language definition file foo.ldf was not found.
+
+See the babel package documentation for explanation.
+Type H <return> for immediate help.
+...
+
+l.393 \ProcessOptions*
+
+Valid options are: shorthands=, KeepShorthandsActive,
+activeacute, activegrave, noconfigs, safe=, main=, math=
+headfoot=, strings=, config=, hyphenmap=, or a language name.
+
+! Package babel Error: You haven't specified a language option.
+
+See the babel package documentation for explanation.
+Type H <return> for immediate help.
+...
+
+l.426 ...ry to proceed from here, type x to quit.}
+
+You need to specify a language, either as a global option
+or as an optional argument to the \usepackage command;
+You shouldn't try to proceed from here, type x to quit.
+
+) (./parent.aux)
+\openout1 = `parent.aux'.
+
+LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 5.
+LaTeX Font Info: ... okay on input line 5.
+LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 5.
+LaTeX Font Info: ... okay on input line 5.
+LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 5.
+LaTeX Font Info: ... okay on input line 5.
+LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 5.
+LaTeX Font Info: ... okay on input line 5.
+LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 5.
+LaTeX Font Info: ... okay on input line 5.
+LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 5.
+LaTeX Font Info: ... okay on input line 5.
+(./parent.aux) )
+Here is how much of TeX's memory you used:
+304 strings out of 492995
+3421 string characters out of 6138727
+56035 words of memory out of 5000000
+3938 multiletter control sequences out of 15000+600000
+3640 words of font info for 14 fonts, out of 8000000 for 9000
+1141 hyphenation exceptions out of 8191
+23i,1n,17p,116b,36s stack positions out of 5000i,500n,10000p,200000b,80000s
+
+No pages of output.
+PDF statistics:
+0 PDF objects out of 1000 (max. 8388607)
+0 named destinations out of 1000 (max. 500000)
+1 words of extra memory for PDF output out of 10000 (max. 10000000)"#,
+ expect![[r#"
+ BuildLog {
+ errors: [
+ BuildError {
+ relative_path: "/TexLive/texmf-dist/tex/generic/babel/babel.sty",
+ level: Error,
+ message: "Package babel Error: Unknown option `foo'. Either you misspelled it or the language definition file foo.ldf was not found.",
+ hint: Some(
+ "\\ProcessOptions*",
+ ),
+ line: Some(
+ 392,
+ ),
+ },
+ BuildError {
+ relative_path: "/TexLive/texmf-dist/tex/generic/babel/babel.sty",
+ level: Error,
+ message: "Package babel Error: You haven't specified a language option.",
+ hint: Some(
+ "ry to proceed from here, type x to quit.}",
+ ),
+ line: Some(
+ 425,
+ ),
+ },
+ ],
+ }
+ "#]],
+ )
+}
+
+#[test]
+fn test_005() {
+ check(
+ r#"This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/W32TeX) (preloaded format=pdflatex 2018.3.30) 26 DEC 2018 16:45
+entering extended mode
+restricted \write18 enabled.
+%&-line parsing enabled.
+**./parent.tex
+(./parent.tex
+LaTeX2e <2017-04-15>
+Babel <3.10> and hyphenation patterns for 84 language(s) loaded.
+(/TexLive/texmf-dist/tex/latex/base/article.cls
+Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
+(/TexLive/texmf-dist/tex/latex/base/size10.clo
+File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option)
+)
+\c@part=\count79
+\c@section=\count80
+\c@subsection=\count81
+\c@subsubsection=\count82
+\c@paragraph=\count83
+\c@subparagraph=\count84
+\c@figure=\count85
+\c@table=\count86
+\abovecaptionskip=\skip41
+\belowcaptionskip=\skip42
+\bibindent=\dimen102
+)
+(/TexLive/texmf-dist/tex/generic/babel/babel.sty
+Package: babel 2017/05/19 3.10 The Babel package
+
+(/TexLive/texmf-dist/tex/generic/babel-spanish/spanish.ldf
+Language: spanish.ldf 2016/03/03 v5.0p Spanish support from the babel system
+
+(/TexLive/texmf-dist/tex/generic/babel/babel.def
+File: babel.def 2017/05/19 3.10 Babel common definitions
+\babel@savecnt=\count87
+\U@D=\dimen103
+)
+\es@quottoks=\toks14
+\es@quotdepth=\count88
+Package babel Info: Making " an active character on input line 561.
+Package babel Info: Making . an active character on input line 662.
+Package babel Info: Making < an active character on input line 707.
+Package babel Info: Making > an active character on input line 707.
+))
+(/TexLive/texmf-dist/tex/latex/biblatex/biblatex.sty
+Package: biblatex 2016/12/05 v3.7 programmable bibliographies (PK/JW/AB)
+
+(/TexLive/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty
+Package: pdftexcmds 2017/03/19 v0.25 Utility functions of pdfTeX for LuaTeX (HO
+)
+
+(/TexLive/texmf-dist/tex/generic/oberdiek/infwarerr.sty
+Package: infwarerr 2016/05/16 v1.4 Providing info/warning/error messages (HO)
+)
+(/TexLive/texmf-dist/tex/generic/oberdiek/ifluatex.sty
+Package: ifluatex 2016/05/16 v1.4 Provides the ifluatex switch (HO)
+Package ifluatex Info: LuaTeX not detected.
+)
+(/TexLive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty
+Package: ltxcmds 2016/05/16 v1.23 LaTeX kernel commands for general use (HO)
+)
+(/TexLive/texmf-dist/tex/generic/oberdiek/ifpdf.sty
+Package: ifpdf 2017/03/15 v3.2 Provides the ifpdf switch
+)
+Package pdftexcmds Info: LuaTeX not detected.
+Package pdftexcmds Info: \pdf@primitive is available.
+Package pdftexcmds Info: \pdf@ifprimitive is available.
+Package pdftexcmds Info: \pdfdraftmode found.
+)
+(/TexLive/texmf-dist/tex/latex/etoolbox/etoolbox.sty
+Package: etoolbox 2017/01/02 v2.4 e-TeX tools for LaTeX (JAW)
+\etb@tempcnta=\count89
+)
+(/TexLive/texmf-dist/tex/latex/graphics/keyval.sty
+Package: keyval 2014/10/28 v1.15 key=value parser (DPC)
+\KV@toks@=\toks15
+)
+(/TexLive/texmf-dist/tex/latex/oberdiek/kvoptions.sty
+Package: kvoptions 2016/05/16 v3.12 Key value format for package options (HO)
+
+(/TexLive/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty
+Package: kvsetkeys 2016/05/16 v1.17 Key value parser (HO)
+
+(/TexLive/texmf-dist/tex/generic/oberdiek/etexcmds.sty
+Package: etexcmds 2016/05/16 v1.6 Avoid name clashes with e-TeX commands (HO)
+Package etexcmds Info: Could not find \expanded.
+(etexcmds) That can mean that you are not using pdfTeX 1.50 or
+(etexcmds) that some package has redefined \expanded.
+(etexcmds) In the latter case, load this package earlier.
+)))
+(/TexLive/texmf-dist/tex/latex/logreq/logreq.sty
+Package: logreq 2010/08/04 v1.0 xml request logger
+\lrq@indent=\count90
+
+(/TexLive/texmf-dist/tex/latex/logreq/logreq.def
+File: logreq.def 2010/08/04 v1.0 logreq spec v1.0
+))
+(/TexLive/texmf-dist/tex/latex/base/ifthen.sty
+Package: ifthen 2014/09/29 v1.1c Standard LaTeX ifthen package (DPC)
+)
+(/TexLive/texmf-dist/tex/latex/url/url.sty
+\Urlmuskip=\muskip10
+Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc.
+)
+(/TexLive/texmf-dist/tex/generic/xstring/xstring.sty
+(/TexLive/texmf-dist/tex/generic/xstring/xstring.tex
+\@xs@message=\write3
+\integerpart=\count91
+\decimalpart=\count92
+)
+Package: xstring 2013/10/13 v1.7c String manipulations (C Tellechea)
+)
+\c@tabx@nest=\count93
+\c@listtotal=\count94
+\c@listcount=\count95
+\c@liststart=\count96
+\c@liststop=\count97
+\c@citecount=\count98
+\c@citetotal=\count99
+\c@multicitecount=\count100
+\c@multicitetotal=\count101
+\c@instcount=\count102
+\c@maxnames=\count103
+\c@minnames=\count104
+\c@maxitems=\count105
+\c@minitems=\count106
+\c@citecounter=\count107
+\c@savedcitecounter=\count108
+\c@uniquelist=\count109
+\c@uniquename=\count110
+\c@refsection=\count111
+\c@refsegment=\count112
+\c@maxextratitle=\count113
+\c@maxextratitleyear=\count114
+\c@maxextrayear=\count115
+\c@maxextraalpha=\count116
+\c@abbrvpenalty=\count117
+\c@highnamepenalty=\count118
+\c@lownamepenalty=\count119
+\c@maxparens=\count120
+\c@parenlevel=\count121
+\blx@tempcnta=\count122
+\blx@tempcntb=\count123
+\blx@tempcntc=\count124
+\blx@maxsection=\count125
+\blx@maxsegment@0=\count126
+\blx@notetype=\count127
+\blx@parenlevel@text=\count128
+\blx@parenlevel@foot=\count129
+\blx@sectionciteorder@0=\count130
+\labelnumberwidth=\skip43
+\labelalphawidth=\skip44
+\biblabelsep=\skip45
+\bibitemsep=\skip46
+\bibnamesep=\skip47
+\bibinitsep=\skip48
+\bibparsep=\skip49
+\bibhang=\skip50
+\blx@bcfin=\read1
+\blx@bcfout=\write4
+\c@mincomprange=\count131
+\c@maxcomprange=\count132
+\c@mincompwidth=\count133
+Package biblatex Info: Trying to load biblatex default data model...
+Package biblatex Info: ... file 'blx-dm.def' found.
+
+(/TexLive/texmf-dist/tex/latex/biblatex/blx-dm.def)
+Package biblatex Info: Trying to load biblatex style data model...
+Package biblatex Info: ... file 'ieee.dbx' not found.
+Package biblatex Info: Trying to load biblatex custom data model...
+Package biblatex Info: ... file 'biblatex-dm.cfg' not found.
+\c@afterword=\count134
+\c@savedafterword=\count135
+\c@annotator=\count136
+\c@savedannotator=\count137
+\c@author=\count138
+\c@savedauthor=\count139
+\c@bookauthor=\count140
+\c@savedbookauthor=\count141
+\c@commentator=\count142
+\c@savedcommentator=\count143
+\c@editor=\count144
+\c@savededitor=\count145
+\c@editora=\count146
+\c@savededitora=\count147
+\c@editorb=\count148
+\c@savededitorb=\count149
+\c@editorc=\count150
+\c@savededitorc=\count151
+\c@foreword=\count152
+\c@savedforeword=\count153
+\c@holder=\count154
+\c@savedholder=\count155
+\c@introduction=\count156
+\c@savedintroduction=\count157
+\c@namea=\count158
+\c@savednamea=\count159
+\c@nameb=\count160
+\c@savednameb=\count161
+\c@namec=\count162
+\c@savednamec=\count163
+\c@translator=\count164
+\c@savedtranslator=\count165
+\c@shortauthor=\count166
+\c@savedshortauthor=\count167
+\c@shorteditor=\count168
+\c@savedshorteditor=\count169
+\c@labelname=\count170
+\c@savedlabelname=\count171
+\c@institution=\count172
+\c@savedinstitution=\count173
+\c@lista=\count174
+\c@savedlista=\count175
+\c@listb=\count176
+\c@savedlistb=\count177
+\c@listc=\count178
+\c@savedlistc=\count179
+\c@listd=\count180
+\c@savedlistd=\count181
+\c@liste=\count182
+\c@savedliste=\count183
+\c@listf=\count184
+\c@savedlistf=\count185
+\c@location=\count186
+\c@savedlocation=\count187
+\c@organization=\count188
+\c@savedorganization=\count189
+\c@origlocation=\count190
+\c@savedoriglocation=\count191
+\c@origpublisher=\count192
+\c@savedorigpublisher=\count193
+\c@publisher=\count194
+\c@savedpublisher=\count195
+\c@language=\count196
+\c@savedlanguage=\count197
+\c@pageref=\count198
+\c@savedpageref=\count199
+\shorthandwidth=\skip51
+\shortjournalwidth=\skip52
+\shortserieswidth=\skip53
+\shorttitlewidth=\skip54
+\shortauthorwidth=\skip55
+\shorteditorwidth=\skip56
+Package biblatex Info: Trying to load compatibility code...
+Package biblatex Info: ... file 'blx-compat.def' found.
+
+(/TexLive/texmf-dist/tex/latex/biblatex/blx-compat.def
+File: blx-compat.def 2016/12/05 v3.7 biblatex compatibility (PK/JW/AB)
+)
+Package biblatex Info: Trying to load generic definitions...
+Package biblatex Info: ... file 'biblatex.def' found.
+
+(/TexLive/texmf-dist/tex/latex/biblatex/biblatex.def
+File: biblatex.def 2016/12/05 v3.7 biblatex compatibility (PK/JW/AB)
+\c@textcitecount=\count266
+\c@textcitetotal=\count267
+\c@textcitemaxnames=\count268
+\c@biburlnumpenalty=\count269
+\c@biburlucpenalty=\count270
+\c@biburllcpenalty=\count271
+\c@smartand=\count272
+)
+Package biblatex Info: Trying to load bibliography style 'ieee'...
+Package biblatex Info: ... file 'ieee.bbx' found.
+
+(/TexLive/texmf-dist/tex/latex/biblatex-ieee/ieee.bbx
+File: ieee.bbx 2017/03/27 v1.2d biblatex bibliography style
+Package biblatex Info: Trying to load bibliography style 'numeric-comp'...
+Package biblatex Info: ... file 'numeric-comp.bbx' found.
+
+(/TexLive/texmf-dist/tex/latex/biblatex/bbx/numeric-comp.bbx
+File: numeric-comp.bbx 2016/12/05 v3.7 biblatex bibliography style (PK/JW/AB)
+Package biblatex Info: Trying to load bibliography style 'numeric'...
+Package biblatex Info: ... file 'numeric.bbx' found.
+
+(/TexLive/texmf-dist/tex/latex/biblatex/bbx/numeric.bbx
+File: numeric.bbx 2016/12/05 v3.7 biblatex bibliography style (PK/JW/AB)
+Package biblatex Info: Trying to load bibliography style 'standard'...
+Package biblatex Info: ... file 'standard.bbx' found.
+
+(/TexLive/texmf-dist/tex/latex/biblatex/bbx/standard.bbx
+File: standard.bbx 2016/12/05 v3.7 biblatex bibliography style (PK/JW/AB)
+\c@bbx:relatedcount=\count273
+\c@bbx:relatedtotal=\count274
+))))
+Package biblatex Info: Trying to load citation style 'ieee'...
+Package biblatex Info: ... file 'ieee.cbx' found.
+
+(/TexLive/texmf-dist/tex/latex/biblatex-ieee/ieee.cbx
+File: ieee.cbx 2017/03/27 v1.2d biblatex citation style
+Package biblatex Info: Trying to load citation style 'numeric-comp'...
+Package biblatex Info: ... file 'numeric-comp.cbx' found.
+
+(/TexLive/texmf-dist/tex/latex/biblatex/cbx/numeric-comp.cbx
+File: numeric-comp.cbx 2016/12/05 v3.7 biblatex citation style (PK/JW/AB)
+\c@cbx@tempcnta=\count275
+\c@cbx@tempcntb=\count276
+Package biblatex Info: Redefining '\cite'.
+Package biblatex Info: Redefining '\parencite'.
+Package biblatex Info: Redefining '\footcite'.
+Package biblatex Info: Redefining '\footcitetext'.
+Package biblatex Info: Redefining '\smartcite'.
+Package biblatex Info: Redefining '\supercite'.
+Package biblatex Info: Redefining '\textcite'.
+Package biblatex Info: Redefining '\textcites'.
+Package biblatex Info: Redefining '\cites'.
+Package biblatex Info: Redefining '\parencites'.
+Package biblatex Info: Redefining '\smartcites'.
+)
+Package biblatex Info: Redefining '\cite'.
+Package biblatex Info: Redefining '\cites'.
+)
+Package biblatex Info: Trying to load configuration file...
+Package biblatex Info: ... file 'biblatex.cfg' found.
+
+(/TexLive/texmf-dist/tex/latex/biblatex/biblatex.cfg
+File: biblatex.cfg
+))
+Package biblatex Info: Trying to load language 'spanish'...
+Package biblatex Info: ... file 'spanish.lbx' found.
+
+(/TexLive/texmf-dist/tex/latex/biblatex/lbx/spanish.lbx
+File: spanish.lbx 2016/12/05 v3.7 biblatex localization (PK/JW/AB)
+)
+
+Package biblatex Warning: 'babel/polyglossia' detected but 'csquotes' missing.
+(biblatex) Loading 'csquotes' recommended.
+
+\@quotelevel=\count277
+\@quotereset=\count278
+(./parent.aux)
+\openout1 = `parent.aux'.
+
+LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 6.
+LaTeX Font Info: ... okay on input line 6.
+LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 6.
+LaTeX Font Info: ... okay on input line 6.
+LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 6.
+LaTeX Font Info: ... okay on input line 6.
+LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 6.
+LaTeX Font Info: ... okay on input line 6.
+LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 6.
+LaTeX Font Info: ... okay on input line 6.
+LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 6.
+LaTeX Font Info: ... okay on input line 6.
+LaTeX Info: Redefining \sptext on input line 6.
+LaTeX Info: Redefining \. on input line 6.
+LaTeX Info: Redefining \% on input line 6.
+Package biblatex Info: No input encoding detected.
+(biblatex) Assuming 'ascii'.
+Package biblatex Info: Automatic encoding selection.
+(biblatex) Assuming data encoding 'ascii'.
+\openout4 = `parent.bcf'.
+
+Package biblatex Info: Trying to load bibliographic data...
+Package biblatex Info: ... file 'parent.bbl' not found.
+
+No file parent.bbl.
+Package biblatex Info: Reference section=0 on input line 6.
+Package biblatex Info: Reference segment=0 on input line 6.
+(./parent.aux)
+
+LaTeX Warning: There were undefined references.
+
+Package biblatex Warning: Please (re)run Biber on the file:
+(biblatex) parent
+(biblatex) and rerun LaTeX afterwards.
+
+Package logreq Info: Writing requests to 'parent.run.xml'.
+\openout1 = `parent.run.xml'.
+
+)
+Here is how much of TeX's memory you used:
+7717 strings out of 492995
+133301 string characters out of 6138727
+557258 words of memory out of 5000000
+11248 multiletter control sequences out of 15000+600000
+3640 words of font info for 14 fonts, out of 8000000 for 9000
+1141 hyphenation exceptions out of 8191
+35i,1n,30p,856b,700s stack positions out of 5000i,500n,10000p,200000b,80000s
+
+No pages of output.
+PDF statistics:
+0 PDF objects out of 1000 (max. 8388607)
+0 named destinations out of 1000 (max. 500000)
+1 words of extra memory for PDF output out of 10000 (max. 10000000)"#,
+ expect![[r#"
+ BuildLog {
+ errors: [
+ BuildError {
+ relative_path: "./parent.tex",
+ level: Warning,
+ message: "Package biblatex Warning: 'babel/polyglossia' detected but 'csquotes' missing. Loading 'csquotes' recommended.",
+ hint: None,
+ line: None,
+ },
+ BuildError {
+ relative_path: "./parent.tex",
+ level: Warning,
+ message: "LaTeX Warning: There were undefined references.",
+ hint: None,
+ line: None,
+ },
+ BuildError {
+ relative_path: "./parent.tex",
+ level: Warning,
+ message: "Package biblatex Warning: Please (re)run Biber on the file: parent and rerun LaTeX afterwards.",
+ hint: None,
+ line: None,
+ },
+ ],
+ }
+ "#]],
+ )
+}
+
+#[test]
+fn test_006() {
+ check(
+ r#"This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/W32TeX) (preloaded format=pdflatex 2018.3.30) 26 DEC 2018 16:33
+entering extended mode
+restricted \write18 enabled.
+%&-line parsing enabled.
+**./parent.tex
+(./parent.tex
+LaTeX2e <2017-04-15>
+Babel <3.10> and hyphenation patterns for 84 language(s) loaded.
+(/TexLive/texmf-dist/tex/latex/base/article.cls
+Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
+(/TexLive/texmf-dist/tex/latex/base/size10.clo
+File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option)
+)
+\c@part=\count79
+\c@section=\count80
+\c@subsection=\count81
+\c@subsubsection=\count82
+\c@paragraph=\count83
+\c@subparagraph=\count84
+\c@figure=\count85
+\c@table=\count86
+\abovecaptionskip=\skip41
+\belowcaptionskip=\skip42
+\bibindent=\dimen102
+) (./parent.aux
+(./child.tex.aux))
+\openout1 = `parent.aux'.
+
+LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 3.
+LaTeX Font Info: ... okay on input line 3.
+LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 3.
+LaTeX Font Info: ... okay on input line 3.
+LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 3.
+LaTeX Font Info: ... okay on input line 3.
+LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 3.
+LaTeX Font Info: ... okay on input line 3.
+LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 3.
+LaTeX Font Info: ... okay on input line 3.
+LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 3.
+LaTeX Font Info: ... okay on input line 3.
+\openout2 = `child.aux'.
+
+(./child.tex)
+! Undefined control sequence.
+l.7 \foo
+
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Missing $ inserted.
+<inserted text>
+ $
+l.8 \bar
+
+I've inserted a begin-math/end-math symbol since I think
+you left one out. Proceed, with fingers crossed.
+
+LaTeX Font Info: External font `cmex10' loaded for size
+(Font) <7> on input line 8.
+LaTeX Font Info: External font `cmex10' loaded for size
+(Font) <5> on input line 8.
+! Undefined control sequence.
+l.9 \baz
+
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+! Missing { inserted.
+<to be read again>
+ \par
+l.10
+
+A left brace was mandatory here, so I've put one in.
+You might want to delete and/or insert some corrections
+so that I will find a matching right brace soon.
+(If you're confused by all this, try typing `I}' now.)
+
+! Missing $ inserted.
+<inserted text>
+ $
+l.10
+
+I've inserted a begin-math/end-math symbol since I think
+you left one out. Proceed, with fingers crossed.
+
+! Missing } inserted.
+<inserted text>
+ }
+l.10
+
+I've inserted something that you may have forgotten.
+(See the <inserted text> above.)
+With luck, this will get me unwedged. But if you
+really didn't forget anything, try typing `2' now; then
+my insertion and my current dilemma will both disappear.
+
+[1
+
+{/TexLive/texmf-var/fonts/map/pdftex/updmap/pdftex.map}] (./parent.aux
+(./child.aux)) )
+Here is how much of TeX's memory you used:
+212 strings out of 492995
+2238 string characters out of 6138727
+54074 words of memory out of 5000000
+3843 multiletter control sequences out of 15000+600000
+3640 words of font info for 14 fonts, out of 8000000 for 9000
+1141 hyphenation exceptions out of 8191
+23i,4n,17p,116b,107s stack positions out of 5000i,500n,10000p,200000b,80000s
+</TexLive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb
+>
+Output written on parent.pdf (1 page, 8329 bytes).
+PDF statistics:
+12 PDF objects out of 1000 (max. 8388607)
+7 compressed objects within 1 object stream
+0 named destinations out of 1000 (max. 500000)
+1 words of extra memory for PDF output out of 10000 (max. 10000000)"#,
+ expect![[r#"
+ BuildLog {
+ errors: [
+ BuildError {
+ relative_path: "./parent.tex",
+ level: Error,
+ message: "Undefined control sequence.",
+ hint: Some(
+ "\\foo",
+ ),
+ line: Some(
+ 6,
+ ),
+ },
+ BuildError {
+ relative_path: "./parent.tex",
+ level: Error,
+ message: "Missing $ inserted.",
+ hint: Some(
+ "\\bar",
+ ),
+ line: Some(
+ 7,
+ ),
+ },
+ BuildError {
+ relative_path: "./parent.tex",
+ level: Error,
+ message: "Undefined control sequence.",
+ hint: Some(
+ "\\baz",
+ ),
+ line: Some(
+ 8,
+ ),
+ },
+ BuildError {
+ relative_path: "./parent.tex",
+ level: Error,
+ message: "Missing { inserted.",
+ hint: None,
+ line: Some(
+ 9,
+ ),
+ },
+ BuildError {
+ relative_path: "./parent.tex",
+ level: Error,
+ message: "Missing $ inserted.",
+ hint: None,
+ line: Some(
+ 9,
+ ),
+ },
+ BuildError {
+ relative_path: "./parent.tex",
+ level: Error,
+ message: "Missing } inserted.",
+ hint: None,
+ line: Some(
+ 9,
+ ),
+ },
+ ],
+ }
+ "#]],
+ );
+}
+
+#[test]
+fn test_007() {
+ check(
+ r#"This is pdfTeX, Version 3.141592653-2.6-1.40.22 (TeX Live 2021/W32TeX) (preloaded format=pdflatex 2021.6.19) 5 NOV 2021 19:10
+entering extended mode
+restricted \write18 enabled.
+%&-line parsing enabled.
+**/some/folder/a.tex
+(/some/folder/a.tex
+LaTeX2e <2021-06-01> patch level 1
+L3 programming layer <2021-06-18>
+(/texlive/2021/texmf-dist/tex/latex/koma-script/scrartcl.cls
+Document Class: scrartcl 2021/03/17 v3.33 KOMA-Script document class (article)
+(/texlive/2021/texmf-dist/tex/latex/koma-script/scrkbase.sty
+Package: scrkbase 2021/03/17 v3.33 KOMA-Script package (KOMA-Script-dependent b
+asics and keyval usage)
+
+(/texlive/2021/texmf-dist/tex/latex/koma-script/scrbase.sty
+Package: scrbase 2021/03/17 v3.33 KOMA-Script package (KOMA-Script-independent
+basics and keyval usage)
+
+(/texlive/2021/texmf-dist/tex/latex/koma-script/scrlfile.sty
+Package: scrlfile 2021/03/17 v3.33 KOMA-Script package (file load hooks)
+
+(/texlive/2021/texmf-dist/tex/latex/koma-script/scrlfile-hook.sty
+Package: scrlfile-hook 2021/03/17 v3.33 KOMA-Script package (using LaTeX hooks)
+
+
+(/texlive/2021/texmf-dist/tex/latex/koma-script/scrlogo.sty
+Package: scrlogo 2021/03/17 v3.33 KOMA-Script package (logo)
+)))
+(/texlive/2021/texmf-dist/tex/latex/graphics/keyval.sty
+Package: keyval 2014/10/28 v1.15 key=value parser (DPC)
+\KV@toks@=\toks16
+)
+Applying: [2021/05/01] Usage of raw option list on input line 252.
+Already applied: [0000/00/00] compatibility for LaTeX before 2021/05/01 on inpu
+t line 337.
+))
+==> First Aid for scrkbase.sty no longer applied!
+(/texlive/2021/texmf-dist/tex/latex/koma-script/tocbasic.sty
+Package: tocbasic 2021/03/17 v3.33 KOMA-Script package (handling toc-files)
+\scr@dte@tocline@numberwidth=\skip47
+\scr@dte@tocline@numbox=\box50
+)
+Package tocbasic Info: babel extension for `toc' omitted
+(tocbasic) because of missing \bbl@set@language on input line 135.
+Class scrartcl Info: File `scrsize11pt.clo' used instead of
+(scrartcl) file `scrsize11.clo' to setup font sizes on input line 223
+9.
+
+(/texlive/2021/texmf-dist/tex/latex/koma-script/scrsize11pt.clo
+File: scrsize11pt.clo 2021/03/17 v3.33 KOMA-Script font size class option (11pt
+)
+)
+(/texlive/2021/texmf-dist/tex/latex/koma-script/typearea.sty
+Package: typearea 2021/03/17 v3.33 KOMA-Script package (type area)
+\ta@bcor=\skip48
+\ta@div=\count182
+\ta@hblk=\skip49
+\ta@vblk=\skip50
+\ta@temp=\skip51
+\footheight=\skip52
+Package typearea Info: These are the values describing the layout:
+(typearea) DIV = 10
+(typearea) BCOR = 0.0pt
+(typearea) \paperwidth = 597.50793pt
+(typearea) \textwidth = 418.25555pt
+(typearea) DIV departure = -6%
+(typearea) \evensidemargin = 17.3562pt
+(typearea) \oddsidemargin = 17.3562pt
+(typearea) \paperheight = 845.04694pt
+(typearea) \textheight = 595.80026pt
+(typearea) \topmargin = -25.16531pt
+(typearea) \headheight = 17.0pt
+(typearea) \headsep = 20.40001pt
+(typearea) \topskip = 11.0pt
+(typearea) \footskip = 47.6pt
+(typearea) \baselineskip = 13.6pt
+(typearea) on input line 1741.
+)
+\c@part=\count183
+\c@section=\count184
+\c@subsection=\count185
+\c@subsubsection=\count186
+\c@paragraph=\count187
+\c@subparagraph=\count188
+\scr@dte@section@maxnumwidth=\skip53
+Class scrartcl Info: using compatibility default `runin=bysign'
+(scrartcl) for `\section on input line 4846.
+Class scrartcl Info: using compatibility default `afterindent=bysign'
+(scrartcl) for `\section on input line 4846.
+\scr@dte@part@maxnumwidth=\skip54
+Class scrartcl Info: using compatibility default `afterindent=false'
+(scrartcl) for `\part on input line 4854.
+\scr@dte@subsection@maxnumwidth=\skip55
+Class scrartcl Info: using compatibility default `runin=bysign'
+(scrartcl) for `\subsection on input line 4864.
+Class scrartcl Info: using compatibility default `afterindent=bysign'
+(scrartcl) for `\subsection on input line 4864.
+\scr@dte@subsubsection@maxnumwidth=\skip56
+Class scrartcl Info: using compatibility default `runin=bysign'
+(scrartcl) for `\subsubsection on input line 4874.
+Class scrartcl Info: using compatibility default `afterindent=bysign'
+(scrartcl) for `\subsubsection on input line 4874.
+\scr@dte@paragraph@maxnumwidth=\skip57
+Class scrartcl Info: using compatibility default `runin=bysign'
+(scrartcl) for `\paragraph on input line 4885.
+Class scrartcl Info: using compatibility default `afterindent=bysign'
+(scrartcl) for `\paragraph on input line 4885.
+\scr@dte@subparagraph@maxnumwidth=\skip58
+Class scrartcl Info: using compatibility default `runin=bysign'
+(scrartcl) for `\subparagraph on input line 4895.
+Class scrartcl Info: using compatibility default `afterindent=bysign'
+(scrartcl) for `\subparagraph on input line 4895.
+\abovecaptionskip=\skip59
+\belowcaptionskip=\skip60
+\c@pti@nb@sid@b@x=\box51
+Package tocbasic Info: babel extension for `lof' omitted
+(tocbasic) because of missing \bbl@set@language on input line 6127.
+
+\scr@dte@figure@maxnumwidth=\skip61
+\c@figure=\count189
+Package tocbasic Info: babel extension for `lot' omitted
+(tocbasic) because of missing \bbl@set@language on input line 6139.
+
+\scr@dte@table@maxnumwidth=\skip62
+\c@table=\count190
+Class scrartcl Info: Redefining `\numberline' on input line 6303.
+\bibindent=\dimen138
+)
+(/texlive/2021/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
+File: l3backend-pdftex.def 2021-05-07 L3 backend support: PDF output (pdfTeX)
+\l__color_backend_stack_int=\count191
+\l__pdf_internal_box=\box52
+) (./a.aux)
+\openout1 = `a.aux'.
+
+LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 3.
+LaTeX Font Info: ... okay on input line 3.
+LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 3.
+LaTeX Font Info: ... okay on input line 3.
+LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 3.
+LaTeX Font Info: ... okay on input line 3.
+LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 3.
+LaTeX Font Info: ... okay on input line 3.
+LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 3.
+LaTeX Font Info: ... okay on input line 3.
+LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 3.
+LaTeX Font Info: ... okay on input line 3.
+LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 3.
+LaTeX Font Info: ... okay on input line 3.
+Package scrbase Info: activating english \contentsname on input line 3.
+Package scrbase Info: activating english \listfigurename on input line 3.
+Package scrbase Info: activating english \listtablename on input line 3.
+! Undefined control sequence.
+l.4 \lsdkfjlskdfj
+
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+
+(./a.aux) )
+Here is how much of TeX's memory you used:
+3199 strings out of 478510
+74549 string characters out of 5853586
+510929 words of memory out of 5000000
+21227 multiletter control sequences out of 15000+600000
+403730 words of font info for 28 fonts, out of 8000000 for 9000
+1141 hyphenation exceptions out of 8191
+108i,1n,108p,10625b,270s stack positions out of 5000i,500n,10000p,200000b,80000s
+
+No pages of output.
+PDF statistics:
+0 PDF objects out of 1000 (max. 8388607)
+0 named destinations out of 1000 (max. 500000)
+1 words of extra memory for PDF output out of 10000 (max. 10000000)"#,
+ expect![[r#"
+ BuildLog {
+ errors: [
+ BuildError {
+ relative_path: "/some/folder/a.tex",
+ level: Error,
+ message: "Undefined control sequence.",
+ hint: Some(
+ "\\lsdkfjlskdfj",
+ ),
+ line: Some(
+ 3,
+ ),
+ },
+ ],
+ }
+ "#]],
+ );
+}
diff --git a/support/texlab/crates/parser/src/latex.rs b/support/texlab/crates/parser/src/latex.rs
index f96d41a722..d88eb39556 100644
--- a/support/texlab/crates/parser/src/latex.rs
+++ b/support/texlab/crates/parser/src/latex.rs
@@ -1201,19 +1201,4 @@ pub fn parse_latex(text: &str, config: &SyntaxConfig) -> GreenNode {
}
#[cfg(test)]
-mod tests {
- use syntax::latex;
-
- use crate::SyntaxConfig;
-
- use super::parse_latex;
-
- #[test]
- fn test_parse() {
- insta::glob!("test_data/latex/{,**/}*.txt", |path| {
- let text = std::fs::read_to_string(path).unwrap().replace("\r\n", "\n");
- let root = latex::SyntaxNode::new_root(parse_latex(&text, &SyntaxConfig::default()));
- insta::assert_debug_snapshot!(root);
- });
- }
-}
+mod tests;
diff --git a/support/texlab/crates/parser/src/latex/tests.rs b/support/texlab/crates/parser/src/latex/tests.rs
new file mode 100644
index 0000000000..a907efc6c3
--- /dev/null
+++ b/support/texlab/crates/parser/src/latex/tests.rs
@@ -0,0 +1,3523 @@
+use expect_test::{expect, Expect};
+
+use crate::{parse_latex, SyntaxConfig};
+
+fn check(input: &str, expect: Expect) {
+ let root = syntax::latex::SyntaxNode::new_root(parse_latex(input, &SyntaxConfig::default()));
+ expect.assert_debug_eq(&root);
+}
+
+#[test]
+fn test_block_comments() {
+ check(
+ r#"Foo
+\iffalse
+Test1
+\fi
+Bar
+\iffalse
+\fii
+\fi
+Baz"#,
+ expect![[r#"
+ ROOT@0..48
+ PREAMBLE@0..48
+ TEXT@0..4
+ WORD@0..3 "Foo"
+ LINE_BREAK@3..4 "\n"
+ BLOCK_COMMENT@4..22
+ COMMAND_NAME@4..12 "\\iffalse"
+ LINE_BREAK@12..13 "\n"
+ WORD@13..18 "Test1"
+ LINE_BREAK@18..19 "\n"
+ COMMAND_NAME@19..22 "\\fi"
+ LINE_BREAK@22..23 "\n"
+ TEXT@23..27
+ WORD@23..26 "Bar"
+ LINE_BREAK@26..27 "\n"
+ BLOCK_COMMENT@27..44
+ COMMAND_NAME@27..35 "\\iffalse"
+ LINE_BREAK@35..36 "\n"
+ COMMAND_NAME@36..40 "\\fii"
+ LINE_BREAK@40..41 "\n"
+ COMMAND_NAME@41..44 "\\fi"
+ LINE_BREAK@44..45 "\n"
+ TEXT@45..48
+ WORD@45..48 "Baz"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_caption_default() {
+ check(
+ r#"\caption[qux]{Foo \Bar Baz}"#,
+ expect![[r#"
+ ROOT@0..27
+ PREAMBLE@0..27
+ CAPTION@0..27
+ COMMAND_NAME@0..8 "\\caption"
+ BRACK_GROUP@8..13
+ L_BRACK@8..9 "["
+ TEXT@9..12
+ WORD@9..12 "qux"
+ R_BRACK@12..13 "]"
+ CURLY_GROUP@13..27
+ L_CURLY@13..14 "{"
+ TEXT@14..18
+ WORD@14..17 "Foo"
+ WHITESPACE@17..18 " "
+ GENERIC_COMMAND@18..23
+ COMMAND_NAME@18..22 "\\Bar"
+ WHITESPACE@22..23 " "
+ TEXT@23..26
+ WORD@23..26 "Baz"
+ R_CURLY@26..27 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_caption_default_error() {
+ check(
+ r#"\caption[qux]{Foo \Bar Baz"#,
+ expect![[r#"
+ ROOT@0..26
+ PREAMBLE@0..26
+ CAPTION@0..26
+ COMMAND_NAME@0..8 "\\caption"
+ BRACK_GROUP@8..13
+ L_BRACK@8..9 "["
+ TEXT@9..12
+ WORD@9..12 "qux"
+ R_BRACK@12..13 "]"
+ CURLY_GROUP@13..26
+ L_CURLY@13..14 "{"
+ TEXT@14..18
+ WORD@14..17 "Foo"
+ WHITESPACE@17..18 " "
+ GENERIC_COMMAND@18..23
+ COMMAND_NAME@18..22 "\\Bar"
+ WHITESPACE@22..23 " "
+ TEXT@23..26
+ WORD@23..26 "Baz"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_caption_figure() {
+ check(
+ r#"\begin{figure}\caption{Foo}\end{figure}"#,
+ expect![[r#"
+ ROOT@0..39
+ PREAMBLE@0..39
+ ENVIRONMENT@0..39
+ BEGIN@0..14
+ COMMAND_NAME@0..6 "\\begin"
+ CURLY_GROUP_WORD@6..14
+ L_CURLY@6..7 "{"
+ KEY@7..13
+ WORD@7..13 "figure"
+ R_CURLY@13..14 "}"
+ CAPTION@14..27
+ COMMAND_NAME@14..22 "\\caption"
+ CURLY_GROUP@22..27
+ L_CURLY@22..23 "{"
+ TEXT@23..26
+ WORD@23..26 "Foo"
+ R_CURLY@26..27 "}"
+ END@27..39
+ COMMAND_NAME@27..31 "\\end"
+ CURLY_GROUP_WORD@31..39
+ L_CURLY@31..32 "{"
+ KEY@32..38
+ WORD@32..38 "figure"
+ R_CURLY@38..39 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_caption_minimal() {
+ check(
+ r#"\caption{Foo \Bar Baz}"#,
+ expect![[r#"
+ ROOT@0..22
+ PREAMBLE@0..22
+ CAPTION@0..22
+ COMMAND_NAME@0..8 "\\caption"
+ CURLY_GROUP@8..22
+ L_CURLY@8..9 "{"
+ TEXT@9..13
+ WORD@9..12 "Foo"
+ WHITESPACE@12..13 " "
+ GENERIC_COMMAND@13..18
+ COMMAND_NAME@13..17 "\\Bar"
+ WHITESPACE@17..18 " "
+ TEXT@18..21
+ WORD@18..21 "Baz"
+ R_CURLY@21..22 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_caption_minimal_error() {
+ check(
+ r#"\caption{Foo \Bar Baz"#,
+ expect![[r#"
+ ROOT@0..21
+ PREAMBLE@0..21
+ CAPTION@0..21
+ COMMAND_NAME@0..8 "\\caption"
+ CURLY_GROUP@8..21
+ L_CURLY@8..9 "{"
+ TEXT@9..13
+ WORD@9..12 "Foo"
+ WHITESPACE@12..13 " "
+ GENERIC_COMMAND@13..18
+ COMMAND_NAME@13..17 "\\Bar"
+ WHITESPACE@17..18 " "
+ TEXT@18..21
+ WORD@18..21 "Baz"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_citation_empty() {
+ check(
+ r#"\cite{}"#,
+ expect![[r#"
+ ROOT@0..7
+ PREAMBLE@0..7
+ CITATION@0..7
+ COMMAND_NAME@0..5 "\\cite"
+ CURLY_GROUP_WORD_LIST@5..7
+ L_CURLY@5..6 "{"
+ R_CURLY@6..7 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_citation_missing_brace() {
+ check(
+ r#"\cite{foo"#,
+ expect![[r#"
+ ROOT@0..9
+ PREAMBLE@0..9
+ CITATION@0..9
+ COMMAND_NAME@0..5 "\\cite"
+ CURLY_GROUP_WORD_LIST@5..9
+ L_CURLY@5..6 "{"
+ KEY@6..9
+ WORD@6..9 "foo"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_citation_multiple_keys() {
+ check(
+ r#"\cite{foo, bar}"#,
+ expect![[r#"
+ ROOT@0..15
+ PREAMBLE@0..15
+ CITATION@0..15
+ COMMAND_NAME@0..5 "\\cite"
+ CURLY_GROUP_WORD_LIST@5..15
+ L_CURLY@5..6 "{"
+ KEY@6..9
+ WORD@6..9 "foo"
+ COMMA@9..10 ","
+ WHITESPACE@10..11 " "
+ KEY@11..14
+ WORD@11..14 "bar"
+ R_CURLY@14..15 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_citation_prenote() {
+ check(
+ r#"\cite[foo]{bar}"#,
+ expect![[r#"
+ ROOT@0..15
+ PREAMBLE@0..15
+ CITATION@0..15
+ COMMAND_NAME@0..5 "\\cite"
+ BRACK_GROUP@5..10
+ L_BRACK@5..6 "["
+ TEXT@6..9
+ WORD@6..9 "foo"
+ R_BRACK@9..10 "]"
+ CURLY_GROUP_WORD_LIST@10..15
+ L_CURLY@10..11 "{"
+ KEY@11..14
+ WORD@11..14 "bar"
+ R_CURLY@14..15 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_citation_prenote_postnote() {
+ check(
+ r#"\cite[foo][bar]{baz}"#,
+ expect![[r#"
+ ROOT@0..20
+ PREAMBLE@0..20
+ CITATION@0..20
+ COMMAND_NAME@0..5 "\\cite"
+ BRACK_GROUP@5..10
+ L_BRACK@5..6 "["
+ TEXT@6..9
+ WORD@6..9 "foo"
+ R_BRACK@9..10 "]"
+ BRACK_GROUP@10..15
+ L_BRACK@10..11 "["
+ TEXT@11..14
+ WORD@11..14 "bar"
+ R_BRACK@14..15 "]"
+ CURLY_GROUP_WORD_LIST@15..20
+ L_CURLY@15..16 "{"
+ KEY@16..19
+ WORD@16..19 "baz"
+ R_CURLY@19..20 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_citation_redundant_comma() {
+ check(
+ r#"\cite{,foo,}"#,
+ expect![[r#"
+ ROOT@0..12
+ PREAMBLE@0..12
+ CITATION@0..12
+ COMMAND_NAME@0..5 "\\cite"
+ CURLY_GROUP_WORD_LIST@5..12
+ L_CURLY@5..6 "{"
+ COMMA@6..7 ","
+ KEY@7..10
+ WORD@7..10 "foo"
+ COMMA@10..11 ","
+ R_CURLY@11..12 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_citation_simple() {
+ check(
+ r#"\cite{foo}"#,
+ expect![[r#"
+ ROOT@0..10
+ PREAMBLE@0..10
+ CITATION@0..10
+ COMMAND_NAME@0..5 "\\cite"
+ CURLY_GROUP_WORD_LIST@5..10
+ L_CURLY@5..6 "{"
+ KEY@6..9
+ WORD@6..9 "foo"
+ R_CURLY@9..10 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_citation_star() {
+ check(
+ r#"\nocite{*}"#,
+ expect![[r#"
+ ROOT@0..10
+ PREAMBLE@0..10
+ CITATION@0..10
+ COMMAND_NAME@0..7 "\\nocite"
+ CURLY_GROUP_WORD_LIST@7..10
+ L_CURLY@7..8 "{"
+ KEY@8..9
+ WORD@8..9 "*"
+ R_CURLY@9..10 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_color_definition_simple() {
+ check(
+ r#"\definecolor{foo}{rgb}{255,168,0}"#,
+ expect![[r#"
+ ROOT@0..33
+ PREAMBLE@0..33
+ COLOR_DEFINITION@0..33
+ COMMAND_NAME@0..12 "\\definecolor"
+ CURLY_GROUP_WORD@12..17
+ L_CURLY@12..13 "{"
+ KEY@13..16
+ WORD@13..16 "foo"
+ R_CURLY@16..17 "}"
+ CURLY_GROUP_WORD@17..22
+ L_CURLY@17..18 "{"
+ KEY@18..21
+ WORD@18..21 "rgb"
+ R_CURLY@21..22 "}"
+ CURLY_GROUP@22..33
+ L_CURLY@22..23 "{"
+ TEXT@23..32
+ WORD@23..26 "255"
+ COMMA@26..27 ","
+ WORD@27..30 "168"
+ COMMA@30..31 ","
+ WORD@31..32 "0"
+ R_CURLY@32..33 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_color_reference_simple() {
+ check(
+ r#"\color{black}"#,
+ expect![[r#"
+ ROOT@0..13
+ PREAMBLE@0..13
+ COLOR_REFERENCE@0..13
+ COMMAND_NAME@0..6 "\\color"
+ CURLY_GROUP_WORD@6..13
+ L_CURLY@6..7 "{"
+ KEY@7..12
+ WORD@7..12 "black"
+ R_CURLY@12..13 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_color_set_definition_error1() {
+ check(
+ r#"\definecolorset[ty]{rgb,HTML}{foo}{bar}"#,
+ expect![[r#"
+ ROOT@0..39
+ PREAMBLE@0..39
+ COLOR_SET_DEFINITION@0..39
+ COMMAND_NAME@0..15 "\\definecolorset"
+ BRACK_GROUP_WORD@15..19
+ L_BRACK@15..16 "["
+ KEY@16..18
+ WORD@16..18 "ty"
+ R_BRACK@18..19 "]"
+ CURLY_GROUP_WORD_LIST@19..29
+ L_CURLY@19..20 "{"
+ KEY@20..23
+ WORD@20..23 "rgb"
+ COMMA@23..24 ","
+ KEY@24..28
+ WORD@24..28 "HTML"
+ R_CURLY@28..29 "}"
+ CURLY_GROUP_WORD@29..34
+ L_CURLY@29..30 "{"
+ KEY@30..33
+ WORD@30..33 "foo"
+ R_CURLY@33..34 "}"
+ CURLY_GROUP_WORD@34..39
+ L_CURLY@34..35 "{"
+ KEY@35..38
+ WORD@35..38 "bar"
+ R_CURLY@38..39 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_color_set_definition_error2() {
+ check(
+ r#"\definecolorset{rgb,HTML}{foo}"#,
+ expect![[r#"
+ ROOT@0..30
+ PREAMBLE@0..30
+ COLOR_SET_DEFINITION@0..30
+ COMMAND_NAME@0..15 "\\definecolorset"
+ CURLY_GROUP_WORD_LIST@15..25
+ L_CURLY@15..16 "{"
+ KEY@16..19
+ WORD@16..19 "rgb"
+ COMMA@19..20 ","
+ KEY@20..24
+ WORD@20..24 "HTML"
+ R_CURLY@24..25 "}"
+ CURLY_GROUP_WORD@25..30
+ L_CURLY@25..26 "{"
+ KEY@26..29
+ WORD@26..29 "foo"
+ R_CURLY@29..30 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_color_set_definition_error3() {
+ check(
+ r#"\definecolorset{rgb,HTML}"#,
+ expect![[r#"
+ ROOT@0..25
+ PREAMBLE@0..25
+ COLOR_SET_DEFINITION@0..25
+ COMMAND_NAME@0..15 "\\definecolorset"
+ CURLY_GROUP_WORD_LIST@15..25
+ L_CURLY@15..16 "{"
+ KEY@16..19
+ WORD@16..19 "rgb"
+ COMMA@19..20 ","
+ KEY@20..24
+ WORD@20..24 "HTML"
+ R_CURLY@24..25 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_color_set_definition_error4() {
+ check(
+ r#"\definecolorset"#,
+ expect![[r#"
+ ROOT@0..15
+ PREAMBLE@0..15
+ COLOR_SET_DEFINITION@0..15
+ COMMAND_NAME@0..15 "\\definecolorset"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_color_set_definition_simple() {
+ check(
+ r#"\definecolorset[ty]{rgb,HTML}{foo}{bar}{baz}"#,
+ expect![[r#"
+ ROOT@0..44
+ PREAMBLE@0..44
+ COLOR_SET_DEFINITION@0..44
+ COMMAND_NAME@0..15 "\\definecolorset"
+ BRACK_GROUP_WORD@15..19
+ L_BRACK@15..16 "["
+ KEY@16..18
+ WORD@16..18 "ty"
+ R_BRACK@18..19 "]"
+ CURLY_GROUP_WORD_LIST@19..29
+ L_CURLY@19..20 "{"
+ KEY@20..23
+ WORD@20..23 "rgb"
+ COMMA@23..24 ","
+ KEY@24..28
+ WORD@24..28 "HTML"
+ R_CURLY@28..29 "}"
+ CURLY_GROUP_WORD@29..34
+ L_CURLY@29..30 "{"
+ KEY@30..33
+ WORD@30..33 "foo"
+ R_CURLY@33..34 "}"
+ CURLY_GROUP_WORD@34..39
+ L_CURLY@34..35 "{"
+ KEY@35..38
+ WORD@35..38 "bar"
+ R_CURLY@38..39 "}"
+ CURLY_GROUP_WORD@39..44
+ L_CURLY@39..40 "{"
+ KEY@40..43
+ WORD@40..43 "baz"
+ R_CURLY@43..44 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_command_definition_no_argc() {
+ check(
+ r#"\newcommand{\foo}{foo}"#,
+ expect![[r#"
+ ROOT@0..22
+ PREAMBLE@0..22
+ COMMAND_DEFINITION@0..22
+ COMMAND_NAME@0..11 "\\newcommand"
+ CURLY_GROUP_COMMAND@11..17
+ L_CURLY@11..12 "{"
+ COMMAND_NAME@12..16 "\\foo"
+ R_CURLY@16..17 "}"
+ CURLY_GROUP@17..22
+ L_CURLY@17..18 "{"
+ TEXT@18..21
+ WORD@18..21 "foo"
+ R_CURLY@21..22 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_command_definition_no_impl() {
+ check(
+ r#"\newcommand{\foo}"#,
+ expect![[r#"
+ ROOT@0..17
+ PREAMBLE@0..17
+ COMMAND_DEFINITION@0..17
+ COMMAND_NAME@0..11 "\\newcommand"
+ CURLY_GROUP_COMMAND@11..17
+ L_CURLY@11..12 "{"
+ COMMAND_NAME@12..16 "\\foo"
+ R_CURLY@16..17 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_command_definition_no_impl_error() {
+ check(
+ r#"\newcommand{\foo"#,
+ expect![[r#"
+ ROOT@0..16
+ PREAMBLE@0..16
+ COMMAND_DEFINITION@0..16
+ COMMAND_NAME@0..11 "\\newcommand"
+ CURLY_GROUP_COMMAND@11..16
+ L_CURLY@11..12 "{"
+ COMMAND_NAME@12..16 "\\foo"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_command_definition_optional() {
+ check(
+ r#"\newcommand{\foo}[1][def]{#1}"#,
+ expect![[r##"
+ ROOT@0..29
+ PREAMBLE@0..29
+ COMMAND_DEFINITION@0..29
+ COMMAND_NAME@0..11 "\\newcommand"
+ CURLY_GROUP_COMMAND@11..17
+ L_CURLY@11..12 "{"
+ COMMAND_NAME@12..16 "\\foo"
+ R_CURLY@16..17 "}"
+ BRACK_GROUP_WORD@17..20
+ L_BRACK@17..18 "["
+ KEY@18..19
+ WORD@18..19 "1"
+ R_BRACK@19..20 "]"
+ BRACK_GROUP@20..25
+ L_BRACK@20..21 "["
+ TEXT@21..24
+ WORD@21..24 "def"
+ R_BRACK@24..25 "]"
+ CURLY_GROUP@25..29
+ L_CURLY@25..26 "{"
+ TEXT@26..28
+ WORD@26..28 "#1"
+ R_CURLY@28..29 "}"
+
+ "##]],
+ );
+}
+
+#[test]
+fn test_command_definition_simple() {
+ check(
+ r#"\newcommand[1]{\id}{#1}"#,
+ expect![[r##"
+ ROOT@0..23
+ PREAMBLE@0..23
+ COMMAND_DEFINITION@0..19
+ COMMAND_NAME@0..11 "\\newcommand"
+ BRACK_GROUP_WORD@11..14
+ L_BRACK@11..12 "["
+ KEY@12..13
+ WORD@12..13 "1"
+ R_BRACK@13..14 "]"
+ CURLY_GROUP@14..19
+ L_CURLY@14..15 "{"
+ GENERIC_COMMAND@15..18
+ COMMAND_NAME@15..18 "\\id"
+ R_CURLY@18..19 "}"
+ CURLY_GROUP@19..23
+ L_CURLY@19..20 "{"
+ TEXT@20..22
+ WORD@20..22 "#1"
+ R_CURLY@22..23 "}"
+
+ "##]],
+ );
+}
+
+#[test]
+fn test_command_definition_with_begin() {
+ check(
+ r#"\newcommand{\CVSubHeadingListStart}{\begin{itemize}[leftmargin=0.5cm, label={}]}"#,
+ expect![[r#"
+ ROOT@0..80
+ PREAMBLE@0..80
+ COMMAND_DEFINITION@0..80
+ COMMAND_NAME@0..11 "\\newcommand"
+ CURLY_GROUP_COMMAND@11..35
+ L_CURLY@11..12 "{"
+ COMMAND_NAME@12..34 "\\CVSubHeadingListStart"
+ R_CURLY@34..35 "}"
+ CURLY_GROUP@35..80
+ L_CURLY@35..36 "{"
+ BEGIN@36..79
+ COMMAND_NAME@36..42 "\\begin"
+ CURLY_GROUP_WORD@42..51
+ L_CURLY@42..43 "{"
+ KEY@43..50
+ WORD@43..50 "itemize"
+ R_CURLY@50..51 "}"
+ BRACK_GROUP@51..79
+ L_BRACK@51..52 "["
+ TEXT@52..62
+ WORD@52..62 "leftmargin"
+ EQUALITY_SIGN@62..63 "="
+ TEXT@63..75
+ WORD@63..68 "0.5cm"
+ COMMA@68..69 ","
+ WHITESPACE@69..70 " "
+ WORD@70..75 "label"
+ EQUALITY_SIGN@75..76 "="
+ CURLY_GROUP@76..78
+ L_CURLY@76..77 "{"
+ R_CURLY@77..78 "}"
+ R_BRACK@78..79 "]"
+ R_CURLY@79..80 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_math_operator_no_impl() {
+ check(
+ r#"\DeclareMathOperator{\foo}"#,
+ expect![[r#"
+ ROOT@0..26
+ PREAMBLE@0..26
+ MATH_OPERATOR@0..26
+ COMMAND_NAME@0..20 "\\DeclareMathOperator"
+ CURLY_GROUP_COMMAND@20..26
+ L_CURLY@20..21 "{"
+ COMMAND_NAME@21..25 "\\foo"
+ R_CURLY@25..26 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_math_operator_simple() {
+ check(
+ r#"\DeclareMathOperator{\foo}{foo}"#,
+ expect![[r#"
+ ROOT@0..31
+ PREAMBLE@0..31
+ MATH_OPERATOR@0..31
+ COMMAND_NAME@0..20 "\\DeclareMathOperator"
+ CURLY_GROUP_COMMAND@20..26
+ L_CURLY@20..21 "{"
+ COMMAND_NAME@21..25 "\\foo"
+ R_CURLY@25..26 "}"
+ CURLY_GROUP@26..31
+ L_CURLY@26..27 "{"
+ TEXT@27..30
+ WORD@27..30 "foo"
+ R_CURLY@30..31 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_environment_asymptote() {
+ check(
+ r#"\begin{asy}
+ printf("Hello World\n");
+\end{asy}"#,
+ expect![[r#"
+ ROOT@0..50
+ PREAMBLE@0..50
+ ENVIRONMENT@0..50
+ BEGIN@0..16
+ COMMAND_NAME@0..6 "\\begin"
+ CURLY_GROUP_WORD@6..16
+ L_CURLY@6..7 "{"
+ KEY@7..10
+ WORD@7..10 "asy"
+ R_CURLY@10..11 "}"
+ LINE_BREAK@11..12 "\n"
+ WHITESPACE@12..16 " "
+ TEXT@16..22
+ WORD@16..22 "printf"
+ MIXED_GROUP@22..39
+ L_PAREN@22..23 "("
+ TEXT@23..35
+ WORD@23..29 "\"Hello"
+ WHITESPACE@29..30 " "
+ WORD@30..35 "World"
+ GENERIC_COMMAND@35..37
+ COMMAND_NAME@35..37 "\\n"
+ TEXT@37..38
+ WORD@37..38 "\""
+ R_PAREN@38..39 ")"
+ TEXT@39..41
+ WORD@39..40 ";"
+ LINE_BREAK@40..41 "\n"
+ END@41..50
+ COMMAND_NAME@41..45 "\\end"
+ CURLY_GROUP_WORD@45..50
+ L_CURLY@45..46 "{"
+ KEY@46..49
+ WORD@46..49 "asy"
+ R_CURLY@49..50 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_environment_definition() {
+ check(
+ r#"\newenvironment{bar}[1]{\begin{foo}}{\end{foo}}"#,
+ expect![[r#"
+ ROOT@0..47
+ PREAMBLE@0..47
+ ENVIRONMENT_DEFINITION@0..47
+ COMMAND_NAME@0..15 "\\newenvironment"
+ CURLY_GROUP_WORD@15..20
+ L_CURLY@15..16 "{"
+ KEY@16..19
+ WORD@16..19 "bar"
+ R_CURLY@19..20 "}"
+ BRACK_GROUP_WORD@20..23
+ L_BRACK@20..21 "["
+ KEY@21..22
+ WORD@21..22 "1"
+ R_BRACK@22..23 "]"
+ CURLY_GROUP@23..36
+ L_CURLY@23..24 "{"
+ GENERIC_COMMAND@24..35
+ COMMAND_NAME@24..30 "\\begin"
+ CURLY_GROUP@30..35
+ L_CURLY@30..31 "{"
+ TEXT@31..34
+ WORD@31..34 "foo"
+ R_CURLY@34..35 "}"
+ R_CURLY@35..36 "}"
+ CURLY_GROUP@36..47
+ L_CURLY@36..37 "{"
+ GENERIC_COMMAND@37..46
+ COMMAND_NAME@37..41 "\\end"
+ CURLY_GROUP@41..46
+ L_CURLY@41..42 "{"
+ TEXT@42..45
+ WORD@42..45 "foo"
+ R_CURLY@45..46 "}"
+ R_CURLY@46..47 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_environment_definition_optional_arg() {
+ check(
+ r#"\newenvironment{foo}[1][default]{begin}{end}"#,
+ expect![[r#"
+ ROOT@0..44
+ PREAMBLE@0..44
+ ENVIRONMENT_DEFINITION@0..44
+ COMMAND_NAME@0..15 "\\newenvironment"
+ CURLY_GROUP_WORD@15..20
+ L_CURLY@15..16 "{"
+ KEY@16..19
+ WORD@16..19 "foo"
+ R_CURLY@19..20 "}"
+ BRACK_GROUP_WORD@20..23
+ L_BRACK@20..21 "["
+ KEY@21..22
+ WORD@21..22 "1"
+ R_BRACK@22..23 "]"
+ BRACK_GROUP@23..32
+ L_BRACK@23..24 "["
+ TEXT@24..31
+ WORD@24..31 "default"
+ R_BRACK@31..32 "]"
+ CURLY_GROUP@32..39
+ L_CURLY@32..33 "{"
+ TEXT@33..38
+ WORD@33..38 "begin"
+ R_CURLY@38..39 "}"
+ CURLY_GROUP@39..44
+ L_CURLY@39..40 "{"
+ TEXT@40..43
+ WORD@40..43 "end"
+ R_CURLY@43..44 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_environment_nested() {
+ check(
+ r#"\begin{foo} \begin{qux} \end{baz} \end{bar}"#,
+ expect![[r#"
+ ROOT@0..43
+ PREAMBLE@0..43
+ ENVIRONMENT@0..43
+ BEGIN@0..12
+ COMMAND_NAME@0..6 "\\begin"
+ CURLY_GROUP_WORD@6..12
+ L_CURLY@6..7 "{"
+ KEY@7..10
+ WORD@7..10 "foo"
+ R_CURLY@10..11 "}"
+ WHITESPACE@11..12 " "
+ ENVIRONMENT@12..34
+ BEGIN@12..24
+ COMMAND_NAME@12..18 "\\begin"
+ CURLY_GROUP_WORD@18..24
+ L_CURLY@18..19 "{"
+ KEY@19..22
+ WORD@19..22 "qux"
+ R_CURLY@22..23 "}"
+ WHITESPACE@23..24 " "
+ END@24..34
+ COMMAND_NAME@24..28 "\\end"
+ CURLY_GROUP_WORD@28..34
+ L_CURLY@28..29 "{"
+ KEY@29..32
+ WORD@29..32 "baz"
+ R_CURLY@32..33 "}"
+ WHITESPACE@33..34 " "
+ END@34..43
+ COMMAND_NAME@34..38 "\\end"
+ CURLY_GROUP_WORD@38..43
+ L_CURLY@38..39 "{"
+ KEY@39..42
+ WORD@39..42 "bar"
+ R_CURLY@42..43 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_environment_nested_missing_braces() {
+ check(
+ r#"\begin{foo \begin{qux Hello World \end{baz} \end{bar"#,
+ expect![[r#"
+ ROOT@0..52
+ PREAMBLE@0..52
+ ENVIRONMENT@0..52
+ BEGIN@0..11
+ COMMAND_NAME@0..6 "\\begin"
+ CURLY_GROUP_WORD@6..11
+ L_CURLY@6..7 "{"
+ KEY@7..11
+ WORD@7..10 "foo"
+ WHITESPACE@10..11 " "
+ ENVIRONMENT@11..44
+ BEGIN@11..34
+ COMMAND_NAME@11..17 "\\begin"
+ CURLY_GROUP_WORD@17..34
+ L_CURLY@17..18 "{"
+ KEY@18..34
+ WORD@18..21 "qux"
+ WHITESPACE@21..22 " "
+ WORD@22..27 "Hello"
+ WHITESPACE@27..28 " "
+ WORD@28..33 "World"
+ WHITESPACE@33..34 " "
+ END@34..44
+ COMMAND_NAME@34..38 "\\end"
+ CURLY_GROUP_WORD@38..44
+ L_CURLY@38..39 "{"
+ KEY@39..42
+ WORD@39..42 "baz"
+ R_CURLY@42..43 "}"
+ WHITESPACE@43..44 " "
+ END@44..52
+ COMMAND_NAME@44..48 "\\end"
+ CURLY_GROUP_WORD@48..52
+ L_CURLY@48..49 "{"
+ KEY@49..52
+ WORD@49..52 "bar"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_environment_simple() {
+ check(
+ r#"\begin{foo} Hello World \end{bar}"#,
+ expect![[r#"
+ ROOT@0..33
+ PREAMBLE@0..33
+ ENVIRONMENT@0..33
+ BEGIN@0..12
+ COMMAND_NAME@0..6 "\\begin"
+ CURLY_GROUP_WORD@6..12
+ L_CURLY@6..7 "{"
+ KEY@7..10
+ WORD@7..10 "foo"
+ R_CURLY@10..11 "}"
+ WHITESPACE@11..12 " "
+ TEXT@12..24
+ WORD@12..17 "Hello"
+ WHITESPACE@17..18 " "
+ WORD@18..23 "World"
+ WHITESPACE@23..24 " "
+ END@24..33
+ COMMAND_NAME@24..28 "\\end"
+ CURLY_GROUP_WORD@28..33
+ L_CURLY@28..29 "{"
+ KEY@29..32
+ WORD@29..32 "bar"
+ R_CURLY@32..33 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_equation() {
+ check(
+ r#"\[ foo bar \]"#,
+ expect![[r#"
+ ROOT@0..13
+ PREAMBLE@0..13
+ EQUATION@0..13
+ COMMAND_NAME@0..2 "\\["
+ WHITESPACE@2..3 " "
+ TEXT@3..11
+ WORD@3..6 "foo"
+ WHITESPACE@6..7 " "
+ WORD@7..10 "bar"
+ WHITESPACE@10..11 " "
+ COMMAND_NAME@11..13 "\\]"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_equation_missing_begin() {
+ check(
+ r#"\begin{a} foo bar \] \end{b}"#,
+ expect![[r#"
+ ROOT@0..28
+ PREAMBLE@0..28
+ ENVIRONMENT@0..28
+ BEGIN@0..10
+ COMMAND_NAME@0..6 "\\begin"
+ CURLY_GROUP_WORD@6..10
+ L_CURLY@6..7 "{"
+ KEY@7..8
+ WORD@7..8 "a"
+ R_CURLY@8..9 "}"
+ WHITESPACE@9..10 " "
+ TEXT@10..18
+ WORD@10..13 "foo"
+ WHITESPACE@13..14 " "
+ WORD@14..17 "bar"
+ WHITESPACE@17..18 " "
+ GENERIC_COMMAND@18..21
+ COMMAND_NAME@18..20 "\\]"
+ WHITESPACE@20..21 " "
+ END@21..28
+ COMMAND_NAME@21..25 "\\end"
+ CURLY_GROUP_WORD@25..28
+ L_CURLY@25..26 "{"
+ KEY@26..27
+ WORD@26..27 "b"
+ R_CURLY@27..28 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_generic_command_args() {
+ check(
+ r#"\foo{bar}[qux]"#,
+ expect![[r#"
+ ROOT@0..14
+ PREAMBLE@0..14
+ GENERIC_COMMAND@0..14
+ COMMAND_NAME@0..4 "\\foo"
+ CURLY_GROUP@4..9
+ L_CURLY@4..5 "{"
+ TEXT@5..8
+ WORD@5..8 "bar"
+ R_CURLY@8..9 "}"
+ MIXED_GROUP@9..14
+ L_BRACK@9..10 "["
+ TEXT@10..13
+ WORD@10..13 "qux"
+ R_BRACK@13..14 "]"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_generic_command_empty() {
+ check(
+ r#"\foo"#,
+ expect![[r#"
+ ROOT@0..4
+ PREAMBLE@0..4
+ GENERIC_COMMAND@0..4
+ COMMAND_NAME@0..4 "\\foo"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_generic_command_escape() {
+ check(
+ r#"\#"#,
+ expect![[r#"
+ ROOT@0..2
+ PREAMBLE@0..2
+ GENERIC_COMMAND@0..2
+ COMMAND_NAME@0..2 "\\#"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_acronym_declaration() {
+ check(
+ r#"\DeclareAcronym{eg}{short = e.g,long = for example,tag = abbrev}"#,
+ expect![[r#"
+ ROOT@0..64
+ PREAMBLE@0..64
+ ACRONYM_DECLARATION@0..64
+ COMMAND_NAME@0..15 "\\DeclareAcronym"
+ CURLY_GROUP_WORD@15..19
+ L_CURLY@15..16 "{"
+ KEY@16..18
+ WORD@16..18 "eg"
+ R_CURLY@18..19 "}"
+ CURLY_GROUP_KEY_VALUE@19..64
+ L_CURLY@19..20 "{"
+ KEY_VALUE_BODY@20..63
+ KEY_VALUE_PAIR@20..31
+ KEY@20..26
+ WORD@20..25 "short"
+ WHITESPACE@25..26 " "
+ EQUALITY_SIGN@26..27 "="
+ WHITESPACE@27..28 " "
+ VALUE@28..31
+ TEXT@28..31
+ WORD@28..31 "e.g"
+ COMMA@31..32 ","
+ KEY_VALUE_PAIR@32..50
+ KEY@32..37
+ WORD@32..36 "long"
+ WHITESPACE@36..37 " "
+ EQUALITY_SIGN@37..38 "="
+ WHITESPACE@38..39 " "
+ VALUE@39..50
+ TEXT@39..50
+ WORD@39..42 "for"
+ WHITESPACE@42..43 " "
+ WORD@43..50 "example"
+ COMMA@50..51 ","
+ KEY_VALUE_PAIR@51..63
+ KEY@51..55
+ WORD@51..54 "tag"
+ WHITESPACE@54..55 " "
+ EQUALITY_SIGN@55..56 "="
+ WHITESPACE@56..57 " "
+ VALUE@57..63
+ TEXT@57..63
+ WORD@57..63 "abbrev"
+ R_CURLY@63..64 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_acronym_definition_options() {
+ check(
+ r#"\newacronym[longplural={Frames per Second}]{fpsLabel}{FPS}{Frame per Second}"#,
+ expect![[r#"
+ ROOT@0..76
+ PREAMBLE@0..76
+ ACRONYM_DEFINITION@0..76
+ COMMAND_NAME@0..11 "\\newacronym"
+ BRACK_GROUP_KEY_VALUE@11..43
+ L_BRACK@11..12 "["
+ KEY_VALUE_BODY@12..42
+ KEY_VALUE_PAIR@12..42
+ KEY@12..22
+ WORD@12..22 "longplural"
+ EQUALITY_SIGN@22..23 "="
+ VALUE@23..42
+ CURLY_GROUP@23..42
+ L_CURLY@23..24 "{"
+ TEXT@24..41
+ WORD@24..30 "Frames"
+ WHITESPACE@30..31 " "
+ WORD@31..34 "per"
+ WHITESPACE@34..35 " "
+ WORD@35..41 "Second"
+ R_CURLY@41..42 "}"
+ R_BRACK@42..43 "]"
+ CURLY_GROUP_WORD@43..53
+ L_CURLY@43..44 "{"
+ KEY@44..52
+ WORD@44..52 "fpsLabel"
+ R_CURLY@52..53 "}"
+ CURLY_GROUP@53..58
+ L_CURLY@53..54 "{"
+ TEXT@54..57
+ WORD@54..57 "FPS"
+ R_CURLY@57..58 "}"
+ CURLY_GROUP@58..76
+ L_CURLY@58..59 "{"
+ TEXT@59..75
+ WORD@59..64 "Frame"
+ WHITESPACE@64..65 " "
+ WORD@65..68 "per"
+ WHITESPACE@68..69 " "
+ WORD@69..75 "Second"
+ R_CURLY@75..76 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_acronym_definition_simple() {
+ check(
+ r#"\newacronym{fpsLabel}{FPS}{Frame per Second}"#,
+ expect![[r#"
+ ROOT@0..44
+ PREAMBLE@0..44
+ ACRONYM_DEFINITION@0..44
+ COMMAND_NAME@0..11 "\\newacronym"
+ CURLY_GROUP_WORD@11..21
+ L_CURLY@11..12 "{"
+ KEY@12..20
+ WORD@12..20 "fpsLabel"
+ R_CURLY@20..21 "}"
+ CURLY_GROUP@21..26
+ L_CURLY@21..22 "{"
+ TEXT@22..25
+ WORD@22..25 "FPS"
+ R_CURLY@25..26 "}"
+ CURLY_GROUP@26..44
+ L_CURLY@26..27 "{"
+ TEXT@27..43
+ WORD@27..32 "Frame"
+ WHITESPACE@32..33 " "
+ WORD@33..36 "per"
+ WHITESPACE@36..37 " "
+ WORD@37..43 "Second"
+ R_CURLY@43..44 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_acronym_package() {
+ check(
+ r#"\acro{fps}[FPS]{Frames per Second}
+"#,
+ expect![[r#"
+ ROOT@0..35
+ PREAMBLE@0..35
+ ACRONYM_DEFINITION@0..35
+ COMMAND_NAME@0..5 "\\acro"
+ CURLY_GROUP_WORD@5..10
+ L_CURLY@5..6 "{"
+ KEY@6..9
+ WORD@6..9 "fps"
+ R_CURLY@9..10 "}"
+ BRACK_GROUP@10..15
+ L_BRACK@10..11 "["
+ TEXT@11..14
+ WORD@11..14 "FPS"
+ R_BRACK@14..15 "]"
+ CURLY_GROUP@15..35
+ L_CURLY@15..16 "{"
+ TEXT@16..33
+ WORD@16..22 "Frames"
+ WHITESPACE@22..23 " "
+ WORD@23..26 "per"
+ WHITESPACE@26..27 " "
+ WORD@27..33 "Second"
+ R_CURLY@33..34 "}"
+ LINE_BREAK@34..35 "\n"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_acronym_reference_options() {
+ check(
+ r#"\acrshort[foo=bar,baz]{fpsLabel}"#,
+ expect![[r#"
+ ROOT@0..32
+ PREAMBLE@0..32
+ ACRONYM_REFERENCE@0..32
+ COMMAND_NAME@0..9 "\\acrshort"
+ BRACK_GROUP_KEY_VALUE@9..22
+ L_BRACK@9..10 "["
+ KEY_VALUE_BODY@10..21
+ KEY_VALUE_PAIR@10..17
+ KEY@10..13
+ WORD@10..13 "foo"
+ EQUALITY_SIGN@13..14 "="
+ VALUE@14..17
+ TEXT@14..17
+ WORD@14..17 "bar"
+ COMMA@17..18 ","
+ KEY_VALUE_PAIR@18..21
+ KEY@18..21
+ WORD@18..21 "baz"
+ R_BRACK@21..22 "]"
+ CURLY_GROUP_WORD@22..32
+ L_CURLY@22..23 "{"
+ KEY@23..31
+ WORD@23..31 "fpsLabel"
+ R_CURLY@31..32 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_acronym_reference_simple() {
+ check(
+ r#"\acrshort{fpsLabel}"#,
+ expect![[r#"
+ ROOT@0..19
+ PREAMBLE@0..19
+ ACRONYM_REFERENCE@0..19
+ COMMAND_NAME@0..9 "\\acrshort"
+ CURLY_GROUP_WORD@9..19
+ L_CURLY@9..10 "{"
+ KEY@10..18
+ WORD@10..18 "fpsLabel"
+ R_CURLY@18..19 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_glossary_entry_definition_simple() {
+ check(
+ r#"\newglossaryentry{foo}{bar = baz, qux,}"#,
+ expect![[r#"
+ ROOT@0..39
+ PREAMBLE@0..39
+ GLOSSARY_ENTRY_DEFINITION@0..39
+ COMMAND_NAME@0..17 "\\newglossaryentry"
+ CURLY_GROUP_WORD@17..22
+ L_CURLY@17..18 "{"
+ KEY@18..21
+ WORD@18..21 "foo"
+ R_CURLY@21..22 "}"
+ CURLY_GROUP_KEY_VALUE@22..39
+ L_CURLY@22..23 "{"
+ KEY_VALUE_BODY@23..38
+ KEY_VALUE_PAIR@23..32
+ KEY@23..27
+ WORD@23..26 "bar"
+ WHITESPACE@26..27 " "
+ EQUALITY_SIGN@27..28 "="
+ WHITESPACE@28..29 " "
+ VALUE@29..32
+ TEXT@29..32
+ WORD@29..32 "baz"
+ COMMA@32..33 ","
+ WHITESPACE@33..34 " "
+ KEY_VALUE_PAIR@34..37
+ KEY@34..37
+ WORD@34..37 "qux"
+ COMMA@37..38 ","
+ R_CURLY@38..39 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_glossary_entry_reference_options() {
+ check(
+ r#"\gls[foo = bar, qux]{baz}"#,
+ expect![[r#"
+ ROOT@0..25
+ PREAMBLE@0..25
+ GLOSSARY_ENTRY_REFERENCE@0..25
+ COMMAND_NAME@0..4 "\\gls"
+ BRACK_GROUP_KEY_VALUE@4..20
+ L_BRACK@4..5 "["
+ KEY_VALUE_BODY@5..19
+ KEY_VALUE_PAIR@5..14
+ KEY@5..9
+ WORD@5..8 "foo"
+ WHITESPACE@8..9 " "
+ EQUALITY_SIGN@9..10 "="
+ WHITESPACE@10..11 " "
+ VALUE@11..14
+ TEXT@11..14
+ WORD@11..14 "bar"
+ COMMA@14..15 ","
+ WHITESPACE@15..16 " "
+ KEY_VALUE_PAIR@16..19
+ KEY@16..19
+ WORD@16..19 "qux"
+ R_BRACK@19..20 "]"
+ CURLY_GROUP_WORD@20..25
+ L_CURLY@20..21 "{"
+ KEY@21..24
+ WORD@21..24 "baz"
+ R_CURLY@24..25 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_glossary_entry_reference_simple() {
+ check(
+ r#"\gls{foo}"#,
+ expect![[r#"
+ ROOT@0..9
+ PREAMBLE@0..9
+ GLOSSARY_ENTRY_REFERENCE@0..9
+ COMMAND_NAME@0..4 "\\gls"
+ CURLY_GROUP_WORD@4..9
+ L_CURLY@4..5 "{"
+ KEY@5..8
+ WORD@5..8 "foo"
+ R_CURLY@8..9 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_graphics_path() {
+ check(
+ r#"\graphicspath{{../figures/}}"#,
+ expect![[r#"
+ ROOT@0..28
+ PREAMBLE@0..28
+ GRAPHICS_PATH@0..28
+ COMMAND_NAME@0..13 "\\graphicspath"
+ CURLY_GROUP@13..28
+ L_CURLY@13..14 "{"
+ CURLY_GROUP_WORD@14..27
+ L_CURLY@14..15 "{"
+ KEY@15..26
+ WORD@15..26 "../figures/"
+ R_CURLY@26..27 "}"
+ R_CURLY@27..28 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_graphics_path_command() {
+ check(
+ r#"\graphicspath{{\subfix{./img/}}}"#,
+ expect![[r#"
+ ROOT@0..32
+ PREAMBLE@0..32
+ GRAPHICS_PATH@0..32
+ COMMAND_NAME@0..13 "\\graphicspath"
+ CURLY_GROUP@13..32
+ L_CURLY@13..14 "{"
+ CURLY_GROUP_WORD@14..31
+ L_CURLY@14..15 "{"
+ KEY@15..30
+ COMMAND_NAME@15..22 "\\subfix"
+ CURLY_GROUP_WORD@22..30
+ L_CURLY@22..23 "{"
+ KEY@23..29
+ WORD@23..29 "./img/"
+ R_CURLY@29..30 "}"
+ R_CURLY@30..31 "}"
+ R_CURLY@31..32 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_graphics_path_options() {
+ check(
+ r#"\graphicspath[foo]{{../figures/}}"#,
+ expect![[r#"
+ ROOT@0..33
+ PREAMBLE@0..33
+ GRAPHICS_PATH@0..13
+ COMMAND_NAME@0..13 "\\graphicspath"
+ MIXED_GROUP@13..18
+ L_BRACK@13..14 "["
+ TEXT@14..17
+ WORD@14..17 "foo"
+ R_BRACK@17..18 "]"
+ CURLY_GROUP@18..33
+ L_CURLY@18..19 "{"
+ CURLY_GROUP@19..32
+ L_CURLY@19..20 "{"
+ TEXT@20..31
+ WORD@20..31 "../figures/"
+ R_CURLY@31..32 "}"
+ R_CURLY@32..33 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_curly_group_missing_end() {
+ check(
+ r#"{hello world"#,
+ expect![[r#"
+ ROOT@0..12
+ PREAMBLE@0..12
+ CURLY_GROUP@0..12
+ L_CURLY@0..1 "{"
+ TEXT@1..12
+ WORD@1..6 "hello"
+ WHITESPACE@6..7 " "
+ WORD@7..12 "world"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_curly_group_simple() {
+ check(
+ r#"{hello world}"#,
+ expect![[r#"
+ ROOT@0..13
+ PREAMBLE@0..13
+ CURLY_GROUP@0..13
+ L_CURLY@0..1 "{"
+ TEXT@1..12
+ WORD@1..6 "hello"
+ WHITESPACE@6..7 " "
+ WORD@7..12 "world"
+ R_CURLY@12..13 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_equation_missing_end() {
+ check(
+ r#"\begin{a} \[ foo bar \end{b}"#,
+ expect![[r#"
+ ROOT@0..28
+ PREAMBLE@0..28
+ ENVIRONMENT@0..28
+ BEGIN@0..10
+ COMMAND_NAME@0..6 "\\begin"
+ CURLY_GROUP_WORD@6..10
+ L_CURLY@6..7 "{"
+ KEY@7..8
+ WORD@7..8 "a"
+ R_CURLY@8..9 "}"
+ WHITESPACE@9..10 " "
+ EQUATION@10..21
+ COMMAND_NAME@10..12 "\\["
+ WHITESPACE@12..13 " "
+ TEXT@13..21
+ WORD@13..16 "foo"
+ WHITESPACE@16..17 " "
+ WORD@17..20 "bar"
+ WHITESPACE@20..21 " "
+ END@21..28
+ COMMAND_NAME@21..25 "\\end"
+ CURLY_GROUP_WORD@25..28
+ L_CURLY@25..26 "{"
+ KEY@26..27
+ WORD@26..27 "b"
+ R_CURLY@27..28 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_escaped_brackets() {
+ check(
+ r#"{[}{]}"#,
+ expect![[r#"
+ ROOT@0..6
+ PREAMBLE@0..6
+ CURLY_GROUP@0..3
+ L_CURLY@0..1 "{"
+ MIXED_GROUP@1..2
+ L_BRACK@1..2 "["
+ R_CURLY@2..3 "}"
+ CURLY_GROUP@3..6
+ L_CURLY@3..4 "{"
+ ERROR@4..5
+ R_BRACK@4..5 "]"
+ R_CURLY@5..6 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_unmatched_braces() {
+ check(
+ r#"}{"#,
+ expect![[r#"
+ ROOT@0..2
+ PREAMBLE@0..2
+ ERROR@0..1
+ R_CURLY@0..1 "}"
+ CURLY_GROUP@1..2
+ L_CURLY@1..2 "{"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_unmatched_brackets() {
+ check(
+ r#"]["#,
+ expect![[r#"
+ ROOT@0..2
+ PREAMBLE@0..2
+ ERROR@0..1
+ R_BRACK@0..1 "]"
+ MIXED_GROUP@1..2
+ L_BRACK@1..2 "["
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_unmatched_brackets_with_group() {
+ check(
+ r#"{][}"#,
+ expect![[r#"
+ ROOT@0..4
+ PREAMBLE@0..4
+ CURLY_GROUP@0..4
+ L_CURLY@0..1 "{"
+ ERROR@1..2
+ R_BRACK@1..2 "]"
+ MIXED_GROUP@2..3
+ L_BRACK@2..3 "["
+ R_CURLY@3..4 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_hello_world() {
+ check(
+ r#"Hello World!"#,
+ expect![[r#"
+ ROOT@0..12
+ PREAMBLE@0..12
+ TEXT@0..12
+ WORD@0..5 "Hello"
+ WHITESPACE@5..6 " "
+ WORD@6..12 "World!"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_biblatex_include_options() {
+ check(
+ r#"\addbibresource[foo=bar, baz]{foo/bar.bib}"#,
+ expect![[r#"
+ ROOT@0..42
+ PREAMBLE@0..42
+ BIBLATEX_INCLUDE@0..42
+ COMMAND_NAME@0..15 "\\addbibresource"
+ BRACK_GROUP_KEY_VALUE@15..29
+ L_BRACK@15..16 "["
+ KEY_VALUE_BODY@16..28
+ KEY_VALUE_PAIR@16..23
+ KEY@16..19
+ WORD@16..19 "foo"
+ EQUALITY_SIGN@19..20 "="
+ VALUE@20..23
+ TEXT@20..23
+ WORD@20..23 "bar"
+ COMMA@23..24 ","
+ WHITESPACE@24..25 " "
+ KEY_VALUE_PAIR@25..28
+ KEY@25..28
+ WORD@25..28 "baz"
+ R_BRACK@28..29 "]"
+ CURLY_GROUP_WORD_LIST@29..42
+ L_CURLY@29..30 "{"
+ KEY@30..41
+ WORD@30..41 "foo/bar.bib"
+ R_CURLY@41..42 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_biblatex_include_simple() {
+ check(
+ r#"\addbibresource{foo/bar.bib}"#,
+ expect![[r#"
+ ROOT@0..28
+ PREAMBLE@0..28
+ BIBLATEX_INCLUDE@0..28
+ COMMAND_NAME@0..15 "\\addbibresource"
+ CURLY_GROUP_WORD_LIST@15..28
+ L_CURLY@15..16 "{"
+ KEY@16..27
+ WORD@16..27 "foo/bar.bib"
+ R_CURLY@27..28 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_bibtex_include_simple() {
+ check(
+ r#"\bibliography{foo/bar}"#,
+ expect![[r#"
+ ROOT@0..22
+ PREAMBLE@0..22
+ BIBTEX_INCLUDE@0..22
+ COMMAND_NAME@0..13 "\\bibliography"
+ CURLY_GROUP_WORD_LIST@13..22
+ L_CURLY@13..14 "{"
+ KEY@14..21
+ WORD@14..21 "foo/bar"
+ R_CURLY@21..22 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_class_include_empty() {
+ check(
+ r#"\documentclass{}"#,
+ expect![[r#"
+ ROOT@0..16
+ PREAMBLE@0..16
+ CLASS_INCLUDE@0..16
+ COMMAND_NAME@0..14 "\\documentclass"
+ CURLY_GROUP_WORD_LIST@14..16
+ L_CURLY@14..15 "{"
+ R_CURLY@15..16 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_class_include_options() {
+ check(
+ r#"\documentclass[foo = bar, baz, qux]{article}"#,
+ expect![[r#"
+ ROOT@0..44
+ PREAMBLE@0..44
+ CLASS_INCLUDE@0..44
+ COMMAND_NAME@0..14 "\\documentclass"
+ BRACK_GROUP_KEY_VALUE@14..35
+ L_BRACK@14..15 "["
+ KEY_VALUE_BODY@15..34
+ KEY_VALUE_PAIR@15..24
+ KEY@15..19
+ WORD@15..18 "foo"
+ WHITESPACE@18..19 " "
+ EQUALITY_SIGN@19..20 "="
+ WHITESPACE@20..21 " "
+ VALUE@21..24
+ TEXT@21..24
+ WORD@21..24 "bar"
+ COMMA@24..25 ","
+ WHITESPACE@25..26 " "
+ KEY_VALUE_PAIR@26..29
+ KEY@26..29
+ WORD@26..29 "baz"
+ COMMA@29..30 ","
+ WHITESPACE@30..31 " "
+ KEY_VALUE_PAIR@31..34
+ KEY@31..34
+ WORD@31..34 "qux"
+ R_BRACK@34..35 "]"
+ CURLY_GROUP_WORD_LIST@35..44
+ L_CURLY@35..36 "{"
+ KEY@36..43
+ WORD@36..43 "article"
+ R_CURLY@43..44 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_class_include_simple() {
+ check(
+ r#"\documentclass{article}"#,
+ expect![[r#"
+ ROOT@0..23
+ PREAMBLE@0..23
+ CLASS_INCLUDE@0..23
+ COMMAND_NAME@0..14 "\\documentclass"
+ CURLY_GROUP_WORD_LIST@14..23
+ L_CURLY@14..15 "{"
+ KEY@15..22
+ WORD@15..22 "article"
+ R_CURLY@22..23 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_graphics_include_command() {
+ check(
+ r#"\includegraphics[width=0.5\textwidth]{\foo.\bar.pdf}"#,
+ expect![[r#"
+ ROOT@0..52
+ PREAMBLE@0..52
+ GRAPHICS_INCLUDE@0..52
+ COMMAND_NAME@0..16 "\\includegraphics"
+ BRACK_GROUP_KEY_VALUE@16..37
+ L_BRACK@16..17 "["
+ KEY_VALUE_BODY@17..36
+ KEY_VALUE_PAIR@17..36
+ KEY@17..22
+ WORD@17..22 "width"
+ EQUALITY_SIGN@22..23 "="
+ VALUE@23..36
+ TEXT@23..26
+ WORD@23..26 "0.5"
+ GENERIC_COMMAND@26..36
+ COMMAND_NAME@26..36 "\\textwidth"
+ R_BRACK@36..37 "]"
+ CURLY_GROUP_WORD_LIST@37..52
+ L_CURLY@37..38 "{"
+ KEY@38..51
+ COMMAND_NAME@38..42 "\\foo"
+ WORD@42..43 "."
+ COMMAND_NAME@43..47 "\\bar"
+ WORD@47..51 ".pdf"
+ R_CURLY@51..52 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_graphics_include_complicated_options() {
+ check(
+ r#"\includegraphics[width=0.5\textwidth]{}"#,
+ expect![[r#"
+ ROOT@0..39
+ PREAMBLE@0..39
+ GRAPHICS_INCLUDE@0..39
+ COMMAND_NAME@0..16 "\\includegraphics"
+ BRACK_GROUP_KEY_VALUE@16..37
+ L_BRACK@16..17 "["
+ KEY_VALUE_BODY@17..36
+ KEY_VALUE_PAIR@17..36
+ KEY@17..22
+ WORD@17..22 "width"
+ EQUALITY_SIGN@22..23 "="
+ VALUE@23..36
+ TEXT@23..26
+ WORD@23..26 "0.5"
+ GENERIC_COMMAND@26..36
+ COMMAND_NAME@26..36 "\\textwidth"
+ R_BRACK@36..37 "]"
+ CURLY_GROUP_WORD_LIST@37..39
+ L_CURLY@37..38 "{"
+ R_CURLY@38..39 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_graphics_include_options() {
+ check(
+ r#"\includegraphics[scale=.5]{foo/bar.pdf}"#,
+ expect![[r#"
+ ROOT@0..39
+ PREAMBLE@0..39
+ GRAPHICS_INCLUDE@0..39
+ COMMAND_NAME@0..16 "\\includegraphics"
+ BRACK_GROUP_KEY_VALUE@16..26
+ L_BRACK@16..17 "["
+ KEY_VALUE_BODY@17..25
+ KEY_VALUE_PAIR@17..25
+ KEY@17..22
+ WORD@17..22 "scale"
+ EQUALITY_SIGN@22..23 "="
+ VALUE@23..25
+ TEXT@23..25
+ WORD@23..25 ".5"
+ R_BRACK@25..26 "]"
+ CURLY_GROUP_WORD_LIST@26..39
+ L_CURLY@26..27 "{"
+ KEY@27..38
+ WORD@27..38 "foo/bar.pdf"
+ R_CURLY@38..39 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_graphics_include_simple() {
+ check(
+ r#"\includegraphics{foo/bar.pdf}"#,
+ expect![[r#"
+ ROOT@0..29
+ PREAMBLE@0..29
+ GRAPHICS_INCLUDE@0..29
+ COMMAND_NAME@0..16 "\\includegraphics"
+ CURLY_GROUP_WORD_LIST@16..29
+ L_CURLY@16..17 "{"
+ KEY@17..28
+ WORD@17..28 "foo/bar.pdf"
+ R_CURLY@28..29 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_import_incomplete() {
+ check(
+ r#"\import{foo"#,
+ expect![[r#"
+ ROOT@0..11
+ PREAMBLE@0..11
+ IMPORT@0..11
+ COMMAND_NAME@0..7 "\\import"
+ CURLY_GROUP_WORD@7..11
+ L_CURLY@7..8 "{"
+ KEY@8..11
+ WORD@8..11 "foo"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_import_simple() {
+ check(
+ r#"\import{foo}{bar}"#,
+ expect![[r#"
+ ROOT@0..17
+ PREAMBLE@0..17
+ IMPORT@0..17
+ COMMAND_NAME@0..7 "\\import"
+ CURLY_GROUP_WORD@7..12
+ L_CURLY@7..8 "{"
+ KEY@8..11
+ WORD@8..11 "foo"
+ R_CURLY@11..12 "}"
+ CURLY_GROUP_WORD@12..17
+ L_CURLY@12..13 "{"
+ KEY@13..16
+ WORD@13..16 "bar"
+ R_CURLY@16..17 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_inkscape_include_options() {
+ check(
+ r#"\includesvg[scale=.5]{foo/bar}"#,
+ expect![[r#"
+ ROOT@0..30
+ PREAMBLE@0..30
+ SVG_INCLUDE@0..30
+ COMMAND_NAME@0..11 "\\includesvg"
+ BRACK_GROUP_KEY_VALUE@11..21
+ L_BRACK@11..12 "["
+ KEY_VALUE_BODY@12..20
+ KEY_VALUE_PAIR@12..20
+ KEY@12..17
+ WORD@12..17 "scale"
+ EQUALITY_SIGN@17..18 "="
+ VALUE@18..20
+ TEXT@18..20
+ WORD@18..20 ".5"
+ R_BRACK@20..21 "]"
+ CURLY_GROUP_WORD_LIST@21..30
+ L_CURLY@21..22 "{"
+ KEY@22..29
+ WORD@22..29 "foo/bar"
+ R_CURLY@29..30 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_inkscape_include_simple() {
+ check(
+ r#"\includesvg{foo/bar}"#,
+ expect![[r#"
+ ROOT@0..20
+ PREAMBLE@0..20
+ SVG_INCLUDE@0..20
+ COMMAND_NAME@0..11 "\\includesvg"
+ CURLY_GROUP_WORD_LIST@11..20
+ L_CURLY@11..12 "{"
+ KEY@12..19
+ WORD@12..19 "foo/bar"
+ R_CURLY@19..20 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_latex_include_equality_sign() {
+ check(
+ r#"\include{foo=bar}"#,
+ expect![[r#"
+ ROOT@0..17
+ PREAMBLE@0..17
+ LATEX_INCLUDE@0..17
+ COMMAND_NAME@0..8 "\\include"
+ CURLY_GROUP_WORD_LIST@8..17
+ L_CURLY@8..9 "{"
+ KEY@9..16
+ WORD@9..12 "foo"
+ EQUALITY_SIGN@12..13 "="
+ WORD@13..16 "bar"
+ R_CURLY@16..17 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_latex_include_simple() {
+ check(
+ r#"\include{foo/bar}"#,
+ expect![[r#"
+ ROOT@0..17
+ PREAMBLE@0..17
+ LATEX_INCLUDE@0..17
+ COMMAND_NAME@0..8 "\\include"
+ CURLY_GROUP_WORD_LIST@8..17
+ L_CURLY@8..9 "{"
+ KEY@9..16
+ WORD@9..16 "foo/bar"
+ R_CURLY@16..17 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_latex_input_path_brackets() {
+ check(
+ r#"\input{foo[bar].tex}"#,
+ expect![[r#"
+ ROOT@0..20
+ PREAMBLE@0..20
+ LATEX_INCLUDE@0..20
+ COMMAND_NAME@0..6 "\\input"
+ CURLY_GROUP_WORD_LIST@6..20
+ L_CURLY@6..7 "{"
+ KEY@7..19
+ WORD@7..10 "foo"
+ L_BRACK@10..11 "["
+ WORD@11..14 "bar"
+ R_BRACK@14..15 "]"
+ WORD@15..19 ".tex"
+ R_CURLY@19..20 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_package_include_empty() {
+ check(
+ r#"\usepackage{}"#,
+ expect![[r#"
+ ROOT@0..13
+ PREAMBLE@0..13
+ PACKAGE_INCLUDE@0..13
+ COMMAND_NAME@0..11 "\\usepackage"
+ CURLY_GROUP_WORD_LIST@11..13
+ L_CURLY@11..12 "{"
+ R_CURLY@12..13 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_package_include_multiple() {
+ check(
+ r#"\usepackage{amsmath, lipsum}"#,
+ expect![[r#"
+ ROOT@0..28
+ PREAMBLE@0..28
+ PACKAGE_INCLUDE@0..28
+ COMMAND_NAME@0..11 "\\usepackage"
+ CURLY_GROUP_WORD_LIST@11..28
+ L_CURLY@11..12 "{"
+ KEY@12..19
+ WORD@12..19 "amsmath"
+ COMMA@19..20 ","
+ WHITESPACE@20..21 " "
+ KEY@21..27
+ WORD@21..27 "lipsum"
+ R_CURLY@27..28 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_package_include_options() {
+ check(
+ r#"\usepackage[foo = bar, baz, qux]{amsmath}"#,
+ expect![[r#"
+ ROOT@0..41
+ PREAMBLE@0..41
+ PACKAGE_INCLUDE@0..41
+ COMMAND_NAME@0..11 "\\usepackage"
+ BRACK_GROUP_KEY_VALUE@11..32
+ L_BRACK@11..12 "["
+ KEY_VALUE_BODY@12..31
+ KEY_VALUE_PAIR@12..21
+ KEY@12..16
+ WORD@12..15 "foo"
+ WHITESPACE@15..16 " "
+ EQUALITY_SIGN@16..17 "="
+ WHITESPACE@17..18 " "
+ VALUE@18..21
+ TEXT@18..21
+ WORD@18..21 "bar"
+ COMMA@21..22 ","
+ WHITESPACE@22..23 " "
+ KEY_VALUE_PAIR@23..26
+ KEY@23..26
+ WORD@23..26 "baz"
+ COMMA@26..27 ","
+ WHITESPACE@27..28 " "
+ KEY_VALUE_PAIR@28..31
+ KEY@28..31
+ WORD@28..31 "qux"
+ R_BRACK@31..32 "]"
+ CURLY_GROUP_WORD_LIST@32..41
+ L_CURLY@32..33 "{"
+ KEY@33..40
+ WORD@33..40 "amsmath"
+ R_CURLY@40..41 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_package_include_simple() {
+ check(
+ r#"\usepackage{amsmath}"#,
+ expect![[r#"
+ ROOT@0..20
+ PREAMBLE@0..20
+ PACKAGE_INCLUDE@0..20
+ COMMAND_NAME@0..11 "\\usepackage"
+ CURLY_GROUP_WORD_LIST@11..20
+ L_CURLY@11..12 "{"
+ KEY@12..19
+ WORD@12..19 "amsmath"
+ R_CURLY@19..20 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_pgf_library_import_simple() {
+ check(
+ r#"\usepgflibrary{foo}"#,
+ expect![[r#"
+ ROOT@0..19
+ PREAMBLE@0..19
+ TIKZ_LIBRARY_IMPORT@0..19
+ COMMAND_NAME@0..14 "\\usepgflibrary"
+ CURLY_GROUP_WORD_LIST@14..19
+ L_CURLY@14..15 "{"
+ KEY@15..18
+ WORD@15..18 "foo"
+ R_CURLY@18..19 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_svg_include_options() {
+ check(
+ r#"\includesvg[scale=.5]{foo/bar.svg}"#,
+ expect![[r#"
+ ROOT@0..34
+ PREAMBLE@0..34
+ SVG_INCLUDE@0..34
+ COMMAND_NAME@0..11 "\\includesvg"
+ BRACK_GROUP_KEY_VALUE@11..21
+ L_BRACK@11..12 "["
+ KEY_VALUE_BODY@12..20
+ KEY_VALUE_PAIR@12..20
+ KEY@12..17
+ WORD@12..17 "scale"
+ EQUALITY_SIGN@17..18 "="
+ VALUE@18..20
+ TEXT@18..20
+ WORD@18..20 ".5"
+ R_BRACK@20..21 "]"
+ CURLY_GROUP_WORD_LIST@21..34
+ L_CURLY@21..22 "{"
+ KEY@22..33
+ WORD@22..33 "foo/bar.svg"
+ R_CURLY@33..34 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_svg_include_simple() {
+ check(
+ r#"\includesvg{foo/bar.svg}"#,
+ expect![[r#"
+ ROOT@0..24
+ PREAMBLE@0..24
+ SVG_INCLUDE@0..24
+ COMMAND_NAME@0..11 "\\includesvg"
+ CURLY_GROUP_WORD_LIST@11..24
+ L_CURLY@11..12 "{"
+ KEY@12..23
+ WORD@12..23 "foo/bar.svg"
+ R_CURLY@23..24 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_tikz_library_import_simple() {
+ check(
+ r#"\usetikzlibrary{foo}"#,
+ expect![[r#"
+ ROOT@0..20
+ PREAMBLE@0..20
+ TIKZ_LIBRARY_IMPORT@0..20
+ COMMAND_NAME@0..15 "\\usetikzlibrary"
+ CURLY_GROUP_WORD_LIST@15..20
+ L_CURLY@15..16 "{"
+ KEY@16..19
+ WORD@16..19 "foo"
+ R_CURLY@19..20 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_verbatim_include_simple() {
+ check(
+ r#"\verbatiminput{foo/bar.txt}"#,
+ expect![[r#"
+ ROOT@0..27
+ PREAMBLE@0..27
+ VERBATIM_INCLUDE@0..27
+ COMMAND_NAME@0..14 "\\verbatiminput"
+ CURLY_GROUP_WORD_LIST@14..27
+ L_CURLY@14..15 "{"
+ KEY@15..26
+ WORD@15..26 "foo/bar.txt"
+ R_CURLY@26..27 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_inline() {
+ check(
+ r#"$x \in [0, \infty)$"#,
+ expect![[r#"
+ ROOT@0..19
+ PREAMBLE@0..19
+ FORMULA@0..19
+ DOLLAR@0..1 "$"
+ TEXT@1..3
+ WORD@1..2 "x"
+ WHITESPACE@2..3 " "
+ GENERIC_COMMAND@3..18
+ COMMAND_NAME@3..6 "\\in"
+ WHITESPACE@6..7 " "
+ MIXED_GROUP@7..18
+ L_BRACK@7..8 "["
+ TEXT@8..11
+ WORD@8..9 "0"
+ COMMA@9..10 ","
+ WHITESPACE@10..11 " "
+ GENERIC_COMMAND@11..17
+ COMMAND_NAME@11..17 "\\infty"
+ R_PAREN@17..18 ")"
+ DOLLAR@18..19 "$"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_inline_double_dollar() {
+ check(
+ r#"$$x \in [0, \infty)$$"#,
+ expect![[r#"
+ ROOT@0..21
+ PREAMBLE@0..21
+ FORMULA@0..21
+ DOLLAR@0..2 "$$"
+ TEXT@2..4
+ WORD@2..3 "x"
+ WHITESPACE@3..4 " "
+ GENERIC_COMMAND@4..19
+ COMMAND_NAME@4..7 "\\in"
+ WHITESPACE@7..8 " "
+ MIXED_GROUP@8..19
+ L_BRACK@8..9 "["
+ TEXT@9..12
+ WORD@9..10 "0"
+ COMMA@10..11 ","
+ WHITESPACE@11..12 " "
+ GENERIC_COMMAND@12..18
+ COMMAND_NAME@12..18 "\\infty"
+ R_PAREN@18..19 ")"
+ DOLLAR@19..21 "$$"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_issue_568() {
+ check(
+ r#"\input{|ipython scripts/test.ipynb}
+\label{fig:x=2}"#,
+ expect![[r#"
+ ROOT@0..51
+ PREAMBLE@0..51
+ LATEX_INCLUDE@0..36
+ COMMAND_NAME@0..6 "\\input"
+ CURLY_GROUP_WORD_LIST@6..36
+ L_CURLY@6..7 "{"
+ WORD@7..8 "|"
+ KEY@8..34
+ WORD@8..15 "ipython"
+ WHITESPACE@15..16 " "
+ WORD@16..34 "scripts/test.ipynb"
+ R_CURLY@34..35 "}"
+ LINE_BREAK@35..36 "\n"
+ LABEL_DEFINITION@36..51
+ COMMAND_NAME@36..42 "\\label"
+ CURLY_GROUP_WORD@42..51
+ L_CURLY@42..43 "{"
+ KEY@43..50
+ WORD@43..48 "fig:x"
+ EQUALITY_SIGN@48..49 "="
+ WORD@49..50 "2"
+ R_CURLY@50..51 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_issue_745() {
+ check(
+ r#"\documentclass{article}
+\usepackage{tabularray}
+
+\ExplSyntaxOn
+\NewDocumentEnvironment{exptblr}{O{}m}
+ {
+ \use:x
+ {
+ \exp_not:N \begin{tblr}
+ [\exp_not:n{#1}]
+ {#2}
+ }
+ }
+ {
+ \end{tblr}
+ }
+\ExplSyntaxOff
+
+\begin{document}
+
+\end{document}"#,
+ expect![[r##"
+ ROOT@0..271
+ PREAMBLE@0..271
+ CLASS_INCLUDE@0..24
+ COMMAND_NAME@0..14 "\\documentclass"
+ CURLY_GROUP_WORD_LIST@14..24
+ L_CURLY@14..15 "{"
+ KEY@15..22
+ WORD@15..22 "article"
+ R_CURLY@22..23 "}"
+ LINE_BREAK@23..24 "\n"
+ PACKAGE_INCLUDE@24..50
+ COMMAND_NAME@24..35 "\\usepackage"
+ CURLY_GROUP_WORD_LIST@35..50
+ L_CURLY@35..36 "{"
+ KEY@36..46
+ WORD@36..46 "tabularray"
+ R_CURLY@46..47 "}"
+ WHITESPACE@47..48 " "
+ LINE_BREAK@48..50 "\n\n"
+ GENERIC_COMMAND@50..64
+ COMMAND_NAME@50..63 "\\ExplSyntaxOn"
+ LINE_BREAK@63..64 "\n"
+ GENERIC_COMMAND@64..223
+ COMMAND_NAME@64..87 "\\NewDocumentEnvironment"
+ CURLY_GROUP@87..96
+ L_CURLY@87..88 "{"
+ TEXT@88..95
+ WORD@88..95 "exptblr"
+ R_CURLY@95..96 "}"
+ CURLY_GROUP@96..107
+ L_CURLY@96..97 "{"
+ TEXT@97..98
+ WORD@97..98 "O"
+ CURLY_GROUP@98..100
+ L_CURLY@98..99 "{"
+ R_CURLY@99..100 "}"
+ TEXT@100..101
+ WORD@100..101 "m"
+ R_CURLY@101..102 "}"
+ LINE_BREAK@102..103 "\n"
+ WHITESPACE@103..107 " "
+ CURLY_GROUP@107..200
+ L_CURLY@107..108 "{"
+ LINE_BREAK@108..109 "\n"
+ WHITESPACE@109..113 " "
+ GENERIC_COMMAND@113..194
+ COMMAND_NAME@113..119 "\\use:x"
+ LINE_BREAK@119..120 "\n"
+ WHITESPACE@120..124 " "
+ CURLY_GROUP@124..194
+ L_CURLY@124..125 "{"
+ LINE_BREAK@125..126 "\n"
+ WHITESPACE@126..130 " "
+ GENERIC_COMMAND@130..141
+ COMMAND_NAME@130..140 "\\exp_not:N"
+ WHITESPACE@140..141 " "
+ ENVIRONMENT@141..188
+ BEGIN@141..179
+ COMMAND_NAME@141..147 "\\begin"
+ CURLY_GROUP_WORD@147..158
+ L_CURLY@147..148 "{"
+ KEY@148..152
+ WORD@148..152 "tblr"
+ R_CURLY@152..153 "}"
+ LINE_BREAK@153..154 "\n"
+ WHITESPACE@154..158 " "
+ BRACK_GROUP@158..179
+ L_BRACK@158..159 "["
+ GENERIC_COMMAND@159..173
+ COMMAND_NAME@159..169 "\\exp_not:n"
+ CURLY_GROUP@169..173
+ L_CURLY@169..170 "{"
+ TEXT@170..172
+ WORD@170..172 "#1"
+ R_CURLY@172..173 "}"
+ R_BRACK@173..174 "]"
+ LINE_BREAK@174..175 "\n"
+ WHITESPACE@175..179 " "
+ CURLY_GROUP@179..188
+ L_CURLY@179..180 "{"
+ TEXT@180..182
+ WORD@180..182 "#2"
+ R_CURLY@182..183 "}"
+ LINE_BREAK@183..184 "\n"
+ WHITESPACE@184..188 " "
+ R_CURLY@188..189 "}"
+ LINE_BREAK@189..190 "\n"
+ WHITESPACE@190..194 " "
+ R_CURLY@194..195 "}"
+ LINE_BREAK@195..196 "\n"
+ WHITESPACE@196..200 " "
+ CURLY_GROUP@200..223
+ L_CURLY@200..201 "{"
+ LINE_BREAK@201..202 "\n"
+ WHITESPACE@202..206 " "
+ GENERIC_COMMAND@206..221
+ COMMAND_NAME@206..210 "\\end"
+ CURLY_GROUP@210..221
+ L_CURLY@210..211 "{"
+ TEXT@211..215
+ WORD@211..215 "tblr"
+ R_CURLY@215..216 "}"
+ LINE_BREAK@216..217 "\n"
+ WHITESPACE@217..221 " "
+ R_CURLY@221..222 "}"
+ LINE_BREAK@222..223 "\n"
+ GENERIC_COMMAND@223..239
+ COMMAND_NAME@223..237 "\\ExplSyntaxOff"
+ LINE_BREAK@237..239 "\n\n"
+ ENVIRONMENT@239..271
+ BEGIN@239..257
+ COMMAND_NAME@239..245 "\\begin"
+ CURLY_GROUP_WORD@245..257
+ L_CURLY@245..246 "{"
+ KEY@246..254
+ WORD@246..254 "document"
+ R_CURLY@254..255 "}"
+ LINE_BREAK@255..257 "\n\n"
+ END@257..271
+ COMMAND_NAME@257..261 "\\end"
+ CURLY_GROUP_WORD@261..271
+ L_CURLY@261..262 "{"
+ KEY@262..270
+ WORD@262..270 "document"
+ R_CURLY@270..271 "}"
+
+ "##]],
+ );
+}
+
+#[test]
+fn test_issue_789() {
+ check(
+ r#"\graphicspath{test}"#,
+ expect![[r#"
+ ROOT@0..19
+ PREAMBLE@0..19
+ GRAPHICS_PATH@0..19
+ COMMAND_NAME@0..13 "\\graphicspath"
+ CURLY_GROUP_WORD@13..19
+ L_CURLY@13..14 "{"
+ KEY@14..18
+ WORD@14..18 "test"
+ R_CURLY@18..19 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_issue_828() {
+ check(
+ r#"\verb|<STATEMENT> if(<expr>){<body>else{<body>|"#,
+ expect![[r#"
+ ROOT@0..51
+ PREAMBLE@0..51
+ GENERIC_COMMAND@0..5
+ COMMAND_NAME@0..5 "\\verb"
+ VERBATIM@5..6 "|"
+ VERBATIM@6..17 "<STATEMENT>"
+ VERBATIM@17..22 " "
+ VERBATIM@22..24 "if"
+ VERBATIM@24..25 "("
+ VERBATIM@25..31 "<expr>"
+ VERBATIM@31..32 ")"
+ VERBATIM@32..33 "{"
+ VERBATIM@33..43 "<body>else"
+ VERBATIM@43..44 "{"
+ VERBATIM@44..50 "<body>"
+ VERBATIM@50..51 "|"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_issue_853() {
+ check(
+ r#"\documentclass{minimal}
+\begin{document}
+This is an asdf undefined command
+\iffalse
+ \iffalse\fi
+ \end{enumerate}
+\fi
+\end{document}"#,
+ expect![[r#"
+ ROOT@0..135
+ PREAMBLE@0..135
+ CLASS_INCLUDE@0..24
+ COMMAND_NAME@0..14 "\\documentclass"
+ CURLY_GROUP_WORD_LIST@14..24
+ L_CURLY@14..15 "{"
+ KEY@15..22
+ WORD@15..22 "minimal"
+ R_CURLY@22..23 "}"
+ LINE_BREAK@23..24 "\n"
+ ENVIRONMENT@24..135
+ BEGIN@24..41
+ COMMAND_NAME@24..30 "\\begin"
+ CURLY_GROUP_WORD@30..41
+ L_CURLY@30..31 "{"
+ KEY@31..39
+ WORD@31..39 "document"
+ R_CURLY@39..40 "}"
+ LINE_BREAK@40..41 "\n"
+ TEXT@41..75
+ WORD@41..45 "This"
+ WHITESPACE@45..46 " "
+ WORD@46..48 "is"
+ WHITESPACE@48..49 " "
+ WORD@49..51 "an"
+ WHITESPACE@51..52 " "
+ WORD@52..56 "asdf"
+ WHITESPACE@56..57 " "
+ WORD@57..66 "undefined"
+ WHITESPACE@66..67 " "
+ WORD@67..74 "command"
+ LINE_BREAK@74..75 "\n"
+ BLOCK_COMMENT@75..120
+ COMMAND_NAME@75..83 "\\iffalse"
+ LINE_BREAK@83..84 "\n"
+ WHITESPACE@84..86 " "
+ BLOCK_COMMENT@86..97
+ COMMAND_NAME@86..94 "\\iffalse"
+ COMMAND_NAME@94..97 "\\fi"
+ LINE_BREAK@97..98 "\n"
+ WHITESPACE@98..100 " "
+ COMMAND_NAME@100..104 "\\end"
+ L_CURLY@104..105 "{"
+ WORD@105..114 "enumerate"
+ R_CURLY@114..115 "}"
+ WHITESPACE@115..116 " "
+ LINE_BREAK@116..117 "\n"
+ COMMAND_NAME@117..120 "\\fi"
+ LINE_BREAK@120..121 "\n"
+ END@121..135
+ COMMAND_NAME@121..125 "\\end"
+ CURLY_GROUP_WORD@125..135
+ L_CURLY@125..126 "{"
+ KEY@126..134
+ WORD@126..134 "document"
+ R_CURLY@134..135 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_issue_857() {
+ check(
+ r#"\newcommand\ö{}
+\newcommand{\öö}{}
+\newcommand\123{}"#,
+ expect![[r#"
+ ROOT@0..55
+ PREAMBLE@0..55
+ COMMAND_DEFINITION@0..11
+ COMMAND_NAME@0..11 "\\newcommand"
+ GENERIC_COMMAND@11..17
+ COMMAND_NAME@11..14 "\\ö"
+ CURLY_GROUP@14..17
+ L_CURLY@14..15 "{"
+ R_CURLY@15..16 "}"
+ LINE_BREAK@16..17 "\n"
+ COMMAND_DEFINITION@17..38
+ COMMAND_NAME@17..28 "\\newcommand"
+ CURLY_GROUP_COMMAND@28..35
+ L_CURLY@28..29 "{"
+ COMMAND_NAME@29..34 "\\öö"
+ R_CURLY@34..35 "}"
+ CURLY_GROUP@35..38
+ L_CURLY@35..36 "{"
+ R_CURLY@36..37 "}"
+ LINE_BREAK@37..38 "\n"
+ COMMAND_DEFINITION@38..49
+ COMMAND_NAME@38..49 "\\newcommand"
+ GENERIC_COMMAND@49..55
+ COMMAND_NAME@49..53 "\\123"
+ CURLY_GROUP@53..55
+ L_CURLY@53..54 "{"
+ R_CURLY@54..55 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_issue_874() {
+ check(
+ r#"\includegraphics[scale=0.2]{7.4).jpg}"#,
+ expect![[r#"
+ ROOT@0..37
+ PREAMBLE@0..37
+ GRAPHICS_INCLUDE@0..37
+ COMMAND_NAME@0..16 "\\includegraphics"
+ BRACK_GROUP_KEY_VALUE@16..27
+ L_BRACK@16..17 "["
+ KEY_VALUE_BODY@17..26
+ KEY_VALUE_PAIR@17..26
+ KEY@17..22
+ WORD@17..22 "scale"
+ EQUALITY_SIGN@22..23 "="
+ VALUE@23..26
+ TEXT@23..26
+ WORD@23..26 "0.2"
+ R_BRACK@26..27 "]"
+ CURLY_GROUP_WORD_LIST@27..37
+ L_CURLY@27..28 "{"
+ KEY@28..36
+ WORD@28..31 "7.4"
+ R_PAREN@31..32 ")"
+ WORD@32..36 ".jpg"
+ R_CURLY@36..37 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_issue_919() {
+ check(
+ r#"\documentclass{article}
+
+\usepackage{
+ lipsum, % provides blindtext
+ booktabs, % better rules for tables
+ %xcolor % easily define colors with \definecolor{}{}{}
+}
+
+\begin{document}
+ \lipsum
+\end{document}
+"#,
+ expect![[r#"
+ ROOT@0..217
+ PREAMBLE@0..217
+ CLASS_INCLUDE@0..25
+ COMMAND_NAME@0..14 "\\documentclass"
+ CURLY_GROUP_WORD_LIST@14..25
+ L_CURLY@14..15 "{"
+ KEY@15..22
+ WORD@15..22 "article"
+ R_CURLY@22..23 "}"
+ LINE_BREAK@23..25 "\n\n"
+ PACKAGE_INCLUDE@25..173
+ COMMAND_NAME@25..36 "\\usepackage"
+ CURLY_GROUP_WORD_LIST@36..173
+ L_CURLY@36..37 "{"
+ LINE_BREAK@37..38 "\n"
+ WHITESPACE@38..42 " "
+ KEY@42..48
+ WORD@42..48 "lipsum"
+ COMMA@48..49 ","
+ WHITESPACE@49..50 " "
+ COMMENT@50..70 "% provides blindtext"
+ LINE_BREAK@70..71 "\n"
+ WHITESPACE@71..75 " "
+ KEY@75..83
+ WORD@75..83 "booktabs"
+ COMMA@83..84 ","
+ WHITESPACE@84..85 " "
+ COMMENT@85..110 "% better rules for ta ..."
+ LINE_BREAK@110..111 "\n"
+ WHITESPACE@111..115 " "
+ COMMENT@115..169 "%xcolor % easily defi ..."
+ LINE_BREAK@169..170 "\n"
+ R_CURLY@170..171 "}"
+ LINE_BREAK@171..173 "\n\n"
+ ENVIRONMENT@173..217
+ BEGIN@173..194
+ COMMAND_NAME@173..179 "\\begin"
+ CURLY_GROUP_WORD@179..194
+ L_CURLY@179..180 "{"
+ KEY@180..188
+ WORD@180..188 "document"
+ R_CURLY@188..189 "}"
+ LINE_BREAK@189..190 "\n"
+ WHITESPACE@190..194 " "
+ GENERIC_COMMAND@194..202
+ COMMAND_NAME@194..201 "\\lipsum"
+ LINE_BREAK@201..202 "\n"
+ END@202..217
+ COMMAND_NAME@202..206 "\\end"
+ CURLY_GROUP_WORD@206..217
+ L_CURLY@206..207 "{"
+ KEY@207..215
+ WORD@207..215 "document"
+ R_CURLY@215..216 "}"
+ LINE_BREAK@216..217 "\n"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_issue_931() {
+ check(
+ r#"\bibliography{$HOME/Literature}"#,
+ expect![[r#"
+ ROOT@0..31
+ PREAMBLE@0..31
+ BIBTEX_INCLUDE@0..31
+ COMMAND_NAME@0..13 "\\bibliography"
+ CURLY_GROUP_WORD_LIST@13..31
+ L_CURLY@13..14 "{"
+ KEY@14..30
+ DOLLAR@14..15 "$"
+ WORD@15..30 "HOME/Literature"
+ R_CURLY@30..31 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_label_definition_line_break() {
+ check(
+ r#"\label{hello
+world}"#,
+ expect![[r#"
+ ROOT@0..19
+ PREAMBLE@0..19
+ LABEL_DEFINITION@0..13
+ COMMAND_NAME@0..6 "\\label"
+ CURLY_GROUP_WORD@6..13
+ L_CURLY@6..7 "{"
+ KEY@7..13
+ WORD@7..12 "hello"
+ LINE_BREAK@12..13 "\n"
+ TEXT@13..18
+ WORD@13..18 "world"
+ ERROR@18..19
+ R_CURLY@18..19 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_label_definition_simple() {
+ check(
+ r#"\label{foo}"#,
+ expect![[r#"
+ ROOT@0..11
+ PREAMBLE@0..11
+ LABEL_DEFINITION@0..11
+ COMMAND_NAME@0..6 "\\label"
+ CURLY_GROUP_WORD@6..11
+ L_CURLY@6..7 "{"
+ KEY@7..10
+ WORD@7..10 "foo"
+ R_CURLY@10..11 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_label_number() {
+ check(
+ r#"\newlabel{foo}{{1.1}}"#,
+ expect![[r#"
+ ROOT@0..21
+ PREAMBLE@0..21
+ LABEL_NUMBER@0..21
+ COMMAND_NAME@0..9 "\\newlabel"
+ CURLY_GROUP_WORD@9..14
+ L_CURLY@9..10 "{"
+ KEY@10..13
+ WORD@10..13 "foo"
+ R_CURLY@13..14 "}"
+ CURLY_GROUP@14..21
+ L_CURLY@14..15 "{"
+ CURLY_GROUP@15..20
+ L_CURLY@15..16 "{"
+ TEXT@16..19
+ WORD@16..19 "1.1"
+ R_CURLY@19..20 "}"
+ R_CURLY@20..21 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_label_reference_equation() {
+ check(
+ r#"\eqref{foo}"#,
+ expect![[r#"
+ ROOT@0..11
+ PREAMBLE@0..11
+ LABEL_REFERENCE@0..11
+ COMMAND_NAME@0..6 "\\eqref"
+ CURLY_GROUP_WORD_LIST@6..11
+ L_CURLY@6..7 "{"
+ KEY@7..10
+ WORD@7..10 "foo"
+ R_CURLY@10..11 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_label_reference_incomplete() {
+ check(
+ r#"Equation \eqref{eq is a \emph{useful} identity."#,
+ expect![[r#"
+ ROOT@0..47
+ PREAMBLE@0..47
+ TEXT@0..9
+ WORD@0..8 "Equation"
+ WHITESPACE@8..9 " "
+ LABEL_REFERENCE@9..24
+ COMMAND_NAME@9..15 "\\eqref"
+ CURLY_GROUP_WORD_LIST@15..24
+ L_CURLY@15..16 "{"
+ KEY@16..24
+ WORD@16..18 "eq"
+ WHITESPACE@18..19 " "
+ WORD@19..21 "is"
+ WHITESPACE@21..22 " "
+ WORD@22..23 "a"
+ WHITESPACE@23..24 " "
+ GENERIC_COMMAND@24..38
+ COMMAND_NAME@24..29 "\\emph"
+ CURLY_GROUP@29..38
+ L_CURLY@29..30 "{"
+ TEXT@30..36
+ WORD@30..36 "useful"
+ R_CURLY@36..37 "}"
+ WHITESPACE@37..38 " "
+ TEXT@38..47
+ WORD@38..47 "identity."
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_label_reference_multiple() {
+ check(
+ r#"\ref{foo, bar}"#,
+ expect![[r#"
+ ROOT@0..14
+ PREAMBLE@0..14
+ LABEL_REFERENCE@0..14
+ COMMAND_NAME@0..4 "\\ref"
+ CURLY_GROUP_WORD_LIST@4..14
+ L_CURLY@4..5 "{"
+ KEY@5..8
+ WORD@5..8 "foo"
+ COMMA@8..9 ","
+ WHITESPACE@9..10 " "
+ KEY@10..13
+ WORD@10..13 "bar"
+ R_CURLY@13..14 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_label_reference_range_error() {
+ check(
+ r#"\crefrange{foo{bar}"#,
+ expect![[r#"
+ ROOT@0..19
+ PREAMBLE@0..19
+ LABEL_REFERENCE_RANGE@0..19
+ COMMAND_NAME@0..10 "\\crefrange"
+ CURLY_GROUP_WORD@10..14
+ L_CURLY@10..11 "{"
+ KEY@11..14
+ WORD@11..14 "foo"
+ CURLY_GROUP_WORD@14..19
+ L_CURLY@14..15 "{"
+ KEY@15..18
+ WORD@15..18 "bar"
+ R_CURLY@18..19 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_label_reference_range_incomplete() {
+ check(
+ r#"\crefrange{foo}"#,
+ expect![[r#"
+ ROOT@0..15
+ PREAMBLE@0..15
+ LABEL_REFERENCE_RANGE@0..15
+ COMMAND_NAME@0..10 "\\crefrange"
+ CURLY_GROUP_WORD@10..15
+ L_CURLY@10..11 "{"
+ KEY@11..14
+ WORD@11..14 "foo"
+ R_CURLY@14..15 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_label_reference_range_simple() {
+ check(
+ r#"\crefrange{foo}{bar}"#,
+ expect![[r#"
+ ROOT@0..20
+ PREAMBLE@0..20
+ LABEL_REFERENCE_RANGE@0..20
+ COMMAND_NAME@0..10 "\\crefrange"
+ CURLY_GROUP_WORD@10..15
+ L_CURLY@10..11 "{"
+ KEY@11..14
+ WORD@11..14 "foo"
+ R_CURLY@14..15 "}"
+ CURLY_GROUP_WORD@15..20
+ L_CURLY@15..16 "{"
+ KEY@16..19
+ WORD@16..19 "bar"
+ R_CURLY@19..20 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_label_reference_simple() {
+ check(
+ r#"\ref{foo}"#,
+ expect![[r#"
+ ROOT@0..9
+ PREAMBLE@0..9
+ LABEL_REFERENCE@0..9
+ COMMAND_NAME@0..4 "\\ref"
+ CURLY_GROUP_WORD_LIST@4..9
+ L_CURLY@4..5 "{"
+ KEY@5..8
+ WORD@5..8 "foo"
+ R_CURLY@8..9 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_parameter() {
+ check(
+ r#"#1"#,
+ expect![[r##"
+ ROOT@0..2
+ PREAMBLE@0..2
+ TEXT@0..2
+ WORD@0..2 "#1"
+
+ "##]],
+ );
+}
+
+#[test]
+fn test_parameter_error() {
+ check(
+ r#"#"#,
+ expect![[r##"
+ ROOT@0..1
+ PREAMBLE@0..1
+ TEXT@0..1
+ WORD@0..1 "#"
+
+ "##]],
+ );
+}
+
+#[test]
+fn test_paragraphs() {
+ check(
+ r#"\section{Section 1}
+Section 1
+
+\paragraph{Paragraph 1}
+Paragraph 1
+
+\paragraph{Paragraph 2}
+Paragraph 2
+
+\section{Section 2}
+Section 2"#,
+ expect![[r#"
+ ROOT@0..134
+ PREAMBLE@0..134
+ SECTION@0..105
+ COMMAND_NAME@0..8 "\\section"
+ CURLY_GROUP@8..20
+ L_CURLY@8..9 "{"
+ TEXT@9..18
+ WORD@9..16 "Section"
+ WHITESPACE@16..17 " "
+ WORD@17..18 "1"
+ R_CURLY@18..19 "}"
+ LINE_BREAK@19..20 "\n"
+ TEXT@20..31
+ WORD@20..27 "Section"
+ WHITESPACE@27..28 " "
+ WORD@28..29 "1"
+ LINE_BREAK@29..31 "\n\n"
+ PARAGRAPH@31..68
+ COMMAND_NAME@31..41 "\\paragraph"
+ CURLY_GROUP@41..55
+ L_CURLY@41..42 "{"
+ TEXT@42..53
+ WORD@42..51 "Paragraph"
+ WHITESPACE@51..52 " "
+ WORD@52..53 "1"
+ R_CURLY@53..54 "}"
+ LINE_BREAK@54..55 "\n"
+ TEXT@55..68
+ WORD@55..64 "Paragraph"
+ WHITESPACE@64..65 " "
+ WORD@65..66 "1"
+ LINE_BREAK@66..68 "\n\n"
+ PARAGRAPH@68..105
+ COMMAND_NAME@68..78 "\\paragraph"
+ CURLY_GROUP@78..92
+ L_CURLY@78..79 "{"
+ TEXT@79..90
+ WORD@79..88 "Paragraph"
+ WHITESPACE@88..89 " "
+ WORD@89..90 "2"
+ R_CURLY@90..91 "}"
+ LINE_BREAK@91..92 "\n"
+ TEXT@92..105
+ WORD@92..101 "Paragraph"
+ WHITESPACE@101..102 " "
+ WORD@102..103 "2"
+ LINE_BREAK@103..105 "\n\n"
+ SECTION@105..134
+ COMMAND_NAME@105..113 "\\section"
+ CURLY_GROUP@113..125
+ L_CURLY@113..114 "{"
+ TEXT@114..123
+ WORD@114..121 "Section"
+ WHITESPACE@121..122 " "
+ WORD@122..123 "2"
+ R_CURLY@123..124 "}"
+ LINE_BREAK@124..125 "\n"
+ TEXT@125..134
+ WORD@125..132 "Section"
+ WHITESPACE@132..133 " "
+ WORD@133..134 "2"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_structure_enum_item() {
+ check(
+ r#"\begin{enumerate} \item 1 \item[2] 2 \item 3 \end{enumerate}"#,
+ expect![[r#"
+ ROOT@0..60
+ PREAMBLE@0..60
+ ENVIRONMENT@0..60
+ BEGIN@0..18
+ COMMAND_NAME@0..6 "\\begin"
+ CURLY_GROUP_WORD@6..18
+ L_CURLY@6..7 "{"
+ KEY@7..16
+ WORD@7..16 "enumerate"
+ R_CURLY@16..17 "}"
+ WHITESPACE@17..18 " "
+ ENUM_ITEM@18..26
+ COMMAND_NAME@18..23 "\\item"
+ WHITESPACE@23..24 " "
+ TEXT@24..26
+ WORD@24..25 "1"
+ WHITESPACE@25..26 " "
+ ENUM_ITEM@26..37
+ COMMAND_NAME@26..31 "\\item"
+ BRACK_GROUP@31..35
+ L_BRACK@31..32 "["
+ TEXT@32..33
+ WORD@32..33 "2"
+ R_BRACK@33..34 "]"
+ WHITESPACE@34..35 " "
+ TEXT@35..37
+ WORD@35..36 "2"
+ WHITESPACE@36..37 " "
+ ENUM_ITEM@37..45
+ COMMAND_NAME@37..42 "\\item"
+ WHITESPACE@42..43 " "
+ TEXT@43..45
+ WORD@43..44 "3"
+ WHITESPACE@44..45 " "
+ END@45..60
+ COMMAND_NAME@45..49 "\\end"
+ CURLY_GROUP_WORD@49..60
+ L_CURLY@49..50 "{"
+ KEY@50..59
+ WORD@50..59 "enumerate"
+ R_CURLY@59..60 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_structure_invalid_nesting() {
+ check(
+ r#"\section{Foo} \chapter{Bar}"#,
+ expect![[r#"
+ ROOT@0..27
+ PREAMBLE@0..27
+ SECTION@0..14
+ COMMAND_NAME@0..8 "\\section"
+ CURLY_GROUP@8..14
+ L_CURLY@8..9 "{"
+ TEXT@9..12
+ WORD@9..12 "Foo"
+ R_CURLY@12..13 "}"
+ WHITESPACE@13..14 " "
+ CHAPTER@14..27
+ COMMAND_NAME@14..22 "\\chapter"
+ CURLY_GROUP@22..27
+ L_CURLY@22..23 "{"
+ TEXT@23..26
+ WORD@23..26 "Bar"
+ R_CURLY@26..27 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_structure_nested() {
+ check(
+ r#"\part{1}\chapter{2}\section{3}\subsection{4}\subsubsection{5}\paragraph{6}\subparagraph{7}"#,
+ expect![[r#"
+ ROOT@0..90
+ PREAMBLE@0..90
+ PART@0..90
+ COMMAND_NAME@0..5 "\\part"
+ CURLY_GROUP@5..8
+ L_CURLY@5..6 "{"
+ TEXT@6..7
+ WORD@6..7 "1"
+ R_CURLY@7..8 "}"
+ CHAPTER@8..90
+ COMMAND_NAME@8..16 "\\chapter"
+ CURLY_GROUP@16..19
+ L_CURLY@16..17 "{"
+ TEXT@17..18
+ WORD@17..18 "2"
+ R_CURLY@18..19 "}"
+ SECTION@19..90
+ COMMAND_NAME@19..27 "\\section"
+ CURLY_GROUP@27..30
+ L_CURLY@27..28 "{"
+ TEXT@28..29
+ WORD@28..29 "3"
+ R_CURLY@29..30 "}"
+ SUBSECTION@30..90
+ COMMAND_NAME@30..41 "\\subsection"
+ CURLY_GROUP@41..44
+ L_CURLY@41..42 "{"
+ TEXT@42..43
+ WORD@42..43 "4"
+ R_CURLY@43..44 "}"
+ SUBSUBSECTION@44..90
+ COMMAND_NAME@44..58 "\\subsubsection"
+ CURLY_GROUP@58..61
+ L_CURLY@58..59 "{"
+ TEXT@59..60
+ WORD@59..60 "5"
+ R_CURLY@60..61 "}"
+ PARAGRAPH@61..90
+ COMMAND_NAME@61..71 "\\paragraph"
+ CURLY_GROUP@71..74
+ L_CURLY@71..72 "{"
+ TEXT@72..73
+ WORD@72..73 "6"
+ R_CURLY@73..74 "}"
+ SUBPARAGRAPH@74..90
+ COMMAND_NAME@74..87 "\\subparagraph"
+ CURLY_GROUP@87..90
+ L_CURLY@87..88 "{"
+ TEXT@88..89
+ WORD@88..89 "7"
+ R_CURLY@89..90 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_structure_siblings() {
+ check(
+ r#"\section{Foo} Foo \section{Bar} Bar"#,
+ expect![[r#"
+ ROOT@0..35
+ PREAMBLE@0..35
+ SECTION@0..18
+ COMMAND_NAME@0..8 "\\section"
+ CURLY_GROUP@8..14
+ L_CURLY@8..9 "{"
+ TEXT@9..12
+ WORD@9..12 "Foo"
+ R_CURLY@12..13 "}"
+ WHITESPACE@13..14 " "
+ TEXT@14..18
+ WORD@14..17 "Foo"
+ WHITESPACE@17..18 " "
+ SECTION@18..35
+ COMMAND_NAME@18..26 "\\section"
+ CURLY_GROUP@26..32
+ L_CURLY@26..27 "{"
+ TEXT@27..30
+ WORD@27..30 "Bar"
+ R_CURLY@30..31 "}"
+ WHITESPACE@31..32 " "
+ TEXT@32..35
+ WORD@32..35 "Bar"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_theorem_definition_full() {
+ check(
+ r#"\newtheorem{foo}[bar]{Foo}[baz]"#,
+ expect![[r#"
+ ROOT@0..31
+ PREAMBLE@0..31
+ THEOREM_DEFINITION_AMSTHM@0..31
+ COMMAND_NAME@0..11 "\\newtheorem"
+ CURLY_GROUP_WORD@11..16
+ L_CURLY@11..12 "{"
+ KEY@12..15
+ WORD@12..15 "foo"
+ R_CURLY@15..16 "}"
+ BRACK_GROUP_WORD@16..21
+ L_BRACK@16..17 "["
+ KEY@17..20
+ WORD@17..20 "bar"
+ R_BRACK@20..21 "]"
+ CURLY_GROUP@21..26
+ L_CURLY@21..22 "{"
+ TEXT@22..25
+ WORD@22..25 "Foo"
+ R_CURLY@25..26 "}"
+ BRACK_GROUP_WORD@26..31
+ L_BRACK@26..27 "["
+ KEY@27..30
+ WORD@27..30 "baz"
+ R_BRACK@30..31 "]"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_theorem_definition_name_with_counter() {
+ check(
+ r#"\newtheorem{foo}[bar]"#,
+ expect![[r#"
+ ROOT@0..21
+ PREAMBLE@0..21
+ THEOREM_DEFINITION_AMSTHM@0..21
+ COMMAND_NAME@0..11 "\\newtheorem"
+ CURLY_GROUP_WORD@11..16
+ L_CURLY@11..12 "{"
+ KEY@12..15
+ WORD@12..15 "foo"
+ R_CURLY@15..16 "}"
+ BRACK_GROUP_WORD@16..21
+ L_BRACK@16..17 "["
+ KEY@17..20
+ WORD@17..20 "bar"
+ R_BRACK@20..21 "]"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_theorem_definition_name_with_description() {
+ check(
+ r#"\newtheorem{foo}{Foo}"#,
+ expect![[r#"
+ ROOT@0..21
+ PREAMBLE@0..21
+ THEOREM_DEFINITION_AMSTHM@0..21
+ COMMAND_NAME@0..11 "\\newtheorem"
+ CURLY_GROUP_WORD@11..16
+ L_CURLY@11..12 "{"
+ KEY@12..15
+ WORD@12..15 "foo"
+ R_CURLY@15..16 "}"
+ CURLY_GROUP@16..21
+ L_CURLY@16..17 "{"
+ TEXT@17..20
+ WORD@17..20 "Foo"
+ R_CURLY@20..21 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_theorem_definition_name_with_description_and_counter() {
+ check(
+ r#"\newtheorem{foo}[bar]{Foo}"#,
+ expect![[r#"
+ ROOT@0..26
+ PREAMBLE@0..26
+ THEOREM_DEFINITION_AMSTHM@0..26
+ COMMAND_NAME@0..11 "\\newtheorem"
+ CURLY_GROUP_WORD@11..16
+ L_CURLY@11..12 "{"
+ KEY@12..15
+ WORD@12..15 "foo"
+ R_CURLY@15..16 "}"
+ BRACK_GROUP_WORD@16..21
+ L_BRACK@16..17 "["
+ KEY@17..20
+ WORD@17..20 "bar"
+ R_BRACK@20..21 "]"
+ CURLY_GROUP@21..26
+ L_CURLY@21..22 "{"
+ TEXT@22..25
+ WORD@22..25 "Foo"
+ R_CURLY@25..26 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_theorem_definition_only_name() {
+ check(
+ r#"\newtheorem{foo}"#,
+ expect![[r#"
+ ROOT@0..16
+ PREAMBLE@0..16
+ THEOREM_DEFINITION_AMSTHM@0..16
+ COMMAND_NAME@0..11 "\\newtheorem"
+ CURLY_GROUP_WORD@11..16
+ L_CURLY@11..12 "{"
+ KEY@12..15
+ WORD@12..15 "foo"
+ R_CURLY@15..16 "}"
+
+ "#]],
+ );
+}
+
+#[test]
+fn test_theorem_definition_thmtools() {
+ check(
+ r#"\declaretheorem[style=foo, name=bar]{baz}"#,
+ expect![[r#"
+ ROOT@0..41
+ PREAMBLE@0..41
+ THEOREM_DEFINITION_THMTOOLS@0..41
+ COMMAND_NAME@0..15 "\\declaretheorem"
+ BRACK_GROUP_KEY_VALUE@15..36
+ L_BRACK@15..16 "["
+ KEY_VALUE_BODY@16..35
+ KEY_VALUE_PAIR@16..25
+ KEY@16..21
+ WORD@16..21 "style"
+ EQUALITY_SIGN@21..22 "="
+ VALUE@22..25
+ TEXT@22..25
+ WORD@22..25 "foo"
+ COMMA@25..26 ","
+ WHITESPACE@26..27 " "
+ KEY_VALUE_PAIR@27..35
+ KEY@27..31
+ WORD@27..31 "name"
+ EQUALITY_SIGN@31..32 "="
+ VALUE@32..35
+ TEXT@32..35
+ WORD@32..35 "bar"
+ R_BRACK@35..36 "]"
+ CURLY_GROUP_WORD@36..41
+ L_CURLY@36..37 "{"
+ KEY@37..40
+ WORD@37..40 "baz"
+ R_CURLY@40..41 "}"
+
+ "#]],
+ );
+}
diff --git a/support/texlab/crates/parser/src/latexmkrc.rs b/support/texlab/crates/parser/src/latexmkrc.rs
new file mode 100644
index 0000000000..63c92bd353
--- /dev/null
+++ b/support/texlab/crates/parser/src/latexmkrc.rs
@@ -0,0 +1,52 @@
+use syntax::latexmkrc::LatexmkrcData;
+use tempfile::tempdir;
+
+pub fn parse_latexmkrc(_input: &str) -> std::io::Result<LatexmkrcData> {
+ let temp_dir = tempdir()?;
+ let non_existent_tex = temp_dir.path().join("NONEXISTENT.tex");
+
+ // Run `latexmk -dir-report $TMPDIR/NONEXISTENT.tex` to obtain out_dir
+ // and aux_dir values. We pass nonexistent file to prevent latexmk from
+ // building anything, since we need this invocation only to extract the
+ // -dir-report variables.
+ //
+ // In the future, latexmk plans to implement -dir-report-only option and we
+ // won't have to resort to this hack with NONEXISTENT.tex.
+ let output = std::process::Command::new("latexmk")
+ .arg("-dir-report")
+ .arg(non_existent_tex)
+ .output()?;
+
+ let stderr = String::from_utf8_lossy(&output.stderr);
+
+ let (aux_dir, out_dir) = stderr.lines().find_map(extract_dirs).ok_or_else(|| {
+ std::io::Error::new(
+ std::io::ErrorKind::InvalidData,
+ "Normalized aux and out dir were not found in latexmk output",
+ )
+ })?;
+
+ Ok(LatexmkrcData {
+ aux_dir: Some(aux_dir),
+ out_dir: Some(out_dir),
+ })
+}
+
+/// Extracts $aux_dir and $out_dir from lines of the form
+///
+/// Latexmk: Normalized aux dir and out dir: '$aux_dir', '$out_dir'
+fn extract_dirs(line: &str) -> Option<(String, String)> {
+ let mut it = line
+ .strip_prefix("Latexmk: Normalized aux dir and out dir: ")?
+ .split(", ");
+
+ let aux_dir = it.next()?.strip_prefix('\'')?.strip_suffix('\'')?;
+ let out_dir = it.next()?.strip_prefix('\'')?.strip_suffix('\'')?;
+
+ // Ensure there's no more data
+ if it.next().is_some() {
+ return None;
+ }
+
+ Some((String::from(aux_dir), String::from(out_dir)))
+}
diff --git a/support/texlab/crates/parser/src/lib.rs b/support/texlab/crates/parser/src/lib.rs
index fab576a041..2a4190b7e2 100644
--- a/support/texlab/crates/parser/src/lib.rs
+++ b/support/texlab/crates/parser/src/lib.rs
@@ -2,5 +2,9 @@ mod bibtex;
mod build_log;
mod config;
mod latex;
+mod latexmkrc;
-pub use self::{bibtex::parse_bibtex, build_log::parse_build_log, config::*, latex::parse_latex};
+pub use self::{
+ bibtex::parse_bibtex, build_log::parse_build_log, config::*, latex::parse_latex,
+ latexmkrc::parse_latexmkrc,
+};
diff --git a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@comment.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@comment.txt.snap
deleted file mode 100644
index 7c665e628a..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@comment.txt.snap
+++ /dev/null
@@ -1,10 +0,0 @@
----
-source: crates/parser/src/bibtex.rs
-expression: root
-input_file: crates/parser/src/test_data/bibtex/comment.txt
----
-ROOT@0..82
- JUNK@0..16 "Some junk here\n\n"
- TYPE@16..24 "@comment"
- JUNK@24..82 "{foo,\n author = {F ..."
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@issue_809.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@issue_809.txt.snap
deleted file mode 100644
index 84c9f86ec0..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@issue_809.txt.snap
+++ /dev/null
@@ -1,32 +0,0 @@
----
-source: crates/parser/src/bibtex.rs
-expression: root
-input_file: crates/parser/src/test_data/bibtex/issue_809.txt
----
-ROOT@0..50
- ENTRY@0..50
- TYPE@0..8 "@article"
- L_DELIM@8..9 "{"
- NAME@9..18 "issue_809"
- COMMA@18..19 ","
- WHITESPACE@19..22 "\n "
- FIELD@22..48
- NAME@22..27 "title"
- WHITESPACE@27..28 " "
- EQ@28..29 "="
- WHITESPACE@29..30 " "
- CURLY_GROUP@30..47
- L_CURLY@30..31 "{"
- WORD@31..34 "foo"
- WHITESPACE@34..35 " "
- WORD@35..36 "("
- QUOTE@36..37 "\""
- WHITESPACE@37..38 " "
- WORD@38..42 "bar)"
- WHITESPACE@42..43 " "
- WORD@43..46 "baz"
- R_CURLY@46..47 "}"
- COMMA@47..48 ","
- WHITESPACE@48..49 "\n"
- R_DELIM@49..50 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@issue_945.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@issue_945.txt.snap
deleted file mode 100644
index 11a2955b1c..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@issue_945.txt.snap
+++ /dev/null
@@ -1,27 +0,0 @@
----
-source: crates/parser/src/bibtex.rs
-expression: root
-input_file: crates/parser/src/test_data/bibtex/issue_945.txt
----
-ROOT@0..33
- ENTRY@0..33
- TYPE@0..8 "@article"
- L_DELIM@8..9 "{"
- NAME@9..13 "test"
- COMMA@13..14 ","
- WHITESPACE@14..15 " "
- FIELD@15..32
- NAME@15..21 "author"
- WHITESPACE@21..22 " "
- EQ@22..23 "="
- WHITESPACE@23..24 " "
- CURLY_GROUP@24..32
- L_CURLY@24..25 "{"
- ACCENT@25..31
- ACCENT_NAME@25..27 "\\\""
- L_CURLY@27..28 "{"
- COMMAND_NAME@28..30 "\\i"
- R_CURLY@30..31 "}"
- R_CURLY@31..32 "}"
- R_DELIM@32..33 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@preamble.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@preamble.txt.snap
deleted file mode 100644
index b0d043b1a7..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@preamble.txt.snap
+++ /dev/null
@@ -1,17 +0,0 @@
----
-source: crates/parser/src/bibtex.rs
-expression: root
-input_file: crates/parser/src/test_data/bibtex/preamble.txt
----
-ROOT@0..25
- PREAMBLE@0..25
- TYPE@0..9 "@preamble"
- L_DELIM@9..10 "{"
- QUOTE_GROUP@10..24
- QUOTE@10..11 "\""
- WORD@11..16 "Hello"
- WHITESPACE@16..17 " "
- WORD@17..23 "World!"
- QUOTE@23..24 "\""
- R_DELIM@24..25 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__aho_2006.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__aho_2006.txt.snap
deleted file mode 100644
index 36db1ebb4c..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__aho_2006.txt.snap
+++ /dev/null
@@ -1,132 +0,0 @@
----
-source: crates/parser/src/bibtex.rs
-expression: root
-input_file: crates/parser/src/test_data/bibtex/samples/aho_2006.txt
----
-ROOT@0..314
- ENTRY@0..314
- TYPE@0..5 "@book"
- L_DELIM@5..6 "{"
- NAME@6..21 "10.5555/1177220"
- COMMA@21..22 ","
- WHITESPACE@22..27 "\n "
- FIELD@27..111
- NAME@27..33 "author"
- WHITESPACE@33..34 " "
- EQ@34..35 "="
- WHITESPACE@35..36 " "
- CURLY_GROUP@36..110
- L_CURLY@36..37 "{"
- WORD@37..40 "Aho"
- COMMA@40..41 ","
- WHITESPACE@41..42 " "
- WORD@42..48 "Alfred"
- WHITESPACE@48..49 " "
- WORD@49..51 "V."
- WHITESPACE@51..52 " "
- WORD@52..55 "and"
- WHITESPACE@55..56 " "
- WORD@56..59 "Lam"
- COMMA@59..60 ","
- WHITESPACE@60..61 " "
- WORD@61..67 "Monica"
- WHITESPACE@67..68 " "
- WORD@68..70 "S."
- WHITESPACE@70..71 " "
- WORD@71..74 "and"
- WHITESPACE@74..75 " "
- WORD@75..80 "Sethi"
- COMMA@80..81 ","
- WHITESPACE@81..82 " "
- WORD@82..86 "Ravi"
- WHITESPACE@86..87 " "
- WORD@87..90 "and"
- WHITESPACE@90..91 " "
- WORD@91..97 "Ullman"
- COMMA@97..98 ","
- WHITESPACE@98..99 " "
- WORD@99..106 "Jeffrey"
- WHITESPACE@106..107 " "
- WORD@107..109 "D."
- R_CURLY@109..110 "}"
- COMMA@110..111 ","
- WHITESPACE@111..116 "\n "
- FIELD@116..185
- NAME@116..121 "title"
- WHITESPACE@121..122 " "
- EQ@122..123 "="
- WHITESPACE@123..124 " "
- CURLY_GROUP@124..184
- L_CURLY@124..125 "{"
- WORD@125..135 "Compilers:"
- WHITESPACE@135..136 " "
- WORD@136..146 "Principles"
- COMMA@146..147 ","
- WHITESPACE@147..148 " "
- WORD@148..158 "Techniques"
- COMMA@158..159 ","
- WHITESPACE@159..160 " "
- WORD@160..163 "and"
- WHITESPACE@163..164 " "
- WORD@164..169 "Tools"
- WHITESPACE@169..170 " "
- WORD@170..174 "(2nd"
- WHITESPACE@174..175 " "
- WORD@175..183 "Edition)"
- R_CURLY@183..184 "}"
- COMMA@184..185 ","
- WHITESPACE@185..190 "\n "
- FIELD@190..204
- NAME@190..194 "year"
- WHITESPACE@194..195 " "
- EQ@195..196 "="
- WHITESPACE@196..197 " "
- CURLY_GROUP@197..203
- L_CURLY@197..198 "{"
- INTEGER@198..202 "2006"
- R_CURLY@202..203 "}"
- COMMA@203..204 ","
- WHITESPACE@204..209 "\n "
- FIELD@209..229
- NAME@209..213 "isbn"
- WHITESPACE@213..214 " "
- EQ@214..215 "="
- WHITESPACE@215..216 " "
- CURLY_GROUP@216..228
- L_CURLY@216..217 "{"
- INTEGER@217..227 "0321486811"
- R_CURLY@227..228 "}"
- COMMA@228..229 ","
- WHITESPACE@229..234 "\n "
- FIELD@234..292
- NAME@234..243 "publisher"
- WHITESPACE@243..244 " "
- EQ@244..245 "="
- WHITESPACE@245..246 " "
- CURLY_GROUP@246..291
- L_CURLY@246..247 "{"
- WORD@247..261 "Addison-Wesley"
- WHITESPACE@261..262 " "
- WORD@262..269 "Longman"
- WHITESPACE@269..270 " "
- WORD@270..280 "Publishing"
- WHITESPACE@280..281 " "
- WORD@281..284 "Co."
- COMMA@284..285 ","
- WHITESPACE@285..286 " "
- WORD@286..290 "Inc."
- R_CURLY@290..291 "}"
- COMMA@291..292 ","
- WHITESPACE@292..297 "\n "
- FIELD@297..313
- NAME@297..304 "address"
- WHITESPACE@304..305 " "
- EQ@305..306 "="
- WHITESPACE@306..307 " "
- CURLY_GROUP@307..312
- L_CURLY@307..308 "{"
- WORD@308..311 "USA"
- R_CURLY@311..312 "}"
- WHITESPACE@312..313 "\n"
- R_DELIM@313..314 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__aksin_2006.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__aksin_2006.txt.snap
deleted file mode 100644
index 6b273d63a2..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__aksin_2006.txt.snap
+++ /dev/null
@@ -1,258 +0,0 @@
----
-source: crates/parser/src/bibtex.rs
-expression: root
-input_file: crates/parser/src/test_data/bibtex/samples/aksin_2006.txt
----
-ROOT@0..679
- STRING@0..40
- TYPE@0..7 "@string"
- L_DELIM@7..8 "{"
- NAME@8..13 "jomch"
- WHITESPACE@13..16 " "
- EQ@16..17 "="
- WHITESPACE@17..18 " "
- CURLY_GROUP@18..39
- L_CURLY@18..19 "{"
- WORD@19..21 "J."
- NBSP@21..22 "~"
- WORD@22..32 "Organomet."
- WHITESPACE@32..33 " "
- WORD@33..38 "Chem."
- R_CURLY@38..39 "}"
- R_DELIM@39..40 "}"
- JUNK@40..42 "\n\n"
- ENTRY@42..679
- TYPE@42..50 "@article"
- L_DELIM@50..51 "{"
- NAME@51..56 "aksin"
- COMMA@56..57 ","
- WHITESPACE@57..62 "\n "
- FIELD@62..284
- NAME@62..68 "author"
- WHITESPACE@68..75 " "
- EQ@75..76 "="
- WHITESPACE@76..77 " "
- CURLY_GROUP@77..283
- L_CURLY@77..78 "{"
- WORD@78..81 "Aks"
- CURLY_GROUP@81..85
- L_CURLY@81..82 "{"
- COMMAND@82..84
- COMMAND_NAME@82..84 "\\i"
- R_CURLY@84..85 "}"
- WORD@85..86 "n"
- COMMA@86..87 ","
- WHITESPACE@87..88 " "
- CURLY_GROUP@88..93
- L_CURLY@88..89 "{"
- ACCENT@89..92
- ACCENT_NAME@89..91 "\\\""
- WORD@91..92 "O"
- R_CURLY@92..93 "}"
- WORD@93..96 "zge"
- WHITESPACE@96..97 " "
- WORD@97..100 "and"
- WHITESPACE@100..101 " "
- WORD@101..102 "T"
- CURLY_GROUP@102..107
- L_CURLY@102..103 "{"
- ACCENT@103..106
- ACCENT_NAME@103..105 "\\\""
- WORD@105..106 "u"
- R_CURLY@106..107 "}"
- WORD@107..112 "rkmen"
- COMMA@112..113 ","
- WHITESPACE@113..114 " "
- WORD@114..120 "Hayati"
- WHITESPACE@120..121 " "
- WORD@121..124 "and"
- WHITESPACE@124..125 " "
- WORD@125..130 "Artok"
- COMMA@130..131 ","
- WHITESPACE@131..132 " "
- WORD@132..138 "Levent"
- WHITESPACE@138..159 "\n "
- WORD@159..162 "and"
- WHITESPACE@162..163 " "
- CURLY_GROUP@163..170
- L_CURLY@163..164 "{"
- ACCENT@164..169
- ACCENT_NAME@164..166 "\\c"
- L_CURLY@166..167 "{"
- WORD@167..168 "C"
- R_CURLY@168..169 "}"
- R_CURLY@169..170 "}"
- WORD@170..178 "etinkaya"
- COMMA@178..179 ","
- WHITESPACE@179..180 " "
- WORD@180..185 "Bekir"
- WHITESPACE@185..186 " "
- WORD@186..189 "and"
- WHITESPACE@189..190 " "
- WORD@190..192 "Ni"
- COMMA@192..193 ","
- WHITESPACE@193..194 " "
- WORD@194..202 "Chaoying"
- WHITESPACE@202..203 " "
- WORD@203..206 "and"
- WHITESPACE@206..227 "\n "
- WORD@227..228 "B"
- CURLY_GROUP@228..233
- L_CURLY@228..229 "{"
- ACCENT@229..232
- ACCENT_NAME@229..231 "\\\""
- WORD@231..232 "u"
- R_CURLY@232..233 "}"
- WORD@233..234 "y"
- CURLY_GROUP@234..239
- L_CURLY@234..235 "{"
- ACCENT@235..238
- ACCENT_NAME@235..237 "\\\""
- WORD@237..238 "u"
- R_CURLY@238..239 "}"
- WORD@239..241 "kg"
- CURLY_GROUP@241..246
- L_CURLY@241..242 "{"
- ACCENT@242..245
- ACCENT_NAME@242..244 "\\\""
- WORD@244..245 "u"
- R_CURLY@245..246 "}"
- WORD@246..248 "ng"
- CURLY_GROUP@248..253
- L_CURLY@248..249 "{"
- ACCENT@249..252
- ACCENT_NAME@249..251 "\\\""
- WORD@251..252 "o"
- R_CURLY@252..253 "}"
- WORD@253..254 "r"
- COMMA@254..255 ","
- WHITESPACE@255..256 " "
- WORD@256..261 "Orhan"
- WHITESPACE@261..262 " "
- WORD@262..265 "and"
- WHITESPACE@265..266 " "
- CURLY_GROUP@266..271
- L_CURLY@266..267 "{"
- ACCENT@267..270
- ACCENT_NAME@267..269 "\\\""
- WORD@269..270 "O"
- R_CURLY@270..271 "}"
- WORD@271..275 "zkal"
- COMMA@275..276 ","
- WHITESPACE@276..277 " "
- WORD@277..282 "Erhan"
- R_CURLY@282..283 "}"
- COMMA@283..284 ","
- WHITESPACE@284..289 "\n "
- FIELD@289..471
- NAME@289..294 "title"
- WHITESPACE@294..302 " "
- EQ@302..303 "="
- WHITESPACE@303..304 " "
- CURLY_GROUP@304..470
- L_CURLY@304..305 "{"
- WORD@305..311 "Effect"
- WHITESPACE@311..312 " "
- WORD@312..314 "of"
- WHITESPACE@314..315 " "
- WORD@315..329 "immobilization"
- WHITESPACE@329..330 " "
- WORD@330..332 "on"
- WHITESPACE@332..333 " "
- WORD@333..342 "catalytic"
- WHITESPACE@342..343 " "
- WORD@343..358 "characteristics"
- WHITESPACE@358..359 " "
- WORD@359..361 "of"
- WHITESPACE@361..382 "\n "
- WORD@382..391 "saturated"
- WHITESPACE@391..392 " "
- CURLY_GROUP@392..398
- L_CURLY@392..393 "{"
- WORD@393..397 "Pd-N"
- R_CURLY@397..398 "}"
- WORD@398..411 "-heterocyclic"
- WHITESPACE@411..412 " "
- WORD@412..420 "carbenes"
- WHITESPACE@420..421 " "
- WORD@421..423 "in"
- WHITESPACE@423..424 " "
- CURLY_GROUP@424..439
- L_CURLY@424..425 "{"
- WORD@425..438 "Mizoroki-Heck"
- R_CURLY@438..439 "}"
- WHITESPACE@439..460 "\n "
- WORD@460..469 "reactions"
- R_CURLY@469..470 "}"
- COMMA@470..471 ","
- WHITESPACE@471..476 "\n "
- FIELD@476..497
- NAME@476..488 "journaltitle"
- WHITESPACE@488..489 " "
- EQ@489..490 "="
- WHITESPACE@490..491 " "
- LITERAL@491..496
- NAME@491..496 "jomch"
- COMMA@496..497 ","
- WHITESPACE@497..502 "\n "
- FIELD@502..522
- NAME@502..506 "date"
- WHITESPACE@506..515 " "
- EQ@515..516 "="
- WHITESPACE@516..517 " "
- LITERAL@517..521
- INTEGER@517..521 "2006"
- COMMA@521..522 ","
- WHITESPACE@522..527 "\n "
- FIELD@527..546
- NAME@527..533 "volume"
- WHITESPACE@533..540 " "
- EQ@540..541 "="
- WHITESPACE@541..542 " "
- LITERAL@542..545
- INTEGER@542..545 "691"
- COMMA@545..546 ","
- WHITESPACE@546..551 "\n "
- FIELD@551..569
- NAME@551..557 "number"
- WHITESPACE@557..564 " "
- EQ@564..565 "="
- WHITESPACE@565..566 " "
- LITERAL@566..568
- INTEGER@566..568 "13"
- COMMA@568..569 ","
- WHITESPACE@569..574 "\n "
- FIELD@574..601
- NAME@574..579 "pages"
- WHITESPACE@579..587 " "
- EQ@587..588 "="
- WHITESPACE@588..589 " "
- CURLY_GROUP@589..600
- L_CURLY@589..590 "{"
- WORD@590..599 "3027-3036"
- R_CURLY@599..600 "}"
- COMMA@600..601 ","
- WHITESPACE@601..606 "\n "
- FIELD@606..677
- NAME@606..616 "indextitle"
- WHITESPACE@616..619 " "
- EQ@619..620 "="
- WHITESPACE@620..621 " "
- CURLY_GROUP@621..676
- L_CURLY@621..622 "{"
- WORD@622..628 "Effect"
- WHITESPACE@628..629 " "
- WORD@629..631 "of"
- WHITESPACE@631..632 " "
- WORD@632..646 "immobilization"
- WHITESPACE@646..647 " "
- WORD@647..649 "on"
- WHITESPACE@649..650 " "
- WORD@650..659 "catalytic"
- WHITESPACE@659..660 " "
- WORD@660..675 "characteristics"
- R_CURLY@675..676 "}"
- COMMA@676..677 ","
- WHITESPACE@677..678 "\n"
- R_DELIM@678..679 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__almendro_1998.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__almendro_1998.txt.snap
deleted file mode 100644
index 280dd5a4cf..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__almendro_1998.txt.snap
+++ /dev/null
@@ -1,246 +0,0 @@
----
-source: crates/parser/src/bibtex.rs
-expression: root
-input_file: crates/parser/src/test_data/bibtex/samples/almendro_1998.txt
----
-ROOT@0..706
- ENTRY@0..706
- TYPE@0..7 "@patent"
- L_DELIM@7..8 "{"
- NAME@8..16 "almendro"
- COMMA@16..17 ","
- WHITESPACE@17..22 "\n "
- FIELD@22..150
- NAME@22..28 "author"
- WHITESPACE@28..35 " "
- EQ@35..36 "="
- WHITESPACE@36..37 " "
- CURLY_GROUP@37..149
- L_CURLY@37..38 "{"
- WORD@38..46 "Almendro"
- COMMA@46..47 ","
- WHITESPACE@47..48 " "
- WORD@48..51 "Jos"
- CURLY_GROUP@51..56
- L_CURLY@51..52 "{"
- ACCENT@52..55
- ACCENT_NAME@52..54 "\\'"
- WORD@54..55 "e"
- R_CURLY@55..56 "}"
- WHITESPACE@56..57 " "
- WORD@57..59 "L."
- WHITESPACE@59..60 " "
- WORD@60..63 "and"
- WHITESPACE@63..64 " "
- WORD@64..68 "Mart"
- CURLY_GROUP@68..73
- L_CURLY@68..69 "{"
- ACCENT@69..72
- ACCENT_NAME@69..71 "\\'"
- WORD@71..72 "i"
- R_CURLY@72..73 "}"
- WORD@73..74 "n"
- COMMA@74..75 ","
- WHITESPACE@75..76 " "
- WORD@76..83 "Jacinto"
- WHITESPACE@83..84 " "
- WORD@84..87 "and"
- WHITESPACE@87..88 " "
- WORD@88..89 "S"
- CURLY_GROUP@89..94
- L_CURLY@89..90 "{"
- ACCENT@90..93
- ACCENT_NAME@90..92 "\\'"
- WORD@92..93 "a"
- R_CURLY@93..94 "}"
- WORD@94..99 "nchez"
- COMMA@99..100 ","
- WHITESPACE@100..121 "\n "
- WORD@121..128 "Alberto"
- WHITESPACE@128..129 " "
- WORD@129..132 "and"
- WHITESPACE@132..133 " "
- WORD@133..138 "Nozal"
- COMMA@138..139 ","
- WHITESPACE@139..140 " "
- WORD@140..148 "Fernando"
- R_CURLY@148..149 "}"
- COMMA@149..150 ","
- WHITESPACE@150..155 "\n "
- FIELD@155..203
- NAME@155..160 "title"
- WHITESPACE@160..168 " "
- EQ@168..169 "="
- WHITESPACE@169..170 " "
- CURLY_GROUP@170..202
- L_CURLY@170..171 "{"
- WORD@171..190 "Elektromagnetisches"
- WHITESPACE@190..191 " "
- WORD@191..201 "Signalhorn"
- R_CURLY@201..202 "}"
- COMMA@202..203 ","
- WHITESPACE@203..208 "\n "
- FIELD@208..238
- NAME@208..214 "number"
- WHITESPACE@214..221 " "
- EQ@221..222 "="
- WHITESPACE@222..223 " "
- CURLY_GROUP@223..237
- L_CURLY@223..224 "{"
- WORD@224..236 "EU-29702195U"
- R_CURLY@236..237 "}"
- COMMA@237..238 ","
- WHITESPACE@238..243 "\n "
- FIELD@243..263
- NAME@243..247 "date"
- WHITESPACE@247..256 " "
- EQ@256..257 "="
- WHITESPACE@257..258 " "
- LITERAL@258..262
- INTEGER@258..262 "1998"
- COMMA@262..263 ","
- WHITESPACE@263..268 "\n "
- FIELD@268..323
- NAME@268..276 "location"
- WHITESPACE@276..281 " "
- EQ@281..282 "="
- WHITESPACE@282..283 " "
- CURLY_GROUP@283..322
- L_CURLY@283..284 "{"
- WORD@284..293 "countryfr"
- WHITESPACE@293..294 " "
- WORD@294..297 "and"
- WHITESPACE@297..298 " "
- WORD@298..307 "countryuk"
- WHITESPACE@307..308 " "
- WORD@308..311 "and"
- WHITESPACE@311..312 " "
- WORD@312..321 "countryde"
- R_CURLY@321..322 "}"
- COMMA@322..323 ","
- WHITESPACE@323..328 "\n "
- FIELD@328..352
- NAME@328..334 "langid"
- WHITESPACE@334..341 " "
- EQ@341..342 "="
- WHITESPACE@342..343 " "
- CURLY_GROUP@343..351
- L_CURLY@343..344 "{"
- WORD@344..350 "german"
- R_CURLY@350..351 "}"
- COMMA@351..352 ","
- WHITESPACE@352..357 "\n "
- FIELD@357..704
- NAME@357..367 "annotation"
- WHITESPACE@367..370 " "
- EQ@370..371 "="
- WHITESPACE@371..372 " "
- CURLY_GROUP@372..703
- L_CURLY@372..373 "{"
- WORD@373..377 "This"
- WHITESPACE@377..378 " "
- WORD@378..380 "is"
- WHITESPACE@380..381 " "
- WORD@381..382 "a"
- WHITESPACE@382..383 " "
- COMMAND@383..390
- COMMAND_NAME@383..390 "\\texttt"
- CURLY_GROUP@390..398
- L_CURLY@390..391 "{"
- WORD@391..397 "patent"
- R_CURLY@397..398 "}"
- WHITESPACE@398..399 " "
- WORD@399..404 "entry"
- WHITESPACE@404..405 " "
- WORD@405..409 "with"
- WHITESPACE@409..410 " "
- WORD@410..411 "a"
- WHITESPACE@411..412 " "
- COMMAND@412..419
- COMMAND_NAME@412..419 "\\texttt"
- CURLY_GROUP@419..429
- L_CURLY@419..420 "{"
- WORD@420..428 "location"
- R_CURLY@428..429 "}"
- WHITESPACE@429..450 "\n "
- WORD@450..456 "field."
- WHITESPACE@456..457 " "
- WORD@457..460 "The"
- WHITESPACE@460..461 " "
- WORD@461..467 "number"
- WHITESPACE@467..468 " "
- WORD@468..470 "is"
- WHITESPACE@470..471 " "
- WORD@471..476 "given"
- WHITESPACE@476..477 " "
- WORD@477..479 "in"
- WHITESPACE@479..480 " "
- WORD@480..483 "the"
- WHITESPACE@483..484 " "
- COMMAND@484..491
- COMMAND_NAME@484..491 "\\texttt"
- CURLY_GROUP@491..499
- L_CURLY@491..492 "{"
- WORD@492..498 "number"
- R_CURLY@498..499 "}"
- WHITESPACE@499..500 " "
- WORD@500..506 "field."
- WHITESPACE@506..507 " "
- WORD@507..511 "Note"
- WHITESPACE@511..532 "\n "
- WORD@532..535 "the"
- WHITESPACE@535..536 " "
- WORD@536..542 "format"
- WHITESPACE@542..543 " "
- WORD@543..545 "of"
- WHITESPACE@545..546 " "
- WORD@546..549 "the"
- WHITESPACE@549..550 " "
- COMMAND@550..557
- COMMAND_NAME@550..557 "\\texttt"
- CURLY_GROUP@557..567
- L_CURLY@557..558 "{"
- WORD@558..566 "location"
- R_CURLY@566..567 "}"
- WHITESPACE@567..568 " "
- WORD@568..573 "field"
- WHITESPACE@573..574 " "
- WORD@574..576 "in"
- WHITESPACE@576..577 " "
- WORD@577..580 "the"
- WHITESPACE@580..581 " "
- WORD@581..589 "database"
- WHITESPACE@589..610 "\n "
- WORD@610..615 "file."
- WHITESPACE@615..616 " "
- WORD@616..623 "Compare"
- WHITESPACE@623..624 " "
- COMMAND@624..631
- COMMAND_NAME@624..631 "\\texttt"
- CURLY_GROUP@631..643
- L_CURLY@631..632 "{"
- WORD@632..642 "laufenberg"
- R_CURLY@642..643 "}"
- COMMA@643..644 ","
- WHITESPACE@644..645 " "
- COMMAND@645..652
- COMMAND_NAME@645..652 "\\texttt"
- CURLY_GROUP@652..660
- L_CURLY@652..653 "{"
- WORD@653..659 "sorace"
- R_CURLY@659..660 "}"
- COMMA@660..661 ","
- WHITESPACE@661..662 " "
- WORD@662..665 "and"
- WHITESPACE@665..686 "\n "
- COMMAND@686..693
- COMMAND_NAME@686..693 "\\texttt"
- CURLY_GROUP@693..702
- L_CURLY@693..694 "{"
- WORD@694..701 "kowalik"
- R_CURLY@701..702 "}"
- R_CURLY@702..703 "}"
- COMMA@703..704 ","
- WHITESPACE@704..705 "\n"
- R_DELIM@705..706 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__averroes_1998.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__averroes_1998.txt.snap
deleted file mode 100644
index 8fb5a718d0..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__averroes_1998.txt.snap
+++ /dev/null
@@ -1,351 +0,0 @@
----
-source: crates/parser/src/bibtex.rs
-expression: root
-input_file: crates/parser/src/test_data/bibtex/samples/averroes_1998.txt
----
-ROOT@0..1008
- ENTRY@0..1008
- TYPE@0..5 "@book"
- L_DELIM@5..6 "{"
- NAME@6..20 "averroes/bland"
- COMMA@20..21 ","
- WHITESPACE@21..26 "\n "
- FIELD@26..52
- NAME@26..32 "author"
- WHITESPACE@32..39 " "
- EQ@39..40 "="
- WHITESPACE@40..41 " "
- CURLY_GROUP@41..51
- L_CURLY@41..42 "{"
- WORD@42..50 "Averroes"
- R_CURLY@50..51 "}"
- COMMA@51..52 ","
- WHITESPACE@52..57 "\n "
- FIELD@57..220
- NAME@57..62 "title"
- WHITESPACE@62..70 " "
- EQ@70..71 "="
- WHITESPACE@71..72 " "
- CURLY_GROUP@72..219
- L_CURLY@72..73 "{"
- WORD@73..76 "The"
- WHITESPACE@76..77 " "
- WORD@77..84 "Epistle"
- WHITESPACE@84..85 " "
- WORD@85..87 "on"
- WHITESPACE@87..88 " "
- WORD@88..91 "the"
- WHITESPACE@91..92 " "
- WORD@92..103 "Possibility"
- WHITESPACE@103..104 " "
- WORD@104..106 "of"
- WHITESPACE@106..107 " "
- WORD@107..118 "Conjunction"
- WHITESPACE@118..119 " "
- WORD@119..123 "with"
- WHITESPACE@123..124 " "
- WORD@124..127 "the"
- WHITESPACE@127..128 " "
- WORD@128..134 "Active"
- WHITESPACE@134..155 "\n "
- WORD@155..164 "Intellect"
- WHITESPACE@164..165 " "
- WORD@165..167 "by"
- WHITESPACE@167..168 " "
- CURLY_GROUP@168..179
- L_CURLY@168..169 "{"
- WORD@169..172 "Ibn"
- WHITESPACE@172..173 " "
- WORD@173..178 "Rushd"
- R_CURLY@178..179 "}"
- WHITESPACE@179..180 " "
- WORD@180..184 "with"
- WHITESPACE@184..185 " "
- WORD@185..188 "the"
- WHITESPACE@188..189 " "
- WORD@189..199 "Commentary"
- WHITESPACE@199..200 " "
- WORD@200..202 "of"
- WHITESPACE@202..203 " "
- CURLY_GROUP@203..218
- L_CURLY@203..204 "{"
- WORD@204..209 "Moses"
- WHITESPACE@209..210 " "
- WORD@210..217 "Narboni"
- R_CURLY@217..218 "}"
- R_CURLY@218..219 "}"
- COMMA@219..220 ","
- WHITESPACE@220..225 "\n "
- FIELD@225..245
- NAME@225..229 "date"
- WHITESPACE@229..238 " "
- EQ@238..239 "="
- WHITESPACE@239..240 " "
- LITERAL@240..244
- INTEGER@240..244 "1982"
- COMMA@244..245 ","
- WHITESPACE@245..250 "\n "
- FIELD@250..284
- NAME@250..256 "editor"
- WHITESPACE@256..263 " "
- EQ@263..264 "="
- WHITESPACE@264..265 " "
- CURLY_GROUP@265..283
- L_CURLY@265..266 "{"
- WORD@266..271 "Bland"
- COMMA@271..272 ","
- WHITESPACE@272..273 " "
- WORD@273..279 "Kalman"
- WHITESPACE@279..280 " "
- WORD@280..282 "P."
- R_CURLY@282..283 "}"
- COMMA@283..284 ","
- WHITESPACE@284..289 "\n "
- FIELD@289..323
- NAME@289..299 "translator"
- WHITESPACE@299..302 " "
- EQ@302..303 "="
- WHITESPACE@303..304 " "
- CURLY_GROUP@304..322
- L_CURLY@304..305 "{"
- WORD@305..310 "Bland"
- COMMA@310..311 ","
- WHITESPACE@311..312 " "
- WORD@312..318 "Kalman"
- WHITESPACE@318..319 " "
- WORD@319..321 "P."
- R_CURLY@321..322 "}"
- COMMA@322..323 ","
- WHITESPACE@323..328 "\n "
- FIELD@328..407
- NAME@328..334 "series"
- WHITESPACE@334..341 " "
- EQ@341..342 "="
- WHITESPACE@342..343 " "
- CURLY_GROUP@343..406
- L_CURLY@343..344 "{"
- WORD@344..353 "Moreshet:"
- WHITESPACE@353..354 " "
- WORD@354..361 "Studies"
- WHITESPACE@361..362 " "
- WORD@362..364 "in"
- WHITESPACE@364..365 " "
- CURLY_GROUP@365..373
- L_CURLY@365..366 "{"
- WORD@366..372 "Jewish"
- R_CURLY@372..373 "}"
- WHITESPACE@373..374 " "
- WORD@374..381 "History"
- COMMA@381..382 ","
- WHITESPACE@382..383 " "
- WORD@383..393 "Literature"
- WHITESPACE@393..394 " "
- WORD@394..397 "and"
- WHITESPACE@397..398 " "
- WORD@398..405 "Thought"
- R_CURLY@405..406 "}"
- COMMA@406..407 ","
- WHITESPACE@407..412 "\n "
- FIELD@412..429
- NAME@412..418 "number"
- WHITESPACE@418..425 " "
- EQ@425..426 "="
- WHITESPACE@426..427 " "
- LITERAL@427..428
- INTEGER@427..428 "7"
- COMMA@428..429 ","
- WHITESPACE@429..434 "\n "
- FIELD@434..490
- NAME@434..443 "publisher"
- WHITESPACE@443..447 " "
- EQ@447..448 "="
- WHITESPACE@448..449 " "
- CURLY_GROUP@449..489
- L_CURLY@449..450 "{"
- WORD@450..456 "Jewish"
- WHITESPACE@456..457 " "
- WORD@457..468 "Theological"
- WHITESPACE@468..469 " "
- WORD@469..477 "Seminary"
- WHITESPACE@477..478 " "
- WORD@478..480 "of"
- WHITESPACE@480..481 " "
- WORD@481..488 "America"
- R_CURLY@488..489 "}"
- COMMA@489..490 ","
- WHITESPACE@490..495 "\n "
- FIELD@495..521
- NAME@495..503 "location"
- WHITESPACE@503..508 " "
- EQ@508..509 "="
- WHITESPACE@509..510 " "
- CURLY_GROUP@510..520
- L_CURLY@510..511 "{"
- WORD@511..514 "New"
- WHITESPACE@514..515 " "
- WORD@515..519 "York"
- R_CURLY@519..520 "}"
- COMMA@520..521 ","
- WHITESPACE@521..526 "\n "
- FIELD@526..551
- NAME@526..534 "keywords"
- WHITESPACE@534..539 " "
- EQ@539..540 "="
- WHITESPACE@540..541 " "
- CURLY_GROUP@541..550
- L_CURLY@541..542 "{"
- WORD@542..549 "primary"
- R_CURLY@549..550 "}"
- COMMA@550..551 ","
- WHITESPACE@551..556 "\n "
- FIELD@556..581
- NAME@556..562 "langid"
- WHITESPACE@562..569 " "
- EQ@569..570 "="
- WHITESPACE@570..571 " "
- CURLY_GROUP@571..580
- L_CURLY@571..572 "{"
- WORD@572..579 "english"
- R_CURLY@579..580 "}"
- COMMA@580..581 ","
- WHITESPACE@581..586 "\n "
- FIELD@586..620
- NAME@586..596 "langidopts"
- WHITESPACE@596..599 " "
- EQ@599..600 "="
- WHITESPACE@600..601 " "
- CURLY_GROUP@601..619
- L_CURLY@601..602 "{"
- WORD@602..618 "variant=american"
- R_CURLY@618..619 "}"
- COMMA@619..620 ","
- WHITESPACE@620..625 "\n "
- FIELD@625..689
- NAME@625..635 "indextitle"
- WHITESPACE@635..638 " "
- EQ@638..639 "="
- WHITESPACE@639..640 " "
- CURLY_GROUP@640..688
- L_CURLY@640..641 "{"
- WORD@641..648 "Epistle"
- WHITESPACE@648..649 " "
- WORD@649..651 "on"
- WHITESPACE@651..652 " "
- WORD@652..655 "the"
- WHITESPACE@655..656 " "
- WORD@656..667 "Possibility"
- WHITESPACE@667..668 " "
- WORD@668..670 "of"
- WHITESPACE@670..671 " "
- WORD@671..682 "Conjunction"
- COMMA@682..683 ","
- WHITESPACE@683..684 " "
- WORD@684..687 "The"
- R_CURLY@687..688 "}"
- COMMA@688..689 ","
- WHITESPACE@689..694 "\n "
- FIELD@694..738
- NAME@694..704 "shorttitle"
- WHITESPACE@704..707 " "
- EQ@707..708 "="
- WHITESPACE@708..709 " "
- CURLY_GROUP@709..737
- L_CURLY@709..710 "{"
- WORD@710..721 "Possibility"
- WHITESPACE@721..722 " "
- WORD@722..724 "of"
- WHITESPACE@724..725 " "
- WORD@725..736 "Conjunction"
- R_CURLY@736..737 "}"
- COMMA@737..738 ","
- WHITESPACE@738..743 "\n "
- FIELD@743..1006
- NAME@743..753 "annotation"
- WHITESPACE@753..756 " "
- EQ@756..757 "="
- WHITESPACE@757..758 " "
- CURLY_GROUP@758..1005
- L_CURLY@758..759 "{"
- WORD@759..760 "A"
- WHITESPACE@760..761 " "
- COMMAND@761..768
- COMMAND_NAME@761..768 "\\texttt"
- CURLY_GROUP@768..774
- L_CURLY@768..769 "{"
- WORD@769..773 "book"
- R_CURLY@773..774 "}"
- WHITESPACE@774..775 " "
- WORD@775..780 "entry"
- WHITESPACE@780..781 " "
- WORD@781..785 "with"
- WHITESPACE@785..786 " "
- WORD@786..787 "a"
- WHITESPACE@787..788 " "
- COMMAND@788..795
- COMMAND_NAME@788..795 "\\texttt"
- CURLY_GROUP@795..803
- L_CURLY@795..796 "{"
- WORD@796..802 "series"
- R_CURLY@802..803 "}"
- WHITESPACE@803..804 " "
- WORD@804..807 "and"
- WHITESPACE@807..808 " "
- WORD@808..809 "a"
- WHITESPACE@809..830 "\n "
- COMMAND@830..837
- COMMAND_NAME@830..837 "\\texttt"
- CURLY_GROUP@837..845
- L_CURLY@837..838 "{"
- WORD@838..844 "number"
- R_CURLY@844..845 "}"
- WORD@845..846 "."
- WHITESPACE@846..847 " "
- WORD@847..851 "Note"
- WHITESPACE@851..852 " "
- WORD@852..855 "the"
- WHITESPACE@855..856 " "
- WORD@856..869 "concatenation"
- WHITESPACE@869..870 " "
- WORD@870..872 "of"
- WHITESPACE@872..873 " "
- WORD@873..876 "the"
- WHITESPACE@876..877 " "
- COMMAND@877..884
- COMMAND_NAME@877..884 "\\texttt"
- CURLY_GROUP@884..892
- L_CURLY@884..885 "{"
- WORD@885..891 "editor"
- R_CURLY@891..892 "}"
- WHITESPACE@892..913 "\n "
- WORD@913..916 "and"
- WHITESPACE@916..917 " "
- COMMAND@917..924
- COMMAND_NAME@917..924 "\\texttt"
- CURLY_GROUP@924..936
- L_CURLY@924..925 "{"
- WORD@925..935 "translator"
- R_CURLY@935..936 "}"
- WHITESPACE@936..937 " "
- WORD@937..943 "fields"
- WHITESPACE@943..944 " "
- WORD@944..946 "as"
- WHITESPACE@946..947 " "
- WORD@947..951 "well"
- WHITESPACE@951..952 " "
- WORD@952..954 "as"
- WHITESPACE@954..955 " "
- WORD@955..958 "the"
- WHITESPACE@958..979 "\n "
- COMMAND@979..986
- COMMAND_NAME@979..986 "\\texttt"
- CURLY_GROUP@986..998
- L_CURLY@986..987 "{"
- WORD@987..997 "indextitle"
- R_CURLY@997..998 "}"
- WHITESPACE@998..999 " "
- WORD@999..1004 "field"
- R_CURLY@1004..1005 "}"
- COMMA@1005..1006 ","
- WHITESPACE@1006..1007 "\n"
- R_DELIM@1007..1008 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__betram_1996.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__betram_1996.txt.snap
deleted file mode 100644
index 417041cde4..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__betram_1996.txt.snap
+++ /dev/null
@@ -1,208 +0,0 @@
----
-source: crates/parser/src/bibtex.rs
-expression: root
-input_file: crates/parser/src/test_data/bibtex/samples/betram_1996.txt
----
-ROOT@0..556
- STRING@0..40
- TYPE@0..7 "@string"
- L_DELIM@7..8 "{"
- NAME@8..12 "jams"
- WHITESPACE@12..16 " "
- EQ@16..17 "="
- WHITESPACE@17..18 " "
- CURLY_GROUP@18..39
- L_CURLY@18..19 "{"
- WORD@19..21 "J."
- NBSP@21..22 "~"
- WORD@22..27 "Amer."
- WHITESPACE@27..28 " "
- WORD@28..33 "Math."
- WHITESPACE@33..34 " "
- WORD@34..38 "Soc."
- R_CURLY@38..39 "}"
- R_DELIM@39..40 "}"
- JUNK@40..42 "\n\n"
- ENTRY@42..556
- TYPE@42..50 "@article"
- L_DELIM@50..51 "{"
- NAME@51..58 "bertram"
- COMMA@58..59 ","
- WHITESPACE@59..64 "\n "
- FIELD@64..119
- NAME@64..70 "author"
- WHITESPACE@70..77 " "
- EQ@77..78 "="
- WHITESPACE@78..79 " "
- CURLY_GROUP@79..118
- L_CURLY@79..80 "{"
- WORD@80..87 "Bertram"
- COMMA@87..88 ","
- WHITESPACE@88..89 " "
- WORD@89..94 "Aaron"
- WHITESPACE@94..95 " "
- WORD@95..98 "and"
- WHITESPACE@98..99 " "
- WORD@99..108 "Wentworth"
- COMMA@108..109 ","
- WHITESPACE@109..110 " "
- WORD@110..117 "Richard"
- R_CURLY@117..118 "}"
- COMMA@118..119 ","
- WHITESPACE@119..124 "\n "
- FIELD@124..202
- NAME@124..129 "title"
- WHITESPACE@129..137 " "
- EQ@137..138 "="
- WHITESPACE@138..139 " "
- CURLY_GROUP@139..201
- L_CURLY@139..140 "{"
- WORD@140..146 "Gromov"
- WHITESPACE@146..147 " "
- WORD@147..157 "invariants"
- WHITESPACE@157..158 " "
- WORD@158..161 "for"
- WHITESPACE@161..162 " "
- WORD@162..173 "holomorphic"
- WHITESPACE@173..174 " "
- WORD@174..178 "maps"
- WHITESPACE@178..179 " "
- WORD@179..181 "on"
- WHITESPACE@181..182 " "
- CURLY_GROUP@182..191
- L_CURLY@182..183 "{"
- WORD@183..190 "Riemann"
- R_CURLY@190..191 "}"
- WHITESPACE@191..192 " "
- WORD@192..200 "surfaces"
- R_CURLY@200..201 "}"
- COMMA@201..202 ","
- WHITESPACE@202..207 "\n "
- FIELD@207..227
- NAME@207..219 "journaltitle"
- WHITESPACE@219..220 " "
- EQ@220..221 "="
- WHITESPACE@221..222 " "
- LITERAL@222..226
- NAME@222..226 "jams"
- COMMA@226..227 ","
- WHITESPACE@227..232 "\n "
- FIELD@232..252
- NAME@232..236 "date"
- WHITESPACE@236..245 " "
- EQ@245..246 "="
- WHITESPACE@246..247 " "
- LITERAL@247..251
- INTEGER@247..251 "1996"
- COMMA@251..252 ","
- WHITESPACE@252..257 "\n "
- FIELD@257..274
- NAME@257..263 "volume"
- WHITESPACE@263..270 " "
- EQ@270..271 "="
- WHITESPACE@271..272 " "
- LITERAL@272..273
- INTEGER@272..273 "9"
- COMMA@273..274 ","
- WHITESPACE@274..279 "\n "
- FIELD@279..296
- NAME@279..285 "number"
- WHITESPACE@285..292 " "
- EQ@292..293 "="
- WHITESPACE@293..294 " "
- LITERAL@294..295
- INTEGER@294..295 "2"
- COMMA@295..296 ","
- WHITESPACE@296..301 "\n "
- FIELD@301..326
- NAME@301..306 "pages"
- WHITESPACE@306..314 " "
- EQ@314..315 "="
- WHITESPACE@315..316 " "
- CURLY_GROUP@316..325
- L_CURLY@316..317 "{"
- WORD@317..324 "529-571"
- R_CURLY@324..325 "}"
- COMMA@325..326 ","
- WHITESPACE@326..331 "\n "
- FIELD@331..356
- NAME@331..337 "langid"
- WHITESPACE@337..344 " "
- EQ@344..345 "="
- WHITESPACE@345..346 " "
- CURLY_GROUP@346..355
- L_CURLY@346..347 "{"
- WORD@347..354 "english"
- R_CURLY@354..355 "}"
- COMMA@355..356 ","
- WHITESPACE@356..361 "\n "
- FIELD@361..395
- NAME@361..371 "langidopts"
- WHITESPACE@371..374 " "
- EQ@374..375 "="
- WHITESPACE@375..376 " "
- CURLY_GROUP@376..394
- L_CURLY@376..377 "{"
- WORD@377..393 "variant=american"
- R_CURLY@393..394 "}"
- COMMA@394..395 ","
- WHITESPACE@395..400 "\n "
- FIELD@400..435
- NAME@400..410 "shorttitle"
- WHITESPACE@410..413 " "
- EQ@413..414 "="
- WHITESPACE@414..415 " "
- CURLY_GROUP@415..434
- L_CURLY@415..416 "{"
- WORD@416..422 "Gromov"
- WHITESPACE@422..423 " "
- WORD@423..433 "invariants"
- R_CURLY@433..434 "}"
- COMMA@434..435 ","
- WHITESPACE@435..440 "\n "
- FIELD@440..554
- NAME@440..450 "annotation"
- WHITESPACE@450..453 " "
- EQ@453..454 "="
- WHITESPACE@454..455 " "
- CURLY_GROUP@455..553
- L_CURLY@455..456 "{"
- WORD@456..458 "An"
- WHITESPACE@458..459 " "
- COMMAND@459..466
- COMMAND_NAME@459..466 "\\texttt"
- CURLY_GROUP@466..475
- L_CURLY@466..467 "{"
- WORD@467..474 "article"
- R_CURLY@474..475 "}"
- WHITESPACE@475..476 " "
- WORD@476..481 "entry"
- WHITESPACE@481..482 " "
- WORD@482..486 "with"
- WHITESPACE@486..487 " "
- WORD@487..488 "a"
- WHITESPACE@488..489 " "
- COMMAND@489..496
- COMMAND_NAME@489..496 "\\texttt"
- CURLY_GROUP@496..504
- L_CURLY@496..497 "{"
- WORD@497..503 "volume"
- R_CURLY@503..504 "}"
- WHITESPACE@504..505 " "
- WORD@505..508 "and"
- WHITESPACE@508..509 " "
- WORD@509..510 "a"
- WHITESPACE@510..531 "\n "
- COMMAND@531..538
- COMMAND_NAME@531..538 "\\texttt"
- CURLY_GROUP@538..546
- L_CURLY@538..539 "{"
- WORD@539..545 "number"
- R_CURLY@545..546 "}"
- WHITESPACE@546..547 " "
- WORD@547..552 "field"
- R_CURLY@552..553 "}"
- COMMA@553..554 ","
- WHITESPACE@554..555 "\n"
- R_DELIM@555..556 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__blom_2021.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__blom_2021.txt.snap
deleted file mode 100644
index 86ee736c2b..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__blom_2021.txt.snap
+++ /dev/null
@@ -1,223 +0,0 @@
----
-source: crates/parser/src/bibtex.rs
-expression: root
-input_file: crates/parser/src/test_data/bibtex/samples/blom_2021.txt
----
-ROOT@0..860
- ENTRY@0..860
- TYPE@0..8 "@article"
- L_DELIM@8..9 "{"
- NAME@9..42 "DBLP:journals/corr/ab ..."
- COMMA@42..43 ","
- WHITESPACE@43..48 "\n "
- FIELD@48..322
- NAME@48..54 "author"
- WHITESPACE@54..58 " "
- EQ@58..59 "="
- WHITESPACE@59..60 " "
- CURLY_GROUP@60..321
- L_CURLY@60..61 "{"
- WORD@61..69 "Michelle"
- WHITESPACE@69..70 " "
- WORD@70..72 "L."
- WHITESPACE@72..73 " "
- WORD@73..77 "Blom"
- WHITESPACE@77..78 " "
- WORD@78..81 "and"
- WHITESPACE@81..102 "\n "
- WORD@102..109 "Jurlind"
- WHITESPACE@109..110 " "
- WORD@110..119 "Budurushi"
- WHITESPACE@119..120 " "
- WORD@120..123 "and"
- WHITESPACE@123..144 "\n "
- WORD@144..150 "Ronald"
- WHITESPACE@150..151 " "
- WORD@151..153 "L."
- WHITESPACE@153..154 " "
- WORD@154..160 "Rivest"
- WHITESPACE@160..161 " "
- WORD@161..164 "and"
- WHITESPACE@164..185 "\n "
- WORD@185..191 "Philip"
- WHITESPACE@191..192 " "
- WORD@192..194 "B."
- WHITESPACE@194..195 " "
- WORD@195..200 "Stark"
- WHITESPACE@200..201 " "
- WORD@201..204 "and"
- WHITESPACE@204..225 "\n "
- WORD@225..230 "Peter"
- WHITESPACE@230..231 " "
- WORD@231..233 "J."
- WHITESPACE@233..234 " "
- WORD@234..241 "Stuckey"
- WHITESPACE@241..242 " "
- WORD@242..245 "and"
- WHITESPACE@245..266 "\n "
- WORD@266..273 "Vanessa"
- WHITESPACE@273..274 " "
- WORD@274..280 "Teague"
- WHITESPACE@280..281 " "
- WORD@281..284 "and"
- WHITESPACE@284..305 "\n "
- WORD@305..311 "Damjan"
- WHITESPACE@311..312 " "
- WORD@312..320 "Vukcevic"
- R_CURLY@320..321 "}"
- COMMA@321..322 ","
- WHITESPACE@322..327 "\n "
- FIELD@327..473
- NAME@327..332 "title"
- WHITESPACE@332..337 " "
- EQ@337..338 "="
- WHITESPACE@338..339 " "
- CURLY_GROUP@339..472
- L_CURLY@339..340 "{"
- WORD@340..355 "Assertion-based"
- WHITESPACE@355..356 " "
- WORD@356..366 "Approaches"
- WHITESPACE@366..367 " "
- WORD@367..369 "to"
- WHITESPACE@369..370 " "
- WORD@370..378 "Auditing"
- WHITESPACE@378..379 " "
- WORD@379..386 "Complex"
- WHITESPACE@386..387 " "
- WORD@387..396 "Elections"
- COMMA@396..397 ","
- WHITESPACE@397..398 " "
- WORD@398..402 "with"
- WHITESPACE@402..403 " "
- WORD@403..414 "application"
- WHITESPACE@414..435 "\n "
- WORD@435..437 "to"
- WHITESPACE@437..438 " "
- WORD@438..448 "party-list"
- WHITESPACE@448..449 " "
- WORD@449..461 "proportional"
- WHITESPACE@461..462 " "
- WORD@462..471 "elections"
- R_CURLY@471..472 "}"
- COMMA@472..473 ","
- WHITESPACE@473..478 "\n "
- FIELD@478..497
- NAME@478..485 "journal"
- WHITESPACE@485..488 " "
- EQ@488..489 "="
- WHITESPACE@489..490 " "
- CURLY_GROUP@490..496
- L_CURLY@490..491 "{"
- WORD@491..495 "CoRR"
- R_CURLY@495..496 "}"
- COMMA@496..497 ","
- WHITESPACE@497..502 "\n "
- FIELD@502..531
- NAME@502..508 "volume"
- WHITESPACE@508..512 " "
- EQ@512..513 "="
- WHITESPACE@513..514 " "
- CURLY_GROUP@514..530
- L_CURLY@514..515 "{"
- WORD@515..529 "abs/2107.11903"
- R_CURLY@529..530 "}"
- COMMA@530..531 ","
- WHITESPACE@531..536 "\n "
- FIELD@536..555
- NAME@536..540 "year"
- WHITESPACE@540..546 " "
- EQ@546..547 "="
- WHITESPACE@547..548 " "
- CURLY_GROUP@548..554
- L_CURLY@548..549 "{"
- INTEGER@549..553 "2021"
- R_CURLY@553..554 "}"
- COMMA@554..555 ","
- WHITESPACE@555..560 "\n "
- FIELD@560..607
- NAME@560..563 "url"
- WHITESPACE@563..570 " "
- EQ@570..571 "="
- WHITESPACE@571..572 " "
- CURLY_GROUP@572..606
- L_CURLY@572..573 "{"
- WORD@573..605 "https://arxiv.org/abs ..."
- R_CURLY@605..606 "}"
- COMMA@606..607 ","
- WHITESPACE@607..612 "\n "
- FIELD@612..633
- NAME@612..622 "eprinttype"
- WHITESPACE@622..623 " "
- EQ@623..624 "="
- WHITESPACE@624..625 " "
- CURLY_GROUP@625..632
- L_CURLY@625..626 "{"
- WORD@626..631 "arXiv"
- R_CURLY@631..632 "}"
- COMMA@632..633 ","
- WHITESPACE@633..638 "\n "
- FIELD@638..663
- NAME@638..644 "eprint"
- WHITESPACE@644..648 " "
- EQ@648..649 "="
- WHITESPACE@649..650 " "
- CURLY_GROUP@650..662
- L_CURLY@650..651 "{"
- WORD@651..661 "2107.11903"
- R_CURLY@661..662 "}"
- COMMA@662..663 ","
- WHITESPACE@663..668 "\n "
- FIELD@668..714
- NAME@668..677 "timestamp"
- WHITESPACE@677..678 " "
- EQ@678..679 "="
- WHITESPACE@679..680 " "
- CURLY_GROUP@680..713
- L_CURLY@680..681 "{"
- WORD@681..684 "Thu"
- COMMA@684..685 ","
- WHITESPACE@685..686 " "
- INTEGER@686..688 "29"
- WHITESPACE@688..689 " "
- WORD@689..692 "Jul"
- WHITESPACE@692..693 " "
- INTEGER@693..697 "2021"
- WHITESPACE@697..698 " "
- WORD@698..706 "16:14:15"
- WHITESPACE@706..707 " "
- WORD@707..712 "+0200"
- R_CURLY@712..713 "}"
- COMMA@713..714 ","
- WHITESPACE@714..719 "\n "
- FIELD@719..787
- NAME@719..725 "biburl"
- WHITESPACE@725..729 " "
- EQ@729..730 "="
- WHITESPACE@730..731 " "
- CURLY_GROUP@731..786
- L_CURLY@731..732 "{"
- WORD@732..785 "https://dblp.org/rec/ ..."
- R_CURLY@785..786 "}"
- COMMA@786..787 ","
- WHITESPACE@787..792 "\n "
- FIELD@792..859
- NAME@792..801 "bibsource"
- WHITESPACE@801..802 " "
- EQ@802..803 "="
- WHITESPACE@803..804 " "
- CURLY_GROUP@804..858
- L_CURLY@804..805 "{"
- WORD@805..809 "dblp"
- WHITESPACE@809..810 " "
- WORD@810..818 "computer"
- WHITESPACE@818..819 " "
- WORD@819..826 "science"
- WHITESPACE@826..827 " "
- WORD@827..839 "bibliography"
- COMMA@839..840 ","
- WHITESPACE@840..841 " "
- WORD@841..857 "https://dblp.org"
- R_CURLY@857..858 "}"
- WHITESPACE@858..859 "\n"
- R_DELIM@859..860 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__combi_2004.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__combi_2004.txt.snap
deleted file mode 100644
index d633886ced..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__combi_2004.txt.snap
+++ /dev/null
@@ -1,251 +0,0 @@
----
-source: crates/parser/src/bibtex.rs
-expression: root
-input_file: crates/parser/src/test_data/bibtex/samples/combi_2004.txt
----
-ROOT@0..674
- ENTRY@0..674
- TYPE@0..14 "@inproceedings"
- L_DELIM@14..15 "{"
- NAME@15..36 "10.1145/967900.968040"
- COMMA@36..37 ","
- WHITESPACE@37..42 "\n "
- FIELD@42..86
- NAME@42..48 "author"
- WHITESPACE@48..49 " "
- EQ@49..50 "="
- WHITESPACE@50..51 " "
- CURLY_GROUP@51..85
- L_CURLY@51..52 "{"
- WORD@52..57 "Combi"
- COMMA@57..58 ","
- WHITESPACE@58..59 " "
- WORD@59..64 "Carlo"
- WHITESPACE@64..65 " "
- WORD@65..68 "and"
- WHITESPACE@68..69 " "
- WORD@69..74 "Pozzi"
- COMMA@74..75 ","
- WHITESPACE@75..76 " "
- WORD@76..84 "Giuseppe"
- R_CURLY@84..85 "}"
- COMMA@85..86 ","
- WHITESPACE@86..91 "\n "
- FIELD@91..157
- NAME@91..96 "title"
- WHITESPACE@96..97 " "
- EQ@97..98 "="
- WHITESPACE@98..99 " "
- CURLY_GROUP@99..156
- L_CURLY@99..100 "{"
- WORD@100..113 "Architectures"
- WHITESPACE@113..114 " "
- WORD@114..117 "for"
- WHITESPACE@117..118 " "
- WORD@118..119 "a"
- WHITESPACE@119..120 " "
- WORD@120..128 "Temporal"
- WHITESPACE@128..129 " "
- WORD@129..137 "Workflow"
- WHITESPACE@137..138 " "
- WORD@138..148 "Management"
- WHITESPACE@148..149 " "
- WORD@149..155 "System"
- R_CURLY@155..156 "}"
- COMMA@156..157 ","
- WHITESPACE@157..162 "\n "
- FIELD@162..176
- NAME@162..166 "year"
- WHITESPACE@166..167 " "
- EQ@167..168 "="
- WHITESPACE@168..169 " "
- CURLY_GROUP@169..175
- L_CURLY@169..170 "{"
- INTEGER@170..174 "2004"
- R_CURLY@174..175 "}"
- COMMA@175..176 ","
- WHITESPACE@176..181 "\n "
- FIELD@181..201
- NAME@181..185 "isbn"
- WHITESPACE@185..186 " "
- EQ@186..187 "="
- WHITESPACE@187..188 " "
- CURLY_GROUP@188..200
- L_CURLY@188..189 "{"
- INTEGER@189..199 "1581138121"
- R_CURLY@199..200 "}"
- COMMA@200..201 ","
- WHITESPACE@201..206 "\n "
- FIELD@206..256
- NAME@206..215 "publisher"
- WHITESPACE@215..216 " "
- EQ@216..217 "="
- WHITESPACE@217..218 " "
- CURLY_GROUP@218..255
- L_CURLY@218..219 "{"
- WORD@219..230 "Association"
- WHITESPACE@230..231 " "
- WORD@231..234 "for"
- WHITESPACE@234..235 " "
- WORD@235..244 "Computing"
- WHITESPACE@244..245 " "
- WORD@245..254 "Machinery"
- R_CURLY@254..255 "}"
- COMMA@255..256 ","
- WHITESPACE@256..261 "\n "
- FIELD@261..291
- NAME@261..268 "address"
- WHITESPACE@268..269 " "
- EQ@269..270 "="
- WHITESPACE@270..271 " "
- CURLY_GROUP@271..290
- L_CURLY@271..272 "{"
- WORD@272..275 "New"
- WHITESPACE@275..276 " "
- WORD@276..280 "York"
- COMMA@280..281 ","
- WHITESPACE@281..282 " "
- WORD@282..284 "NY"
- COMMA@284..285 ","
- WHITESPACE@285..286 " "
- WORD@286..289 "USA"
- R_CURLY@289..290 "}"
- COMMA@290..291 ","
- WHITESPACE@291..296 "\n "
- FIELD@296..342
- NAME@296..299 "url"
- WHITESPACE@299..300 " "
- EQ@300..301 "="
- WHITESPACE@301..302 " "
- CURLY_GROUP@302..341
- L_CURLY@302..303 "{"
- WORD@303..340 "https://doi.org/10.11 ..."
- R_CURLY@340..341 "}"
- COMMA@341..342 ","
- WHITESPACE@342..347 "\n "
- FIELD@347..377
- NAME@347..350 "doi"
- WHITESPACE@350..351 " "
- EQ@351..352 "="
- WHITESPACE@352..353 " "
- CURLY_GROUP@353..376
- L_CURLY@353..354 "{"
- WORD@354..375 "10.1145/967900.968040"
- R_CURLY@375..376 "}"
- COMMA@376..377 ","
- WHITESPACE@377..382 "\n "
- FIELD@382..455
- NAME@382..391 "booktitle"
- WHITESPACE@391..392 " "
- EQ@392..393 "="
- WHITESPACE@393..394 " "
- CURLY_GROUP@394..454
- L_CURLY@394..395 "{"
- WORD@395..406 "Proceedings"
- WHITESPACE@406..407 " "
- WORD@407..409 "of"
- WHITESPACE@409..410 " "
- WORD@410..413 "the"
- WHITESPACE@413..414 " "
- INTEGER@414..418 "2004"
- WHITESPACE@418..419 " "
- WORD@419..422 "ACM"
- WHITESPACE@422..423 " "
- WORD@423..432 "Symposium"
- WHITESPACE@432..433 " "
- WORD@433..435 "on"
- WHITESPACE@435..436 " "
- WORD@436..443 "Applied"
- WHITESPACE@443..444 " "
- WORD@444..453 "Computing"
- R_CURLY@453..454 "}"
- COMMA@454..455 ","
- WHITESPACE@455..460 "\n "
- FIELD@460..478
- NAME@460..465 "pages"
- WHITESPACE@465..466 " "
- EQ@466..467 "="
- WHITESPACE@467..468 " "
- CURLY_GROUP@468..477
- L_CURLY@468..469 "{"
- WORD@469..476 "659-666"
- R_CURLY@476..477 "}"
- COMMA@477..478 ","
- WHITESPACE@478..483 "\n "
- FIELD@483..498
- NAME@483..491 "numpages"
- WHITESPACE@491..492 " "
- EQ@492..493 "="
- WHITESPACE@493..494 " "
- CURLY_GROUP@494..497
- L_CURLY@494..495 "{"
- INTEGER@495..496 "8"
- R_CURLY@496..497 "}"
- COMMA@497..498 ","
- WHITESPACE@498..503 "\n "
- FIELD@503..615
- NAME@503..511 "keywords"
- WHITESPACE@511..512 " "
- EQ@512..513 "="
- WHITESPACE@513..514 " "
- CURLY_GROUP@514..614
- L_CURLY@514..515 "{"
- WORD@515..521 "active"
- WHITESPACE@521..522 " "
- WORD@522..526 "DBMS"
- COMMA@526..527 ","
- WHITESPACE@527..528 " "
- WORD@528..536 "temporal"
- WHITESPACE@536..537 " "
- WORD@537..541 "DBMS"
- COMMA@541..542 ","
- WHITESPACE@542..543 " "
- WORD@543..551 "workflow"
- WHITESPACE@551..552 " "
- WORD@552..562 "management"
- WHITESPACE@562..563 " "
- WORD@563..569 "system"
- WHITESPACE@569..570 " "
- WORD@570..571 "-"
- WHITESPACE@571..572 " "
- WORD@572..576 "WfMS"
- COMMA@576..577 ","
- WHITESPACE@577..578 " "
- WORD@578..586 "temporal"
- WHITESPACE@586..587 " "
- WORD@587..595 "workflow"
- WHITESPACE@595..596 " "
- WORD@596..606 "management"
- WHITESPACE@606..607 " "
- WORD@607..613 "system"
- R_CURLY@613..614 "}"
- COMMA@614..615 ","
- WHITESPACE@615..620 "\n "
- FIELD@620..649
- NAME@620..628 "location"
- WHITESPACE@628..629 " "
- EQ@629..630 "="
- WHITESPACE@630..631 " "
- CURLY_GROUP@631..648
- L_CURLY@631..632 "{"
- WORD@632..639 "Nicosia"
- COMMA@639..640 ","
- WHITESPACE@640..641 " "
- WORD@641..647 "Cyprus"
- R_CURLY@647..648 "}"
- COMMA@648..649 ","
- WHITESPACE@649..654 "\n "
- FIELD@654..673
- NAME@654..660 "series"
- WHITESPACE@660..661 " "
- EQ@661..662 "="
- WHITESPACE@662..663 " "
- CURLY_GROUP@663..672
- L_CURLY@663..664 "{"
- WORD@664..667 "SAC"
- WHITESPACE@667..668 " "
- WORD@668..671 "'04"
- R_CURLY@671..672 "}"
- WHITESPACE@672..673 "\n"
- R_DELIM@673..674 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__erwin_2007.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__erwin_2007.txt.snap
deleted file mode 100644
index 2275d58d08..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__erwin_2007.txt.snap
+++ /dev/null
@@ -1,239 +0,0 @@
----
-source: crates/parser/src/bibtex.rs
-expression: root
-input_file: crates/parser/src/test_data/bibtex/samples/erwin_2007.txt
----
-ROOT@0..615
- ENTRY@0..615
- TYPE@0..14 "@inproceedings"
- L_DELIM@14..15 "{"
- NAME@15..38 "10.5555/1386993.1386994"
- COMMA@38..39 ","
- WHITESPACE@39..44 "\n "
- FIELD@44..107
- NAME@44..50 "author"
- WHITESPACE@50..51 " "
- EQ@51..52 "="
- WHITESPACE@52..53 " "
- CURLY_GROUP@53..106
- L_CURLY@53..54 "{"
- WORD@54..59 "Erwin"
- COMMA@59..60 ","
- WHITESPACE@60..61 " "
- WORD@61..65 "Alva"
- WHITESPACE@65..66 " "
- WORD@66..69 "and"
- WHITESPACE@69..70 " "
- WORD@70..77 "Gopalan"
- COMMA@77..78 ","
- WHITESPACE@78..79 " "
- WORD@79..82 "Raj"
- WHITESPACE@82..83 " "
- WORD@83..85 "P."
- WHITESPACE@85..86 " "
- WORD@86..89 "and"
- WHITESPACE@89..90 " "
- WORD@90..98 "Achuthan"
- COMMA@98..99 ","
- WHITESPACE@99..100 " "
- WORD@100..102 "N."
- WHITESPACE@102..103 " "
- WORD@103..105 "R."
- R_CURLY@105..106 "}"
- COMMA@106..107 ","
- WHITESPACE@107..112 "\n "
- FIELD@112..194
- NAME@112..117 "title"
- WHITESPACE@117..118 " "
- EQ@118..119 "="
- WHITESPACE@119..120 " "
- CURLY_GROUP@120..193
- L_CURLY@120..121 "{"
- WORD@121..122 "A"
- WHITESPACE@122..123 " "
- WORD@123..132 "Bottom-up"
- WHITESPACE@132..133 " "
- WORD@133..143 "Projection"
- WHITESPACE@143..144 " "
- WORD@144..149 "Based"
- WHITESPACE@149..150 " "
- WORD@150..159 "Algorithm"
- WHITESPACE@159..160 " "
- WORD@160..163 "for"
- WHITESPACE@163..164 " "
- WORD@164..170 "Mining"
- WHITESPACE@170..171 " "
- WORD@171..175 "High"
- WHITESPACE@175..176 " "
- WORD@176..183 "Utility"
- WHITESPACE@183..184 " "
- WORD@184..192 "Itemsets"
- R_CURLY@192..193 "}"
- COMMA@193..194 ","
- WHITESPACE@194..199 "\n "
- FIELD@199..213
- NAME@199..203 "year"
- WHITESPACE@203..204 " "
- EQ@204..205 "="
- WHITESPACE@205..206 " "
- CURLY_GROUP@206..212
- L_CURLY@206..207 "{"
- INTEGER@207..211 "2007"
- R_CURLY@211..212 "}"
- COMMA@212..213 ","
- WHITESPACE@213..218 "\n "
- FIELD@218..241
- NAME@218..222 "isbn"
- WHITESPACE@222..223 " "
- EQ@223..224 "="
- WHITESPACE@224..225 " "
- CURLY_GROUP@225..240
- L_CURLY@225..226 "{"
- INTEGER@226..239 "9781920682651"
- R_CURLY@239..240 "}"
- COMMA@240..241 ","
- WHITESPACE@241..246 "\n "
- FIELD@246..294
- NAME@246..255 "publisher"
- WHITESPACE@255..256 " "
- EQ@256..257 "="
- WHITESPACE@257..258 " "
- CURLY_GROUP@258..293
- L_CURLY@258..259 "{"
- WORD@259..269 "Australian"
- WHITESPACE@269..270 " "
- WORD@270..278 "Computer"
- WHITESPACE@278..279 " "
- WORD@279..286 "Society"
- COMMA@286..287 ","
- WHITESPACE@287..288 " "
- WORD@288..292 "Inc."
- R_CURLY@292..293 "}"
- COMMA@293..294 ","
- WHITESPACE@294..299 "\n "
- FIELD@299..315
- NAME@299..306 "address"
- WHITESPACE@306..307 " "
- EQ@307..308 "="
- WHITESPACE@308..309 " "
- CURLY_GROUP@309..314
- L_CURLY@309..310 "{"
- WORD@310..313 "AUS"
- R_CURLY@313..314 "}"
- COMMA@314..315 ","
- WHITESPACE@315..320 "\n "
- FIELD@320..447
- NAME@320..329 "booktitle"
- WHITESPACE@329..330 " "
- EQ@330..331 "="
- WHITESPACE@331..332 " "
- CURLY_GROUP@332..446
- L_CURLY@332..333 "{"
- WORD@333..344 "Proceedings"
- WHITESPACE@344..345 " "
- WORD@345..347 "of"
- WHITESPACE@347..348 " "
- WORD@348..351 "the"
- WHITESPACE@351..352 " "
- WORD@352..355 "2nd"
- WHITESPACE@355..356 " "
- WORD@356..369 "International"
- WHITESPACE@369..370 " "
- WORD@370..378 "Workshop"
- WHITESPACE@378..379 " "
- WORD@379..381 "on"
- WHITESPACE@381..382 " "
- WORD@382..393 "Integrating"
- WHITESPACE@393..394 " "
- WORD@394..404 "Artificial"
- WHITESPACE@404..405 " "
- WORD@405..417 "Intelligence"
- WHITESPACE@417..418 " "
- WORD@418..421 "and"
- WHITESPACE@421..422 " "
- WORD@422..426 "Data"
- WHITESPACE@426..427 " "
- WORD@427..433 "Mining"
- WHITESPACE@433..434 " "
- WORD@434..435 "-"
- WHITESPACE@435..436 " "
- WORD@436..442 "Volume"
- WHITESPACE@442..443 " "
- INTEGER@443..445 "84"
- R_CURLY@445..446 "}"
- COMMA@446..447 ","
- WHITESPACE@447..452 "\n "
- FIELD@452..467
- NAME@452..457 "pages"
- WHITESPACE@457..458 " "
- EQ@458..459 "="
- WHITESPACE@459..460 " "
- CURLY_GROUP@460..466
- L_CURLY@460..461 "{"
- WORD@461..465 "3-11"
- R_CURLY@465..466 "}"
- COMMA@466..467 ","
- WHITESPACE@467..472 "\n "
- FIELD@472..487
- NAME@472..480 "numpages"
- WHITESPACE@480..481 " "
- EQ@481..482 "="
- WHITESPACE@482..483 " "
- CURLY_GROUP@483..486
- L_CURLY@483..484 "{"
- INTEGER@484..485 "9"
- R_CURLY@485..486 "}"
- COMMA@486..487 ","
- WHITESPACE@487..492 "\n "
- FIELD@492..549
- NAME@492..500 "keywords"
- WHITESPACE@500..501 " "
- EQ@501..502 "="
- WHITESPACE@502..503 " "
- CURLY_GROUP@503..548
- L_CURLY@503..504 "{"
- WORD@504..511 "pattern"
- WHITESPACE@511..512 " "
- WORD@512..518 "growth"
- COMMA@518..519 ","
- WHITESPACE@519..520 " "
- WORD@520..524 "high"
- WHITESPACE@524..525 " "
- WORD@525..532 "utility"
- WHITESPACE@532..533 " "
- WORD@533..540 "itemset"
- WHITESPACE@540..541 " "
- WORD@541..547 "mining"
- R_CURLY@547..548 "}"
- COMMA@548..549 ","
- WHITESPACE@549..554 "\n "
- FIELD@554..589
- NAME@554..562 "location"
- WHITESPACE@562..563 " "
- EQ@563..564 "="
- WHITESPACE@564..565 " "
- CURLY_GROUP@565..588
- L_CURLY@565..566 "{"
- WORD@566..570 "Gold"
- WHITESPACE@570..571 " "
- WORD@571..576 "Coast"
- COMMA@576..577 ","
- WHITESPACE@577..578 " "
- WORD@578..587 "Australia"
- R_CURLY@587..588 "}"
- COMMA@588..589 ","
- WHITESPACE@589..594 "\n "
- FIELD@594..614
- NAME@594..600 "series"
- WHITESPACE@600..601 " "
- EQ@601..602 "="
- WHITESPACE@602..603 " "
- CURLY_GROUP@603..613
- L_CURLY@603..604 "{"
- WORD@604..608 "AIDM"
- WHITESPACE@608..609 " "
- WORD@609..612 "'07"
- R_CURLY@612..613 "}"
- WHITESPACE@613..614 "\n"
- R_DELIM@614..615 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__jain_1999.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__jain_1999.txt.snap
deleted file mode 100644
index d409435d09..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__jain_1999.txt.snap
+++ /dev/null
@@ -1,267 +0,0 @@
----
-source: crates/parser/src/bibtex.rs
-expression: root
-input_file: crates/parser/src/test_data/bibtex/samples/jain_1999.txt
----
-ROOT@0..674
- ENTRY@0..674
- TYPE@0..8 "@article"
- L_DELIM@8..9 "{"
- NAME@9..30 "10.1145/331499.331504"
- COMMA@30..31 ","
- WHITESPACE@31..36 "\n "
- FIELD@36..93
- NAME@36..42 "author"
- WHITESPACE@42..43 " "
- EQ@43..44 "="
- WHITESPACE@44..45 " "
- CURLY_GROUP@45..92
- L_CURLY@45..46 "{"
- WORD@46..50 "Jain"
- COMMA@50..51 ","
- WHITESPACE@51..52 " "
- WORD@52..54 "A."
- WHITESPACE@54..55 " "
- WORD@55..57 "K."
- WHITESPACE@57..58 " "
- WORD@58..61 "and"
- WHITESPACE@61..62 " "
- WORD@62..67 "Murty"
- COMMA@67..68 ","
- WHITESPACE@68..69 " "
- WORD@69..71 "M."
- WHITESPACE@71..72 " "
- WORD@72..74 "N."
- WHITESPACE@74..75 " "
- WORD@75..78 "and"
- WHITESPACE@78..79 " "
- WORD@79..84 "Flynn"
- COMMA@84..85 ","
- WHITESPACE@85..86 " "
- WORD@86..88 "P."
- WHITESPACE@88..89 " "
- WORD@89..91 "J."
- R_CURLY@91..92 "}"
- COMMA@92..93 ","
- WHITESPACE@93..98 "\n "
- FIELD@98..134
- NAME@98..103 "title"
- WHITESPACE@103..104 " "
- EQ@104..105 "="
- WHITESPACE@105..106 " "
- CURLY_GROUP@106..133
- L_CURLY@106..107 "{"
- WORD@107..111 "Data"
- WHITESPACE@111..112 " "
- WORD@112..123 "Clustering:"
- WHITESPACE@123..124 " "
- WORD@124..125 "A"
- WHITESPACE@125..126 " "
- WORD@126..132 "Review"
- R_CURLY@132..133 "}"
- COMMA@133..134 ","
- WHITESPACE@134..139 "\n "
- FIELD@139..153
- NAME@139..143 "year"
- WHITESPACE@143..144 " "
- EQ@144..145 "="
- WHITESPACE@145..146 " "
- CURLY_GROUP@146..152
- L_CURLY@146..147 "{"
- INTEGER@147..151 "1999"
- R_CURLY@151..152 "}"
- COMMA@152..153 ","
- WHITESPACE@153..158 "\n "
- FIELD@158..184
- NAME@158..168 "issue_date"
- WHITESPACE@168..169 " "
- EQ@169..170 "="
- WHITESPACE@170..171 " "
- CURLY_GROUP@171..183
- L_CURLY@171..172 "{"
- WORD@172..177 "Sept."
- WHITESPACE@177..178 " "
- INTEGER@178..182 "1999"
- R_CURLY@182..183 "}"
- COMMA@183..184 ","
- WHITESPACE@184..189 "\n "
- FIELD@189..239
- NAME@189..198 "publisher"
- WHITESPACE@198..199 " "
- EQ@199..200 "="
- WHITESPACE@200..201 " "
- CURLY_GROUP@201..238
- L_CURLY@201..202 "{"
- WORD@202..213 "Association"
- WHITESPACE@213..214 " "
- WORD@214..217 "for"
- WHITESPACE@217..218 " "
- WORD@218..227 "Computing"
- WHITESPACE@227..228 " "
- WORD@228..237 "Machinery"
- R_CURLY@237..238 "}"
- COMMA@238..239 ","
- WHITESPACE@239..244 "\n "
- FIELD@244..274
- NAME@244..251 "address"
- WHITESPACE@251..252 " "
- EQ@252..253 "="
- WHITESPACE@253..254 " "
- CURLY_GROUP@254..273
- L_CURLY@254..255 "{"
- WORD@255..258 "New"
- WHITESPACE@258..259 " "
- WORD@259..263 "York"
- COMMA@263..264 ","
- WHITESPACE@264..265 " "
- WORD@265..267 "NY"
- COMMA@267..268 ","
- WHITESPACE@268..269 " "
- WORD@269..272 "USA"
- R_CURLY@272..273 "}"
- COMMA@273..274 ","
- WHITESPACE@274..279 "\n "
- FIELD@279..293
- NAME@279..285 "volume"
- WHITESPACE@285..286 " "
- EQ@286..287 "="
- WHITESPACE@287..288 " "
- CURLY_GROUP@288..292
- L_CURLY@288..289 "{"
- INTEGER@289..291 "31"
- R_CURLY@291..292 "}"
- COMMA@292..293 ","
- WHITESPACE@293..298 "\n "
- FIELD@298..311
- NAME@298..304 "number"
- WHITESPACE@304..305 " "
- EQ@305..306 "="
- WHITESPACE@306..307 " "
- CURLY_GROUP@307..310
- L_CURLY@307..308 "{"
- INTEGER@308..309 "3"
- R_CURLY@309..310 "}"
- COMMA@310..311 ","
- WHITESPACE@311..316 "\n "
- FIELD@316..335
- NAME@316..320 "issn"
- WHITESPACE@320..321 " "
- EQ@321..322 "="
- WHITESPACE@322..323 " "
- CURLY_GROUP@323..334
- L_CURLY@323..324 "{"
- WORD@324..333 "0360-0300"
- R_CURLY@333..334 "}"
- COMMA@334..335 ","
- WHITESPACE@335..340 "\n "
- FIELD@340..386
- NAME@340..343 "url"
- WHITESPACE@343..344 " "
- EQ@344..345 "="
- WHITESPACE@345..346 " "
- CURLY_GROUP@346..385
- L_CURLY@346..347 "{"
- WORD@347..384 "https://doi.org/10.11 ..."
- R_CURLY@384..385 "}"
- COMMA@385..386 ","
- WHITESPACE@386..391 "\n "
- FIELD@391..421
- NAME@391..394 "doi"
- WHITESPACE@394..395 " "
- EQ@395..396 "="
- WHITESPACE@396..397 " "
- CURLY_GROUP@397..420
- L_CURLY@397..398 "{"
- WORD@398..419 "10.1145/331499.331504"
- R_CURLY@419..420 "}"
- COMMA@420..421 ","
- WHITESPACE@421..426 "\n "
- FIELD@426..456
- NAME@426..433 "journal"
- WHITESPACE@433..434 " "
- EQ@434..435 "="
- WHITESPACE@435..436 " "
- CURLY_GROUP@436..455
- L_CURLY@436..437 "{"
- WORD@437..440 "ACM"
- WHITESPACE@440..441 " "
- WORD@441..448 "Comput."
- WHITESPACE@448..449 " "
- WORD@449..454 "Surv."
- R_CURLY@454..455 "}"
- COMMA@455..456 ","
- WHITESPACE@456..461 "\n "
- FIELD@461..475
- NAME@461..466 "month"
- WHITESPACE@466..467 " "
- EQ@467..468 "="
- WHITESPACE@468..469 " "
- CURLY_GROUP@469..474
- L_CURLY@469..470 "{"
- WORD@470..473 "sep"
- R_CURLY@473..474 "}"
- COMMA@474..475 ","
- WHITESPACE@475..480 "\n "
- FIELD@480..498
- NAME@480..485 "pages"
- WHITESPACE@485..486 " "
- EQ@486..487 "="
- WHITESPACE@487..488 " "
- CURLY_GROUP@488..497
- L_CURLY@488..489 "{"
- WORD@489..496 "264-323"
- R_CURLY@496..497 "}"
- COMMA@497..498 ","
- WHITESPACE@498..503 "\n "
- FIELD@503..519
- NAME@503..511 "numpages"
- WHITESPACE@511..512 " "
- EQ@512..513 "="
- WHITESPACE@513..514 " "
- CURLY_GROUP@514..518
- L_CURLY@514..515 "{"
- INTEGER@515..517 "60"
- R_CURLY@517..518 "}"
- COMMA@518..519 ","
- WHITESPACE@519..524 "\n "
- FIELD@524..673
- NAME@524..532 "keywords"
- WHITESPACE@532..533 " "
- EQ@533..534 "="
- WHITESPACE@534..535 " "
- CURLY_GROUP@535..672
- L_CURLY@535..536 "{"
- WORD@536..547 "incremental"
- WHITESPACE@547..548 " "
- WORD@548..558 "clustering"
- COMMA@558..559 ","
- WHITESPACE@559..560 " "
- WORD@560..570 "clustering"
- WHITESPACE@570..571 " "
- WORD@571..583 "applications"
- COMMA@583..584 ","
- WHITESPACE@584..585 " "
- WORD@585..596 "exploratory"
- WHITESPACE@596..597 " "
- WORD@597..601 "data"
- WHITESPACE@601..602 " "
- WORD@602..610 "analysis"
- COMMA@610..611 ","
- WHITESPACE@611..612 " "
- WORD@612..619 "cluster"
- WHITESPACE@619..620 " "
- WORD@620..628 "analysis"
- COMMA@628..629 ","
- WHITESPACE@629..630 " "
- WORD@630..640 "similarity"
- WHITESPACE@640..641 " "
- WORD@641..648 "indices"
- COMMA@648..649 ","
- WHITESPACE@649..650 " "
- WORD@650..662 "unsupervised"
- WHITESPACE@662..663 " "
- WORD@663..671 "learning"
- R_CURLY@671..672 "}"
- WHITESPACE@672..673 "\n"
- R_DELIM@673..674 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__kastenholz_2006.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__kastenholz_2006.txt.snap
deleted file mode 100644
index e93f8ce6cb..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__kastenholz_2006.txt.snap
+++ /dev/null
@@ -1,302 +0,0 @@
----
-source: crates/parser/src/bibtex.rs
-expression: root
-input_file: crates/parser/src/test_data/bibtex/samples/kastenholz_2006.txt
----
-ROOT@0..898
- STRING@0..35
- TYPE@0..7 "@string"
- L_DELIM@7..8 "{"
- NAME@8..13 "jchph"
- WHITESPACE@13..16 " "
- EQ@16..17 "="
- WHITESPACE@17..18 " "
- CURLY_GROUP@18..34
- L_CURLY@18..19 "{"
- WORD@19..21 "J."
- NBSP@21..22 "~"
- WORD@22..27 "Chem."
- WHITESPACE@27..28 " "
- WORD@28..33 "Phys."
- R_CURLY@33..34 "}"
- R_DELIM@34..35 "}"
- JUNK@35..37 "\n\n"
- ENTRY@37..898
- TYPE@37..45 "@article"
- L_DELIM@45..46 "{"
- NAME@46..56 "kastenholz"
- COMMA@56..57 ","
- WHITESPACE@57..62 "\n "
- FIELD@62..130
- NAME@62..68 "author"
- WHITESPACE@68..75 " "
- EQ@75..76 "="
- WHITESPACE@76..77 " "
- CURLY_GROUP@77..129
- L_CURLY@77..78 "{"
- WORD@78..88 "Kastenholz"
- COMMA@88..89 ","
- WHITESPACE@89..90 " "
- WORD@90..92 "M."
- WHITESPACE@92..93 " "
- WORD@93..95 "A."
- WHITESPACE@95..96 " "
- WORD@96..99 "and"
- WHITESPACE@99..100 " "
- WORD@100..101 "H"
- CURLY_GROUP@101..106
- L_CURLY@101..102 "{"
- ACCENT@102..105
- ACCENT_NAME@102..104 "\\\""
- WORD@104..105 "u"
- R_CURLY@105..106 "}"
- WORD@106..115 "nenberger"
- COMMA@115..116 ","
- WHITESPACE@116..117 " "
- WORD@117..125 "Philippe"
- WHITESPACE@125..126 " "
- WORD@126..128 "H."
- R_CURLY@128..129 "}"
- COMMA@129..130 ","
- WHITESPACE@130..135 "\n "
- FIELD@135..275
- NAME@135..140 "title"
- WHITESPACE@140..148 " "
- EQ@148..149 "="
- WHITESPACE@149..150 " "
- CURLY_GROUP@150..274
- L_CURLY@150..151 "{"
- WORD@151..162 "Computation"
- WHITESPACE@162..163 " "
- WORD@163..165 "of"
- WHITESPACE@165..166 " "
- WORD@166..177 "methodology"
- COMMAND@177..184
- COMMAND_NAME@177..184 "\\hyphen"
- WHITESPACE@184..185 " "
- WORD@185..196 "independent"
- WHITESPACE@196..197 " "
- WORD@197..202 "ionic"
- WHITESPACE@202..203 " "
- WORD@203..212 "solvation"
- WHITESPACE@212..233 "\n "
- WORD@233..237 "free"
- WHITESPACE@237..238 " "
- WORD@238..246 "energies"
- WHITESPACE@246..247 " "
- WORD@247..251 "from"
- WHITESPACE@251..252 " "
- WORD@252..261 "molecular"
- WHITESPACE@261..262 " "
- WORD@262..273 "simulations"
- R_CURLY@273..274 "}"
- COMMA@274..275 ","
- WHITESPACE@275..280 "\n "
- FIELD@280..301
- NAME@280..292 "journaltitle"
- WHITESPACE@292..293 " "
- EQ@293..294 "="
- WHITESPACE@294..295 " "
- LITERAL@295..300
- NAME@295..300 "jchph"
- COMMA@300..301 ","
- WHITESPACE@301..306 "\n "
- FIELD@306..326
- NAME@306..310 "date"
- WHITESPACE@310..319 " "
- EQ@319..320 "="
- WHITESPACE@320..321 " "
- LITERAL@321..325
- INTEGER@321..325 "2006"
- COMMA@325..326 ","
- WHITESPACE@326..331 "\n "
- FIELD@331..404
- NAME@331..339 "subtitle"
- WHITESPACE@339..344 " "
- EQ@344..345 "="
- WHITESPACE@345..346 " "
- CURLY_GROUP@346..403
- L_CURLY@346..347 "{"
- CURLY_GROUP@347..350
- L_CURLY@347..348 "{"
- WORD@348..349 "I"
- R_CURLY@349..350 "}"
- WORD@350..351 "."
- WHITESPACE@351..352 " "
- CURLY_GROUP@352..357
- L_CURLY@352..353 "{"
- WORD@353..356 "The"
- R_CURLY@356..357 "}"
- WHITESPACE@357..358 " "
- WORD@358..371 "electrostatic"
- WHITESPACE@371..372 " "
- WORD@372..381 "potential"
- WHITESPACE@381..382 " "
- WORD@382..384 "in"
- WHITESPACE@384..385 " "
- WORD@385..394 "molecular"
- WHITESPACE@394..395 " "
- WORD@395..402 "liquids"
- R_CURLY@402..403 "}"
- COMMA@403..404 ","
- WHITESPACE@404..409 "\n "
- FIELD@409..428
- NAME@409..415 "volume"
- WHITESPACE@415..422 " "
- EQ@422..423 "="
- WHITESPACE@423..424 " "
- LITERAL@424..427
- INTEGER@424..427 "124"
- COMMA@427..428 ","
- WHITESPACE@428..433 "\n "
- FIELD@433..455
- NAME@433..436 "eid"
- WHITESPACE@436..446 " "
- EQ@446..447 "="
- WHITESPACE@447..448 " "
- LITERAL@448..454
- INTEGER@448..454 "124106"
- COMMA@454..455 ","
- WHITESPACE@455..460 "\n "
- FIELD@460..495
- NAME@460..463 "doi"
- WHITESPACE@463..473 " "
- EQ@473..474 "="
- WHITESPACE@474..475 " "
- CURLY_GROUP@475..494
- L_CURLY@475..476 "{"
- WORD@476..493 "10.1063/1.2172593"
- R_CURLY@493..494 "}"
- COMMA@494..495 ","
- WHITESPACE@495..500 "\n "
- FIELD@500..525
- NAME@500..506 "langid"
- WHITESPACE@506..513 " "
- EQ@513..514 "="
- WHITESPACE@514..515 " "
- CURLY_GROUP@515..524
- L_CURLY@515..516 "{"
- WORD@516..523 "english"
- R_CURLY@523..524 "}"
- COMMA@524..525 ","
- WHITESPACE@525..530 "\n "
- FIELD@530..564
- NAME@530..540 "langidopts"
- WHITESPACE@540..543 " "
- EQ@543..544 "="
- WHITESPACE@544..545 " "
- CURLY_GROUP@545..563
- L_CURLY@545..546 "{"
- WORD@546..562 "variant=american"
- R_CURLY@562..563 "}"
- COMMA@563..564 ","
- WHITESPACE@564..569 "\n "
- FIELD@569..631
- NAME@569..579 "indextitle"
- WHITESPACE@579..582 " "
- EQ@582..583 "="
- WHITESPACE@583..584 " "
- CURLY_GROUP@584..630
- L_CURLY@584..585 "{"
- WORD@585..596 "Computation"
- WHITESPACE@596..597 " "
- WORD@597..599 "of"
- WHITESPACE@599..600 " "
- WORD@600..605 "ionic"
- WHITESPACE@605..606 " "
- WORD@606..615 "solvation"
- WHITESPACE@615..616 " "
- WORD@616..620 "free"
- WHITESPACE@620..621 " "
- WORD@621..629 "energies"
- R_CURLY@629..630 "}"
- COMMA@630..631 ","
- WHITESPACE@631..636 "\n "
- FIELD@636..896
- NAME@636..646 "annotation"
- WHITESPACE@646..649 " "
- EQ@649..650 "="
- WHITESPACE@650..651 " "
- CURLY_GROUP@651..895
- L_CURLY@651..652 "{"
- WORD@652..654 "An"
- WHITESPACE@654..655 " "
- COMMAND@655..662
- COMMAND_NAME@655..662 "\\texttt"
- CURLY_GROUP@662..671
- L_CURLY@662..663 "{"
- WORD@663..670 "article"
- R_CURLY@670..671 "}"
- WHITESPACE@671..672 " "
- WORD@672..677 "entry"
- WHITESPACE@677..678 " "
- WORD@678..682 "with"
- WHITESPACE@682..683 " "
- WORD@683..685 "an"
- WHITESPACE@685..686 " "
- COMMAND@686..693
- COMMAND_NAME@686..693 "\\texttt"
- CURLY_GROUP@693..698
- L_CURLY@693..694 "{"
- WORD@694..697 "eid"
- R_CURLY@697..698 "}"
- WHITESPACE@698..699 " "
- WORD@699..702 "and"
- WHITESPACE@702..703 " "
- WORD@703..704 "a"
- WHITESPACE@704..725 "\n "
- COMMAND@725..732
- COMMAND_NAME@725..732 "\\texttt"
- CURLY_GROUP@732..737
- L_CURLY@732..733 "{"
- WORD@733..736 "doi"
- R_CURLY@736..737 "}"
- WHITESPACE@737..738 " "
- WORD@738..744 "field."
- WHITESPACE@744..745 " "
- WORD@745..749 "Note"
- WHITESPACE@749..750 " "
- WORD@750..754 "that"
- WHITESPACE@754..755 " "
- WORD@755..758 "the"
- WHITESPACE@758..759 " "
- COMMAND@759..766
- COMMAND_NAME@759..766 "\\textsc"
- CURLY_GROUP@766..771
- L_CURLY@766..767 "{"
- WORD@767..770 "doi"
- R_CURLY@770..771 "}"
- WHITESPACE@771..772 " "
- WORD@772..774 "is"
- WHITESPACE@774..775 " "
- WORD@775..786 "transformed"
- WHITESPACE@786..807 "\n "
- WORD@807..811 "into"
- WHITESPACE@811..812 " "
- WORD@812..813 "a"
- WHITESPACE@813..814 " "
- WORD@814..823 "clickable"
- WHITESPACE@823..824 " "
- WORD@824..828 "link"
- WHITESPACE@828..829 " "
- WORD@829..831 "if"
- WHITESPACE@831..832 " "
- COMMAND@832..839
- COMMAND_NAME@832..839 "\\texttt"
- CURLY_GROUP@839..849
- L_CURLY@839..840 "{"
- WORD@840..848 "hyperref"
- R_CURLY@848..849 "}"
- WHITESPACE@849..850 " "
- WORD@850..857 "support"
- WHITESPACE@857..858 " "
- WORD@858..861 "has"
- WHITESPACE@861..862 " "
- WORD@862..866 "been"
- WHITESPACE@866..887 "\n "
- WORD@887..894 "enabled"
- R_CURLY@894..895 "}"
- COMMA@895..896 ","
- WHITESPACE@896..897 "\n"
- R_DELIM@897..898 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__knuth_1984.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__knuth_1984.txt.snap
deleted file mode 100644
index 59e678cbee..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__knuth_1984.txt.snap
+++ /dev/null
@@ -1,320 +0,0 @@
----
-source: crates/parser/src/bibtex.rs
-expression: root
-input_file: crates/parser/src/test_data/bibtex/samples/knuth_1984.txt
----
-ROOT@0..993
- ENTRY@0..993
- TYPE@0..5 "@book"
- L_DELIM@5..6 "{"
- NAME@6..16 "knuth:ct:a"
- COMMA@16..17 ","
- WHITESPACE@17..22 "\n "
- FIELD@22..56
- NAME@22..28 "author"
- WHITESPACE@28..35 " "
- EQ@35..36 "="
- WHITESPACE@36..37 " "
- CURLY_GROUP@37..55
- L_CURLY@37..38 "{"
- WORD@38..43 "Knuth"
- COMMA@43..44 ","
- WHITESPACE@44..45 " "
- WORD@45..51 "Donald"
- WHITESPACE@51..52 " "
- WORD@52..54 "E."
- R_CURLY@54..55 "}"
- COMMA@55..56 ","
- WHITESPACE@56..61 "\n "
- FIELD@61..94
- NAME@61..66 "title"
- WHITESPACE@66..74 " "
- EQ@74..75 "="
- WHITESPACE@75..76 " "
- CURLY_GROUP@76..93
- L_CURLY@76..77 "{"
- WORD@77..80 "The"
- WHITESPACE@80..81 " "
- CURLY_GROUP@81..92
- L_CURLY@81..82 "{"
- COMMAND@82..86
- COMMAND_NAME@82..86 "\\TeX"
- WHITESPACE@86..87 " "
- WORD@87..91 "book"
- R_CURLY@91..92 "}"
- R_CURLY@92..93 "}"
- COMMA@93..94 ","
- WHITESPACE@94..99 "\n "
- FIELD@99..119
- NAME@99..103 "date"
- WHITESPACE@103..112 " "
- EQ@112..113 "="
- WHITESPACE@113..114 " "
- LITERAL@114..118
- INTEGER@114..118 "1984"
- COMMA@118..119 ","
- WHITESPACE@119..124 "\n "
- FIELD@124..166
- NAME@124..133 "maintitle"
- WHITESPACE@133..137 " "
- EQ@137..138 "="
- WHITESPACE@138..139 " "
- CURLY_GROUP@139..165
- L_CURLY@139..140 "{"
- WORD@140..149 "Computers"
- WHITESPACE@149..150 " "
- COMMAND@150..152
- COMMAND_NAME@150..152 "\\&"
- WHITESPACE@152..153 " "
- WORD@153..164 "Typesetting"
- R_CURLY@164..165 "}"
- COMMA@165..166 ","
- WHITESPACE@166..171 "\n "
- FIELD@171..190
- NAME@171..177 "volume"
- WHITESPACE@177..184 " "
- EQ@184..185 "="
- WHITESPACE@185..186 " "
- CURLY_GROUP@186..189
- L_CURLY@186..187 "{"
- WORD@187..188 "A"
- R_CURLY@188..189 "}"
- COMMA@189..190 ","
- WHITESPACE@190..195 "\n "
- FIELD@195..227
- NAME@195..204 "publisher"
- WHITESPACE@204..208 " "
- EQ@208..209 "="
- WHITESPACE@209..210 " "
- CURLY_GROUP@210..226
- L_CURLY@210..211 "{"
- WORD@211..225 "Addison-Wesley"
- R_CURLY@225..226 "}"
- COMMA@226..227 ","
- WHITESPACE@227..232 "\n "
- FIELD@232..264
- NAME@232..240 "location"
- WHITESPACE@240..245 " "
- EQ@245..246 "="
- WHITESPACE@246..247 " "
- CURLY_GROUP@247..263
- L_CURLY@247..248 "{"
- WORD@248..255 "Reading"
- COMMA@255..256 ","
- WHITESPACE@256..257 " "
- WORD@257..262 "Mass."
- R_CURLY@262..263 "}"
- COMMA@263..264 ","
- WHITESPACE@264..269 "\n "
- FIELD@269..294
- NAME@269..275 "langid"
- WHITESPACE@275..282 " "
- EQ@282..283 "="
- WHITESPACE@283..284 " "
- CURLY_GROUP@284..293
- L_CURLY@284..285 "{"
- WORD@285..292 "english"
- R_CURLY@292..293 "}"
- COMMA@293..294 ","
- WHITESPACE@294..299 "\n "
- FIELD@299..333
- NAME@299..309 "langidopts"
- WHITESPACE@309..312 " "
- EQ@312..313 "="
- WHITESPACE@313..314 " "
- CURLY_GROUP@314..332
- L_CURLY@314..315 "{"
- WORD@315..331 "variant=american"
- R_CURLY@331..332 "}"
- COMMA@332..333 ","
- WHITESPACE@333..338 "\n "
- FIELD@338..381
- NAME@338..347 "sorttitle"
- WHITESPACE@347..351 " "
- EQ@351..352 "="
- WHITESPACE@352..353 " "
- CURLY_GROUP@353..380
- L_CURLY@353..354 "{"
- WORD@354..363 "Computers"
- WHITESPACE@363..364 " "
- WORD@364..365 "&"
- WHITESPACE@365..366 " "
- WORD@366..377 "Typesetting"
- WHITESPACE@377..378 " "
- WORD@378..379 "A"
- R_CURLY@379..380 "}"
- COMMA@380..381 ","
- WHITESPACE@381..386 "\n "
- FIELD@386..416
- NAME@386..400 "indexsorttitle"
- EQ@400..401 "="
- WHITESPACE@401..402 " "
- CURLY_GROUP@402..415
- L_CURLY@402..403 "{"
- WORD@403..406 "The"
- WHITESPACE@406..407 " "
- WORD@407..414 "TeXbook"
- R_CURLY@414..415 "}"
- COMMA@415..416 ","
- WHITESPACE@416..421 "\n "
- FIELD@421..461
- NAME@421..431 "indextitle"
- WHITESPACE@431..434 " "
- EQ@434..435 "="
- WHITESPACE@435..436 " "
- CURLY_GROUP@436..460
- L_CURLY@436..437 "{"
- COMMAND@437..445
- COMMAND_NAME@437..445 "\\protect"
- COMMAND@445..449
- COMMAND_NAME@445..449 "\\TeX"
- WHITESPACE@449..450 " "
- WORD@450..454 "book"
- COMMA@454..455 ","
- WHITESPACE@455..456 " "
- WORD@456..459 "The"
- R_CURLY@459..460 "}"
- COMMA@460..461 ","
- WHITESPACE@461..466 "\n "
- FIELD@466..493
- NAME@466..476 "shorttitle"
- WHITESPACE@476..479 " "
- EQ@479..480 "="
- WHITESPACE@480..481 " "
- CURLY_GROUP@481..492
- L_CURLY@481..482 "{"
- COMMAND@482..486
- COMMAND_NAME@482..486 "\\TeX"
- WHITESPACE@486..487 " "
- WORD@487..491 "book"
- R_CURLY@491..492 "}"
- COMMA@492..493 ","
- WHITESPACE@493..498 "\n "
- FIELD@498..991
- NAME@498..508 "annotation"
- WHITESPACE@508..511 " "
- EQ@511..512 "="
- WHITESPACE@512..513 " "
- CURLY_GROUP@513..990
- L_CURLY@513..514 "{"
- WORD@514..517 "The"
- WHITESPACE@517..518 " "
- WORD@518..523 "first"
- WHITESPACE@523..524 " "
- WORD@524..530 "volume"
- WHITESPACE@530..531 " "
- WORD@531..533 "of"
- WHITESPACE@533..534 " "
- WORD@534..535 "a"
- WHITESPACE@535..536 " "
- WORD@536..547 "five-volume"
- WHITESPACE@547..548 " "
- WORD@548..553 "book."
- WHITESPACE@553..554 " "
- WORD@554..558 "Note"
- WHITESPACE@558..559 " "
- WORD@559..562 "the"
- WHITESPACE@562..583 "\n "
- COMMAND@583..590
- COMMAND_NAME@583..590 "\\texttt"
- CURLY_GROUP@590..601
- L_CURLY@590..591 "{"
- WORD@591..600 "sorttitle"
- R_CURLY@600..601 "}"
- WHITESPACE@601..602 " "
- WORD@602..608 "field."
- WHITESPACE@608..609 " "
- WORD@609..611 "We"
- WHITESPACE@611..612 " "
- WORD@612..616 "want"
- WHITESPACE@616..617 " "
- WORD@617..621 "this"
- WHITESPACE@621..642 "\n "
- WORD@642..648 "volume"
- WHITESPACE@648..649 " "
- WORD@649..651 "to"
- WHITESPACE@651..652 " "
- WORD@652..654 "be"
- WHITESPACE@654..655 " "
- WORD@655..661 "listed"
- WHITESPACE@661..662 " "
- WORD@662..667 "after"
- WHITESPACE@667..668 " "
- WORD@668..671 "the"
- WHITESPACE@671..672 " "
- WORD@672..677 "entry"
- WHITESPACE@677..678 " "
- WORD@678..687 "referring"
- WHITESPACE@687..688 " "
- WORD@688..690 "to"
- WHITESPACE@690..691 " "
- WORD@691..694 "the"
- WHITESPACE@694..695 " "
- WORD@695..701 "entire"
- WHITESPACE@701..722 "\n "
- WORD@722..733 "five-volume"
- WHITESPACE@733..734 " "
- WORD@734..738 "set."
- WHITESPACE@738..739 " "
- WORD@739..743 "Also"
- WHITESPACE@743..744 " "
- WORD@744..748 "note"
- WHITESPACE@748..749 " "
- WORD@749..752 "the"
- WHITESPACE@752..753 " "
- COMMAND@753..760
- COMMAND_NAME@753..760 "\\texttt"
- CURLY_GROUP@760..772
- L_CURLY@760..761 "{"
- WORD@761..771 "indextitle"
- R_CURLY@771..772 "}"
- WHITESPACE@772..773 " "
- WORD@773..776 "and"
- WHITESPACE@776..797 "\n "
- COMMAND@797..804
- COMMAND_NAME@797..804 "\\texttt"
- CURLY_GROUP@804..820
- L_CURLY@804..805 "{"
- WORD@805..819 "indexsorttitle"
- R_CURLY@819..820 "}"
- WHITESPACE@820..821 " "
- WORD@821..828 "fields."
- WHITESPACE@828..829 " "
- WORD@829..837 "Indexing"
- WHITESPACE@837..838 " "
- WORD@838..846 "packages"
- WHITESPACE@846..847 " "
- WORD@847..851 "that"
- WHITESPACE@851..852 " "
- WORD@852..857 "don't"
- WHITESPACE@857..878 "\n "
- WORD@878..886 "generate"
- WHITESPACE@886..887 " "
- WORD@887..893 "robust"
- WHITESPACE@893..894 " "
- WORD@894..899 "index"
- WHITESPACE@899..900 " "
- WORD@900..907 "entries"
- WHITESPACE@907..908 " "
- WORD@908..915 "require"
- WHITESPACE@915..916 " "
- WORD@916..920 "some"
- WHITESPACE@920..921 " "
- WORD@921..928 "control"
- WHITESPACE@928..929 " "
- WORD@929..938 "sequences"
- WHITESPACE@938..959 "\n "
- WORD@959..961 "to"
- WHITESPACE@961..962 " "
- WORD@962..964 "be"
- WHITESPACE@964..965 " "
- WORD@965..974 "protected"
- WHITESPACE@974..975 " "
- WORD@975..979 "from"
- WHITESPACE@979..980 " "
- WORD@980..989 "expansion"
- R_CURLY@989..990 "}"
- COMMA@990..991 ","
- WHITESPACE@991..992 "\n"
- R_DELIM@992..993 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__matuz_1990.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__matuz_1990.txt.snap
deleted file mode 100644
index 75f0293f23..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__matuz_1990.txt.snap
+++ /dev/null
@@ -1,176 +0,0 @@
----
-source: crates/parser/src/bibtex.rs
-expression: root
-input_file: crates/parser/src/test_data/bibtex/samples/matuz_1990.txt
----
-ROOT@0..517
- ENTRY@0..517
- TYPE@0..11 "@collection"
- L_DELIM@11..12 "{"
- NAME@12..23 "matuz:doody"
- COMMA@23..24 ","
- WHITESPACE@24..29 "\n "
- FIELD@29..59
- NAME@29..35 "editor"
- WHITESPACE@35..42 " "
- EQ@42..43 "="
- WHITESPACE@43..44 " "
- CURLY_GROUP@44..58
- L_CURLY@44..45 "{"
- WORD@45..50 "Matuz"
- COMMA@50..51 ","
- WHITESPACE@51..52 " "
- WORD@52..57 "Roger"
- R_CURLY@57..58 "}"
- COMMA@58..59 ","
- WHITESPACE@59..64 "\n "
- FIELD@64..113
- NAME@64..69 "title"
- WHITESPACE@69..77 " "
- EQ@77..78 "="
- WHITESPACE@78..79 " "
- CURLY_GROUP@79..112
- L_CURLY@79..80 "{"
- WORD@80..92 "Contemporary"
- WHITESPACE@92..93 " "
- WORD@93..101 "Literary"
- WHITESPACE@101..102 " "
- WORD@102..111 "Criticism"
- R_CURLY@111..112 "}"
- COMMA@112..113 ","
- WHITESPACE@113..118 "\n "
- FIELD@118..138
- NAME@118..122 "year"
- WHITESPACE@122..131 " "
- EQ@131..132 "="
- WHITESPACE@132..133 " "
- LITERAL@133..137
- INTEGER@133..137 "1990"
- COMMA@137..138 ","
- WHITESPACE@138..143 "\n "
- FIELD@143..161
- NAME@143..149 "volume"
- WHITESPACE@149..156 " "
- EQ@156..157 "="
- WHITESPACE@157..158 " "
- LITERAL@158..160
- INTEGER@158..160 "61"
- COMMA@160..161 ","
- WHITESPACE@161..166 "\n "
- FIELD@166..188
- NAME@166..175 "publisher"
- WHITESPACE@175..179 " "
- EQ@179..180 "="
- WHITESPACE@180..181 " "
- CURLY_GROUP@181..187
- L_CURLY@181..182 "{"
- WORD@182..186 "Gale"
- R_CURLY@186..187 "}"
- COMMA@187..188 ","
- WHITESPACE@188..193 "\n "
- FIELD@193..218
- NAME@193..201 "location"
- WHITESPACE@201..206 " "
- EQ@206..207 "="
- WHITESPACE@207..208 " "
- CURLY_GROUP@208..217
- L_CURLY@208..209 "{"
- WORD@209..216 "Detroit"
- R_CURLY@216..217 "}"
- COMMA@217..218 ","
- WHITESPACE@218..223 "\n "
- FIELD@223..248
- NAME@223..228 "pages"
- WHITESPACE@228..236 " "
- EQ@236..237 "="
- WHITESPACE@237..238 " "
- CURLY_GROUP@238..247
- L_CURLY@238..239 "{"
- WORD@239..246 "204-208"
- R_CURLY@246..247 "}"
- COMMA@247..248 ","
- WHITESPACE@248..253 "\n "
- FIELD@253..278
- NAME@253..259 "langid"
- WHITESPACE@259..266 " "
- EQ@266..267 "="
- WHITESPACE@267..268 " "
- CURLY_GROUP@268..277
- L_CURLY@268..269 "{"
- WORD@269..276 "english"
- R_CURLY@276..277 "}"
- COMMA@277..278 ","
- WHITESPACE@278..283 "\n "
- FIELD@283..317
- NAME@283..293 "langidopts"
- WHITESPACE@293..296 " "
- EQ@296..297 "="
- WHITESPACE@297..298 " "
- CURLY_GROUP@298..316
- L_CURLY@298..299 "{"
- WORD@299..315 "variant=american"
- R_CURLY@315..316 "}"
- COMMA@316..317 ","
- WHITESPACE@317..322 "\n "
- FIELD@322..515
- NAME@322..332 "annotation"
- WHITESPACE@332..335 " "
- EQ@335..336 "="
- WHITESPACE@336..337 " "
- CURLY_GROUP@337..514
- L_CURLY@337..338 "{"
- WORD@338..339 "A"
- WHITESPACE@339..340 " "
- COMMAND@340..347
- COMMAND_NAME@340..347 "\\texttt"
- CURLY_GROUP@347..359
- L_CURLY@347..348 "{"
- WORD@348..358 "collection"
- R_CURLY@358..359 "}"
- WHITESPACE@359..360 " "
- WORD@360..365 "entry"
- WHITESPACE@365..366 " "
- WORD@366..375 "providing"
- WHITESPACE@375..376 " "
- WORD@376..379 "the"
- WHITESPACE@379..380 " "
- WORD@380..387 "excerpt"
- WHITESPACE@387..388 " "
- WORD@388..399 "information"
- WHITESPACE@399..420 "\n "
- WORD@420..423 "for"
- WHITESPACE@423..424 " "
- WORD@424..427 "the"
- WHITESPACE@427..428 " "
- COMMAND@428..435
- COMMAND_NAME@428..435 "\\texttt"
- CURLY_GROUP@435..442
- L_CURLY@435..436 "{"
- WORD@436..441 "doody"
- R_CURLY@441..442 "}"
- WHITESPACE@442..443 " "
- WORD@443..449 "entry."
- WHITESPACE@449..450 " "
- WORD@450..454 "Note"
- WHITESPACE@454..455 " "
- WORD@455..458 "the"
- WHITESPACE@458..459 " "
- WORD@459..465 "format"
- WHITESPACE@465..466 " "
- WORD@466..468 "of"
- WHITESPACE@468..469 " "
- WORD@469..472 "the"
- WHITESPACE@472..493 "\n "
- COMMAND@493..500
- COMMAND_NAME@493..500 "\\texttt"
- CURLY_GROUP@500..507
- L_CURLY@500..501 "{"
- WORD@501..506 "pages"
- R_CURLY@506..507 "}"
- WHITESPACE@507..508 " "
- WORD@508..513 "field"
- R_CURLY@513..514 "}"
- COMMA@514..515 ","
- WHITESPACE@515..516 "\n"
- R_DELIM@516..517 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__nietzsche_1998.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__nietzsche_1998.txt.snap
deleted file mode 100644
index 97fe0cf087..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__nietzsche_1998.txt.snap
+++ /dev/null
@@ -1,368 +0,0 @@
----
-source: crates/parser/src/bibtex.rs
-expression: root
-input_file: crates/parser/src/test_data/bibtex/samples/nietzsche_1998.txt
----
-ROOT@0..1112
- STRING@0..49
- TYPE@0..7 "@string"
- L_DELIM@7..8 "{"
- NAME@8..11 "dtv"
- WHITESPACE@11..16 " "
- EQ@16..17 "="
- WHITESPACE@17..18 " "
- CURLY_GROUP@18..48
- L_CURLY@18..19 "{"
- WORD@19..28 "Deutscher"
- WHITESPACE@28..29 " "
- WORD@29..47 "Taschenbuch-Verlag"
- R_CURLY@47..48 "}"
- R_DELIM@48..49 "}"
- JUNK@49..51 "\n\n"
- ENTRY@51..1112
- TYPE@51..58 "@mvbook"
- L_DELIM@58..59 "{"
- NAME@59..72 "nietzsche:ksa"
- COMMA@72..73 ","
- WHITESPACE@73..78 "\n "
- FIELD@78..116
- NAME@78..84 "author"
- WHITESPACE@84..91 " "
- EQ@91..92 "="
- WHITESPACE@92..93 " "
- CURLY_GROUP@93..115
- L_CURLY@93..94 "{"
- WORD@94..103 "Nietzsche"
- COMMA@103..104 ","
- WHITESPACE@104..105 " "
- WORD@105..114 "Friedrich"
- R_CURLY@114..115 "}"
- COMMA@115..116 ","
- WHITESPACE@116..121 "\n "
- FIELD@121..158
- NAME@121..126 "title"
- WHITESPACE@126..134 " "
- EQ@134..135 "="
- WHITESPACE@135..136 " "
- CURLY_GROUP@136..157
- L_CURLY@136..137 "{"
- WORD@137..138 "S"
- CURLY_GROUP@138..143
- L_CURLY@138..139 "{"
- ACCENT@139..142
- ACCENT_NAME@139..141 "\\\""
- WORD@141..142 "a"
- R_CURLY@142..143 "}"
- WORD@143..150 "mtliche"
- WHITESPACE@150..151 " "
- WORD@151..156 "Werke"
- R_CURLY@156..157 "}"
- COMMA@157..158 ","
- WHITESPACE@158..163 "\n "
- FIELD@163..183
- NAME@163..167 "date"
- WHITESPACE@167..176 " "
- EQ@176..177 "="
- WHITESPACE@177..178 " "
- LITERAL@178..182
- INTEGER@178..182 "1988"
- COMMA@182..183 ","
- WHITESPACE@183..188 "\n "
- FIELD@188..243
- NAME@188..194 "editor"
- WHITESPACE@194..201 " "
- EQ@201..202 "="
- WHITESPACE@202..203 " "
- CURLY_GROUP@203..242
- L_CURLY@203..204 "{"
- WORD@204..209 "Colli"
- COMMA@209..210 ","
- WHITESPACE@210..211 " "
- WORD@211..218 "Giorgio"
- WHITESPACE@218..219 " "
- WORD@219..222 "and"
- WHITESPACE@222..223 " "
- WORD@223..232 "Montinari"
- COMMA@232..233 ","
- WHITESPACE@233..234 " "
- WORD@234..241 "Mazzino"
- R_CURLY@241..242 "}"
- COMMA@242..243 ","
- WHITESPACE@243..248 "\n "
- FIELD@248..265
- NAME@248..255 "edition"
- WHITESPACE@255..261 " "
- EQ@261..262 "="
- WHITESPACE@262..263 " "
- LITERAL@263..264
- INTEGER@263..264 "2"
- COMMA@264..265 ","
- WHITESPACE@265..270 "\n "
- FIELD@270..288
- NAME@270..277 "volumes"
- WHITESPACE@277..283 " "
- EQ@283..284 "="
- WHITESPACE@284..285 " "
- LITERAL@285..287
- INTEGER@285..287 "15"
- COMMA@287..288 ","
- WHITESPACE@288..293 "\n "
- FIELD@293..339
- NAME@293..302 "publisher"
- WHITESPACE@302..306 " "
- EQ@306..307 "="
- WHITESPACE@307..308 " "
- JOIN@308..338
- LITERAL@308..311
- NAME@308..311 "dtv"
- WHITESPACE@311..312 " "
- POUND@312..313 "#"
- WHITESPACE@313..314 " "
- CURLY_GROUP@314..338
- L_CURLY@314..315 "{"
- WHITESPACE@315..316 " "
- WORD@316..319 "and"
- WHITESPACE@319..320 " "
- WORD@320..326 "Walter"
- WHITESPACE@326..327 " "
- WORD@327..329 "de"
- WHITESPACE@329..330 " "
- WORD@330..337 "Gruyter"
- R_CURLY@337..338 "}"
- COMMA@338..339 ","
- WHITESPACE@339..344 "\n "
- FIELD@344..397
- NAME@344..352 "location"
- WHITESPACE@352..357 " "
- EQ@357..358 "="
- WHITESPACE@358..359 " "
- CURLY_GROUP@359..396
- L_CURLY@359..360 "{"
- WORD@360..361 "M"
- CURLY_GROUP@361..366
- L_CURLY@361..362 "{"
- ACCENT@362..365
- ACCENT_NAME@362..364 "\\\""
- WORD@364..365 "u"
- R_CURLY@365..366 "}"
- WORD@366..371 "nchen"
- WHITESPACE@371..372 " "
- WORD@372..375 "and"
- WHITESPACE@375..376 " "
- WORD@376..382 "Berlin"
- WHITESPACE@382..383 " "
- WORD@383..386 "and"
- WHITESPACE@386..387 " "
- WORD@387..390 "New"
- WHITESPACE@390..391 " "
- WORD@391..395 "York"
- R_CURLY@395..396 "}"
- COMMA@396..397 ","
- WHITESPACE@397..402 "\n "
- FIELD@402..426
- NAME@402..408 "langid"
- WHITESPACE@408..415 " "
- EQ@415..416 "="
- WHITESPACE@416..417 " "
- CURLY_GROUP@417..425
- L_CURLY@417..418 "{"
- WORD@418..424 "german"
- R_CURLY@424..425 "}"
- COMMA@425..426 ","
- WHITESPACE@426..431 "\n "
- FIELD@431..461
- NAME@431..440 "sorttitle"
- WHITESPACE@440..444 " "
- EQ@444..445 "="
- WHITESPACE@445..446 " "
- CURLY_GROUP@446..460
- L_CURLY@446..447 "{"
- WORD@447..459 "Werke-00-000"
- R_CURLY@459..460 "}"
- COMMA@460..461 ","
- WHITESPACE@461..466 "\n "
- FIELD@466..500
- NAME@466..480 "indexsorttitle"
- EQ@480..481 "="
- WHITESPACE@481..482 " "
- CURLY_GROUP@482..499
- L_CURLY@482..483 "{"
- WORD@483..492 "Samtliche"
- WHITESPACE@492..493 " "
- WORD@493..498 "Werke"
- R_CURLY@498..499 "}"
- COMMA@499..500 ","
- WHITESPACE@500..505 "\n "
- FIELD@505..547
- NAME@505..513 "subtitle"
- WHITESPACE@513..518 " "
- EQ@518..519 "="
- WHITESPACE@519..520 " "
- CURLY_GROUP@520..546
- L_CURLY@520..521 "{"
- WORD@521..530 "Kritische"
- WHITESPACE@530..531 " "
- WORD@531..545 "Studienausgabe"
- R_CURLY@545..546 "}"
- COMMA@546..547 ","
- WHITESPACE@547..552 "\n "
- FIELD@552..1110
- NAME@552..562 "annotation"
- WHITESPACE@562..565 " "
- EQ@565..566 "="
- WHITESPACE@566..567 " "
- CURLY_GROUP@567..1109
- L_CURLY@567..568 "{"
- WORD@568..571 "The"
- WHITESPACE@571..572 " "
- WORD@572..580 "critical"
- WHITESPACE@580..581 " "
- WORD@581..588 "edition"
- WHITESPACE@588..589 " "
- WORD@589..591 "of"
- WHITESPACE@591..592 " "
- WORD@592..603 "Nietzsche's"
- WHITESPACE@603..604 " "
- WORD@604..610 "works."
- WHITESPACE@610..611 " "
- WORD@611..615 "This"
- WHITESPACE@615..616 " "
- WORD@616..618 "is"
- WHITESPACE@618..619 " "
- WORD@619..620 "a"
- WHITESPACE@620..641 "\n "
- COMMAND@641..648
- COMMAND_NAME@641..648 "\\texttt"
- CURLY_GROUP@648..656
- L_CURLY@648..649 "{"
- WORD@649..655 "mvbook"
- R_CURLY@655..656 "}"
- WHITESPACE@656..657 " "
- WORD@657..662 "entry"
- WHITESPACE@662..663 " "
- WORD@663..672 "referring"
- WHITESPACE@672..673 " "
- WORD@673..675 "to"
- WHITESPACE@675..676 " "
- WORD@676..677 "a"
- WHITESPACE@677..678 " "
- WORD@678..687 "15-volume"
- WHITESPACE@687..688 " "
- WORD@688..692 "work"
- WHITESPACE@692..693 " "
- WORD@693..695 "as"
- WHITESPACE@695..696 " "
- WORD@696..697 "a"
- WHITESPACE@697..718 "\n "
- WORD@718..724 "whole."
- WHITESPACE@724..725 " "
- WORD@725..729 "Note"
- WHITESPACE@729..730 " "
- WORD@730..733 "the"
- WHITESPACE@733..734 " "
- COMMAND@734..741
- COMMAND_NAME@734..741 "\\texttt"
- CURLY_GROUP@741..750
- L_CURLY@741..742 "{"
- WORD@742..749 "volumes"
- R_CURLY@749..750 "}"
- WHITESPACE@750..751 " "
- WORD@751..756 "field"
- WHITESPACE@756..757 " "
- WORD@757..760 "and"
- WHITESPACE@760..761 " "
- WORD@761..764 "the"
- WHITESPACE@764..765 " "
- WORD@765..771 "format"
- WHITESPACE@771..772 " "
- WORD@772..774 "of"
- WHITESPACE@774..775 " "
- WORD@775..778 "the"
- WHITESPACE@778..799 "\n "
- COMMAND@799..806
- COMMAND_NAME@799..806 "\\texttt"
- CURLY_GROUP@806..817
- L_CURLY@806..807 "{"
- WORD@807..816 "publisher"
- R_CURLY@816..817 "}"
- WHITESPACE@817..818 " "
- WORD@818..821 "and"
- WHITESPACE@821..822 " "
- COMMAND@822..829
- COMMAND_NAME@822..829 "\\texttt"
- CURLY_GROUP@829..839
- L_CURLY@829..830 "{"
- WORD@830..838 "location"
- R_CURLY@838..839 "}"
- WHITESPACE@839..840 " "
- WORD@840..846 "fields"
- WHITESPACE@846..847 " "
- WORD@847..849 "in"
- WHITESPACE@849..850 " "
- WORD@850..853 "the"
- WHITESPACE@853..874 "\n "
- WORD@874..882 "database"
- WHITESPACE@882..883 " "
- WORD@883..888 "file."
- WHITESPACE@888..889 " "
- WORD@889..893 "Also"
- WHITESPACE@893..894 " "
- WORD@894..898 "note"
- WHITESPACE@898..899 " "
- WORD@899..902 "the"
- WHITESPACE@902..903 " "
- COMMAND@903..910
- COMMAND_NAME@903..910 "\\texttt"
- CURLY_GROUP@910..921
- L_CURLY@910..911 "{"
- WORD@911..920 "sorttitle"
- R_CURLY@920..921 "}"
- WHITESPACE@921..922 " "
- WORD@922..925 "and"
- WHITESPACE@925..946 "\n "
- WORD@946..951 "field"
- WHITESPACE@951..952 " "
- WORD@952..957 "which"
- WHITESPACE@957..958 " "
- WORD@958..960 "is"
- WHITESPACE@960..961 " "
- WORD@961..965 "used"
- WHITESPACE@965..966 " "
- WORD@966..968 "to"
- WHITESPACE@968..969 " "
- WORD@969..978 "fine-tune"
- WHITESPACE@978..979 " "
- WORD@979..982 "the"
- WHITESPACE@982..1003 "\n "
- WORD@1003..1010 "sorting"
- WHITESPACE@1010..1011 " "
- WORD@1011..1016 "order"
- WHITESPACE@1016..1017 " "
- WORD@1017..1019 "of"
- WHITESPACE@1019..1020 " "
- WORD@1020..1023 "the"
- WHITESPACE@1023..1024 " "
- WORD@1024..1037 "bibliography."
- WHITESPACE@1037..1038 " "
- WORD@1038..1040 "We"
- WHITESPACE@1040..1041 " "
- WORD@1041..1045 "want"
- WHITESPACE@1045..1046 " "
- WORD@1046..1050 "this"
- WHITESPACE@1050..1051 " "
- WORD@1051..1055 "item"
- WHITESPACE@1055..1056 " "
- WORD@1056..1062 "listed"
- WHITESPACE@1062..1083 "\n "
- WORD@1083..1088 "first"
- WHITESPACE@1088..1089 " "
- WORD@1089..1091 "in"
- WHITESPACE@1091..1092 " "
- WORD@1092..1095 "the"
- WHITESPACE@1095..1096 " "
- WORD@1096..1108 "bibliography"
- R_CURLY@1108..1109 "}"
- COMMA@1109..1110 ","
- WHITESPACE@1110..1111 "\n"
- R_DELIM@1111..1112 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__rivest_1978.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__rivest_1978.txt.snap
deleted file mode 100644
index 11a8f38bac..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__rivest_1978.txt.snap
+++ /dev/null
@@ -1,232 +0,0 @@
----
-source: crates/parser/src/bibtex.rs
-expression: root
-input_file: crates/parser/src/test_data/bibtex/samples/rivest_1978.txt
----
-ROOT@0..557
- ENTRY@0..557
- TYPE@0..8 "@article"
- L_DELIM@8..9 "{"
- NAME@9..30 "10.1145/359340.359342"
- COMMA@30..31 ","
- WHITESPACE@31..36 "\n "
- FIELD@36..92
- NAME@36..42 "author"
- WHITESPACE@42..43 " "
- EQ@43..44 "="
- WHITESPACE@44..45 " "
- CURLY_GROUP@45..91
- L_CURLY@45..46 "{"
- WORD@46..52 "Rivest"
- COMMA@52..53 ","
- WHITESPACE@53..54 " "
- WORD@54..56 "R."
- WHITESPACE@56..57 " "
- WORD@57..59 "L."
- WHITESPACE@59..60 " "
- WORD@60..63 "and"
- WHITESPACE@63..64 " "
- WORD@64..70 "Shamir"
- COMMA@70..71 ","
- WHITESPACE@71..72 " "
- WORD@72..74 "A."
- WHITESPACE@74..75 " "
- WORD@75..78 "and"
- WHITESPACE@78..79 " "
- WORD@79..86 "Adleman"
- COMMA@86..87 ","
- WHITESPACE@87..88 " "
- WORD@88..90 "L."
- R_CURLY@90..91 "}"
- COMMA@91..92 ","
- WHITESPACE@92..97 "\n "
- FIELD@97..178
- NAME@97..102 "title"
- WHITESPACE@102..103 " "
- EQ@103..104 "="
- WHITESPACE@104..105 " "
- CURLY_GROUP@105..177
- L_CURLY@105..106 "{"
- WORD@106..107 "A"
- WHITESPACE@107..108 " "
- WORD@108..114 "Method"
- WHITESPACE@114..115 " "
- WORD@115..118 "for"
- WHITESPACE@118..119 " "
- WORD@119..128 "Obtaining"
- WHITESPACE@128..129 " "
- WORD@129..136 "Digital"
- WHITESPACE@136..137 " "
- WORD@137..147 "Signatures"
- WHITESPACE@147..148 " "
- WORD@148..151 "and"
- WHITESPACE@151..152 " "
- WORD@152..162 "Public-Key"
- WHITESPACE@162..163 " "
- WORD@163..176 "Cryptosystems"
- R_CURLY@176..177 "}"
- COMMA@177..178 ","
- WHITESPACE@178..183 "\n "
- FIELD@183..197
- NAME@183..187 "year"
- WHITESPACE@187..188 " "
- EQ@188..189 "="
- WHITESPACE@189..190 " "
- CURLY_GROUP@190..196
- L_CURLY@190..191 "{"
- INTEGER@191..195 "1978"
- R_CURLY@195..196 "}"
- COMMA@196..197 ","
- WHITESPACE@197..202 "\n "
- FIELD@202..227
- NAME@202..212 "issue_date"
- WHITESPACE@212..213 " "
- EQ@213..214 "="
- WHITESPACE@214..215 " "
- CURLY_GROUP@215..226
- L_CURLY@215..216 "{"
- WORD@216..220 "Feb."
- WHITESPACE@220..221 " "
- INTEGER@221..225 "1978"
- R_CURLY@225..226 "}"
- COMMA@226..227 ","
- WHITESPACE@227..232 "\n "
- FIELD@232..282
- NAME@232..241 "publisher"
- WHITESPACE@241..242 " "
- EQ@242..243 "="
- WHITESPACE@243..244 " "
- CURLY_GROUP@244..281
- L_CURLY@244..245 "{"
- WORD@245..256 "Association"
- WHITESPACE@256..257 " "
- WORD@257..260 "for"
- WHITESPACE@260..261 " "
- WORD@261..270 "Computing"
- WHITESPACE@270..271 " "
- WORD@271..280 "Machinery"
- R_CURLY@280..281 "}"
- COMMA@281..282 ","
- WHITESPACE@282..287 "\n "
- FIELD@287..317
- NAME@287..294 "address"
- WHITESPACE@294..295 " "
- EQ@295..296 "="
- WHITESPACE@296..297 " "
- CURLY_GROUP@297..316
- L_CURLY@297..298 "{"
- WORD@298..301 "New"
- WHITESPACE@301..302 " "
- WORD@302..306 "York"
- COMMA@306..307 ","
- WHITESPACE@307..308 " "
- WORD@308..310 "NY"
- COMMA@310..311 ","
- WHITESPACE@311..312 " "
- WORD@312..315 "USA"
- R_CURLY@315..316 "}"
- COMMA@316..317 ","
- WHITESPACE@317..322 "\n "
- FIELD@322..336
- NAME@322..328 "volume"
- WHITESPACE@328..329 " "
- EQ@329..330 "="
- WHITESPACE@330..331 " "
- CURLY_GROUP@331..335
- L_CURLY@331..332 "{"
- INTEGER@332..334 "21"
- R_CURLY@334..335 "}"
- COMMA@335..336 ","
- WHITESPACE@336..341 "\n "
- FIELD@341..354
- NAME@341..347 "number"
- WHITESPACE@347..348 " "
- EQ@348..349 "="
- WHITESPACE@349..350 " "
- CURLY_GROUP@350..353
- L_CURLY@350..351 "{"
- INTEGER@351..352 "2"
- R_CURLY@352..353 "}"
- COMMA@353..354 ","
- WHITESPACE@354..359 "\n "
- FIELD@359..378
- NAME@359..363 "issn"
- WHITESPACE@363..364 " "
- EQ@364..365 "="
- WHITESPACE@365..366 " "
- CURLY_GROUP@366..377
- L_CURLY@366..367 "{"
- WORD@367..376 "0001-0782"
- R_CURLY@376..377 "}"
- COMMA@377..378 ","
- WHITESPACE@378..383 "\n "
- FIELD@383..429
- NAME@383..386 "url"
- WHITESPACE@386..387 " "
- EQ@387..388 "="
- WHITESPACE@388..389 " "
- CURLY_GROUP@389..428
- L_CURLY@389..390 "{"
- WORD@390..427 "https://doi.org/10.11 ..."
- R_CURLY@427..428 "}"
- COMMA@428..429 ","
- WHITESPACE@429..434 "\n "
- FIELD@434..464
- NAME@434..437 "doi"
- WHITESPACE@437..438 " "
- EQ@438..439 "="
- WHITESPACE@439..440 " "
- CURLY_GROUP@440..463
- L_CURLY@440..441 "{"
- WORD@441..462 "10.1145/359340.359342"
- R_CURLY@462..463 "}"
- COMMA@463..464 ","
- WHITESPACE@464..469 "\n "
- FIELD@469..493
- NAME@469..476 "journal"
- WHITESPACE@476..477 " "
- EQ@477..478 "="
- WHITESPACE@478..479 " "
- CURLY_GROUP@479..492
- L_CURLY@479..480 "{"
- WORD@480..487 "Commun."
- WHITESPACE@487..488 " "
- WORD@488..491 "ACM"
- R_CURLY@491..492 "}"
- COMMA@492..493 ","
- WHITESPACE@493..498 "\n "
- FIELD@498..512
- NAME@498..503 "month"
- WHITESPACE@503..504 " "
- EQ@504..505 "="
- WHITESPACE@505..506 " "
- CURLY_GROUP@506..511
- L_CURLY@506..507 "{"
- WORD@507..510 "feb"
- R_CURLY@510..511 "}"
- COMMA@511..512 ","
- WHITESPACE@512..517 "\n "
- FIELD@517..535
- NAME@517..522 "pages"
- WHITESPACE@522..523 " "
- EQ@523..524 "="
- WHITESPACE@524..525 " "
- CURLY_GROUP@525..534
- L_CURLY@525..526 "{"
- WORD@526..533 "120-126"
- R_CURLY@533..534 "}"
- COMMA@534..535 ","
- WHITESPACE@535..540 "\n "
- FIELD@540..555
- NAME@540..548 "numpages"
- WHITESPACE@548..549 " "
- EQ@549..550 "="
- WHITESPACE@550..551 " "
- CURLY_GROUP@551..554
- L_CURLY@551..552 "{"
- INTEGER@552..553 "7"
- R_CURLY@553..554 "}"
- COMMA@554..555 ","
- WHITESPACE@555..556 "\n"
- R_DELIM@556..557 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@001.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@001.txt.snap
deleted file mode 100644
index 39808505c1..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@001.txt.snap
+++ /dev/null
@@ -1,27 +0,0 @@
----
-source: crates/parser/src/build_log.rs
-expression: parse_build_log(&text)
-input_file: crates/parser/src/test_data/build_log/001.txt
----
-BuildLog {
- errors: [
- BuildError {
- relative_path: "./parent.tex",
- level: Warning,
- message: "Overfull \\hbox (200.00162pt too wide) in paragraph at lines 8--9",
- hint: None,
- line: Some(
- 7,
- ),
- },
- BuildError {
- relative_path: "./parent.tex",
- level: Warning,
- message: "Overfull \\vbox (3.19998pt too high) detected at line 23",
- hint: None,
- line: Some(
- 22,
- ),
- },
- ],
-}
diff --git a/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@002.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@002.txt.snap
deleted file mode 100644
index 6d4001e120..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@002.txt.snap
+++ /dev/null
@@ -1,20 +0,0 @@
----
-source: crates/parser/src/build_log.rs
-expression: parse_build_log(&text)
-input_file: crates/parser/src/test_data/build_log/002.txt
----
-BuildLog {
- errors: [
- BuildError {
- relative_path: "./child.tex",
- level: Error,
- message: "Undefined control sequence.",
- hint: Some(
- "\\foo",
- ),
- line: Some(
- 0,
- ),
- },
- ],
-}
diff --git a/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@003.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@003.txt.snap
deleted file mode 100644
index bbc50a44c2..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@003.txt.snap
+++ /dev/null
@@ -1,25 +0,0 @@
----
-source: crates/parser/src/build_log.rs
-expression: parse_build_log(&text)
-input_file: crates/parser/src/test_data/build_log/003.txt
----
-BuildLog {
- errors: [
- BuildError {
- relative_path: "./parent.tex",
- level: Warning,
- message: "LaTeX Warning: Citation `foo' on page 1 undefined on input line 6.",
- hint: None,
- line: Some(
- 5,
- ),
- },
- BuildError {
- relative_path: "./parent.tex",
- level: Warning,
- message: "LaTeX Warning: There were undefined references.",
- hint: None,
- line: None,
- },
- ],
-}
diff --git a/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@004.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@004.txt.snap
deleted file mode 100644
index c4f2ce5c72..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@004.txt.snap
+++ /dev/null
@@ -1,31 +0,0 @@
----
-source: crates/parser/src/build_log.rs
-expression: parse_build_log(&text)
-input_file: crates/parser/src/test_data/build_log/004.txt
----
-BuildLog {
- errors: [
- BuildError {
- relative_path: "/TexLive/texmf-dist/tex/generic/babel/babel.sty",
- level: Error,
- message: "Package babel Error: Unknown option `foo'. Either you misspelled it or the language definition file foo.ldf was not found.",
- hint: Some(
- "\\ProcessOptions*",
- ),
- line: Some(
- 392,
- ),
- },
- BuildError {
- relative_path: "/TexLive/texmf-dist/tex/generic/babel/babel.sty",
- level: Error,
- message: "Package babel Error: You haven't specified a language option.",
- hint: Some(
- "ry to proceed from here, type x to quit.}",
- ),
- line: Some(
- 425,
- ),
- },
- ],
-}
diff --git a/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@005.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@005.txt.snap
deleted file mode 100644
index dafd6a4506..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@005.txt.snap
+++ /dev/null
@@ -1,30 +0,0 @@
----
-source: crates/parser/src/build_log.rs
-expression: parse_build_log(&text)
-input_file: crates/parser/src/test_data/build_log/005.txt
----
-BuildLog {
- errors: [
- BuildError {
- relative_path: "./parent.tex",
- level: Warning,
- message: "Package biblatex Warning: 'babel/polyglossia' detected but 'csquotes' missing. Loading 'csquotes' recommended.",
- hint: None,
- line: None,
- },
- BuildError {
- relative_path: "./parent.tex",
- level: Warning,
- message: "LaTeX Warning: There were undefined references.",
- hint: None,
- line: None,
- },
- BuildError {
- relative_path: "./parent.tex",
- level: Warning,
- message: "Package biblatex Warning: Please (re)run Biber on the file: parent and rerun LaTeX afterwards.",
- hint: None,
- line: None,
- },
- ],
-}
diff --git a/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@006.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@006.txt.snap
deleted file mode 100644
index ca9318c68d..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@006.txt.snap
+++ /dev/null
@@ -1,69 +0,0 @@
----
-source: crates/parser/src/build_log.rs
-expression: parse_build_log(&text)
-input_file: crates/parser/src/test_data/build_log/006.txt
----
-BuildLog {
- errors: [
- BuildError {
- relative_path: "./parent.tex",
- level: Error,
- message: "Undefined control sequence.",
- hint: Some(
- "\\foo",
- ),
- line: Some(
- 6,
- ),
- },
- BuildError {
- relative_path: "./parent.tex",
- level: Error,
- message: "Missing $ inserted.",
- hint: Some(
- "\\bar",
- ),
- line: Some(
- 7,
- ),
- },
- BuildError {
- relative_path: "./parent.tex",
- level: Error,
- message: "Undefined control sequence.",
- hint: Some(
- "\\baz",
- ),
- line: Some(
- 8,
- ),
- },
- BuildError {
- relative_path: "./parent.tex",
- level: Error,
- message: "Missing { inserted.",
- hint: None,
- line: Some(
- 9,
- ),
- },
- BuildError {
- relative_path: "./parent.tex",
- level: Error,
- message: "Missing $ inserted.",
- hint: None,
- line: Some(
- 9,
- ),
- },
- BuildError {
- relative_path: "./parent.tex",
- level: Error,
- message: "Missing } inserted.",
- hint: None,
- line: Some(
- 9,
- ),
- },
- ],
-}
diff --git a/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@007.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@007.txt.snap
deleted file mode 100644
index bf0c832fe2..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@007.txt.snap
+++ /dev/null
@@ -1,20 +0,0 @@
----
-source: crates/parser/src/build_log.rs
-expression: parse_build_log(&text)
-input_file: crates/parser/src/test_data/build_log/007.txt
----
-BuildLog {
- errors: [
- BuildError {
- relative_path: "/some/folder/a.tex",
- level: Error,
- message: "Undefined control sequence.",
- hint: Some(
- "\\lsdkfjlskdfj",
- ),
- line: Some(
- 3,
- ),
- },
- ],
-}
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@block_comments.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@block_comments.txt.snap
deleted file mode 100644
index b93689a3b9..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@block_comments.txt.snap
+++ /dev/null
@@ -1,30 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/block_comments.txt
----
-ROOT@0..48
- PREAMBLE@0..48
- TEXT@0..4
- WORD@0..3 "Foo"
- LINE_BREAK@3..4 "\n"
- BLOCK_COMMENT@4..22
- COMMAND_NAME@4..12 "\\iffalse"
- LINE_BREAK@12..13 "\n"
- WORD@13..18 "Test1"
- LINE_BREAK@18..19 "\n"
- COMMAND_NAME@19..22 "\\fi"
- LINE_BREAK@22..23 "\n"
- TEXT@23..27
- WORD@23..26 "Bar"
- LINE_BREAK@26..27 "\n"
- BLOCK_COMMENT@27..44
- COMMAND_NAME@27..35 "\\iffalse"
- LINE_BREAK@35..36 "\n"
- COMMAND_NAME@36..40 "\\fii"
- LINE_BREAK@40..41 "\n"
- COMMAND_NAME@41..44 "\\fi"
- LINE_BREAK@44..45 "\n"
- TEXT@45..48
- WORD@45..48 "Baz"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@caption__caption_default.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@caption__caption_default.txt.snap
deleted file mode 100644
index bb82661568..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@caption__caption_default.txt.snap
+++ /dev/null
@@ -1,26 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/caption/caption_default.txt
----
-ROOT@0..27
- PREAMBLE@0..27
- CAPTION@0..27
- COMMAND_NAME@0..8 "\\caption"
- BRACK_GROUP@8..13
- L_BRACK@8..9 "["
- TEXT@9..12
- WORD@9..12 "qux"
- R_BRACK@12..13 "]"
- CURLY_GROUP@13..27
- L_CURLY@13..14 "{"
- TEXT@14..18
- WORD@14..17 "Foo"
- WHITESPACE@17..18 " "
- GENERIC_COMMAND@18..23
- COMMAND_NAME@18..22 "\\Bar"
- WHITESPACE@22..23 " "
- TEXT@23..26
- WORD@23..26 "Baz"
- R_CURLY@26..27 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@caption__caption_default_error.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@caption__caption_default_error.txt.snap
deleted file mode 100644
index 741d4ea0c4..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@caption__caption_default_error.txt.snap
+++ /dev/null
@@ -1,25 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/caption/caption_default_error.txt
----
-ROOT@0..26
- PREAMBLE@0..26
- CAPTION@0..26
- COMMAND_NAME@0..8 "\\caption"
- BRACK_GROUP@8..13
- L_BRACK@8..9 "["
- TEXT@9..12
- WORD@9..12 "qux"
- R_BRACK@12..13 "]"
- CURLY_GROUP@13..26
- L_CURLY@13..14 "{"
- TEXT@14..18
- WORD@14..17 "Foo"
- WHITESPACE@17..18 " "
- GENERIC_COMMAND@18..23
- COMMAND_NAME@18..22 "\\Bar"
- WHITESPACE@22..23 " "
- TEXT@23..26
- WORD@23..26 "Baz"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@caption__caption_figure.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@caption__caption_figure.txt.snap
deleted file mode 100644
index 56735873f9..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@caption__caption_figure.txt.snap
+++ /dev/null
@@ -1,30 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/caption/caption_figure.txt
----
-ROOT@0..39
- PREAMBLE@0..39
- ENVIRONMENT@0..39
- BEGIN@0..14
- COMMAND_NAME@0..6 "\\begin"
- CURLY_GROUP_WORD@6..14
- L_CURLY@6..7 "{"
- KEY@7..13
- WORD@7..13 "figure"
- R_CURLY@13..14 "}"
- CAPTION@14..27
- COMMAND_NAME@14..22 "\\caption"
- CURLY_GROUP@22..27
- L_CURLY@22..23 "{"
- TEXT@23..26
- WORD@23..26 "Foo"
- R_CURLY@26..27 "}"
- END@27..39
- COMMAND_NAME@27..31 "\\end"
- CURLY_GROUP_WORD@31..39
- L_CURLY@31..32 "{"
- KEY@32..38
- WORD@32..38 "figure"
- R_CURLY@38..39 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@caption__caption_minimal.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@caption__caption_minimal.txt.snap
deleted file mode 100644
index 12ef5ffebb..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@caption__caption_minimal.txt.snap
+++ /dev/null
@@ -1,21 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/caption/caption_minimal.txt
----
-ROOT@0..22
- PREAMBLE@0..22
- CAPTION@0..22
- COMMAND_NAME@0..8 "\\caption"
- CURLY_GROUP@8..22
- L_CURLY@8..9 "{"
- TEXT@9..13
- WORD@9..12 "Foo"
- WHITESPACE@12..13 " "
- GENERIC_COMMAND@13..18
- COMMAND_NAME@13..17 "\\Bar"
- WHITESPACE@17..18 " "
- TEXT@18..21
- WORD@18..21 "Baz"
- R_CURLY@21..22 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@caption__caption_minimal_error.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@caption__caption_minimal_error.txt.snap
deleted file mode 100644
index 7bc85c0b20..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@caption__caption_minimal_error.txt.snap
+++ /dev/null
@@ -1,20 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/caption/caption_minimal_error.txt
----
-ROOT@0..21
- PREAMBLE@0..21
- CAPTION@0..21
- COMMAND_NAME@0..8 "\\caption"
- CURLY_GROUP@8..21
- L_CURLY@8..9 "{"
- TEXT@9..13
- WORD@9..12 "Foo"
- WHITESPACE@12..13 " "
- GENERIC_COMMAND@13..18
- COMMAND_NAME@13..17 "\\Bar"
- WHITESPACE@17..18 " "
- TEXT@18..21
- WORD@18..21 "Baz"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_empty.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_empty.txt.snap
deleted file mode 100644
index d35246b26c..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_empty.txt.snap
+++ /dev/null
@@ -1,13 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/citation/citation_empty.txt
----
-ROOT@0..7
- PREAMBLE@0..7
- CITATION@0..7
- COMMAND_NAME@0..5 "\\cite"
- CURLY_GROUP_WORD_LIST@5..7
- L_CURLY@5..6 "{"
- R_CURLY@6..7 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_missing_brace.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_missing_brace.txt.snap
deleted file mode 100644
index 0855ea49ad..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_missing_brace.txt.snap
+++ /dev/null
@@ -1,14 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/citation/citation_missing_brace.txt
----
-ROOT@0..9
- PREAMBLE@0..9
- CITATION@0..9
- COMMAND_NAME@0..5 "\\cite"
- CURLY_GROUP_WORD_LIST@5..9
- L_CURLY@5..6 "{"
- KEY@6..9
- WORD@6..9 "foo"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_multiple_keys.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_multiple_keys.txt.snap
deleted file mode 100644
index e4d49e796e..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_multiple_keys.txt.snap
+++ /dev/null
@@ -1,19 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/citation/citation_multiple_keys.txt
----
-ROOT@0..15
- PREAMBLE@0..15
- CITATION@0..15
- COMMAND_NAME@0..5 "\\cite"
- CURLY_GROUP_WORD_LIST@5..15
- L_CURLY@5..6 "{"
- KEY@6..9
- WORD@6..9 "foo"
- COMMA@9..10 ","
- WHITESPACE@10..11 " "
- KEY@11..14
- WORD@11..14 "bar"
- R_CURLY@14..15 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_prenote.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_prenote.txt.snap
deleted file mode 100644
index 654b97dfd9..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_prenote.txt.snap
+++ /dev/null
@@ -1,20 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/citation/citation_prenote.txt
----
-ROOT@0..15
- PREAMBLE@0..15
- CITATION@0..15
- COMMAND_NAME@0..5 "\\cite"
- BRACK_GROUP@5..10
- L_BRACK@5..6 "["
- TEXT@6..9
- WORD@6..9 "foo"
- R_BRACK@9..10 "]"
- CURLY_GROUP_WORD_LIST@10..15
- L_CURLY@10..11 "{"
- KEY@11..14
- WORD@11..14 "bar"
- R_CURLY@14..15 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_prenote_postnote.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_prenote_postnote.txt.snap
deleted file mode 100644
index ca83218dfb..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_prenote_postnote.txt.snap
+++ /dev/null
@@ -1,25 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/citation/citation_prenote_postnote.txt
----
-ROOT@0..20
- PREAMBLE@0..20
- CITATION@0..20
- COMMAND_NAME@0..5 "\\cite"
- BRACK_GROUP@5..10
- L_BRACK@5..6 "["
- TEXT@6..9
- WORD@6..9 "foo"
- R_BRACK@9..10 "]"
- BRACK_GROUP@10..15
- L_BRACK@10..11 "["
- TEXT@11..14
- WORD@11..14 "bar"
- R_BRACK@14..15 "]"
- CURLY_GROUP_WORD_LIST@15..20
- L_CURLY@15..16 "{"
- KEY@16..19
- WORD@16..19 "baz"
- R_CURLY@19..20 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_redundant_comma.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_redundant_comma.txt.snap
deleted file mode 100644
index 015abf7011..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_redundant_comma.txt.snap
+++ /dev/null
@@ -1,17 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/citation/citation_redundant_comma.txt
----
-ROOT@0..12
- PREAMBLE@0..12
- CITATION@0..12
- COMMAND_NAME@0..5 "\\cite"
- CURLY_GROUP_WORD_LIST@5..12
- L_CURLY@5..6 "{"
- COMMA@6..7 ","
- KEY@7..10
- WORD@7..10 "foo"
- COMMA@10..11 ","
- R_CURLY@11..12 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_simple.txt.snap
deleted file mode 100644
index 99cc891d2b..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_simple.txt.snap
+++ /dev/null
@@ -1,15 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/citation/citation_simple.txt
----
-ROOT@0..10
- PREAMBLE@0..10
- CITATION@0..10
- COMMAND_NAME@0..5 "\\cite"
- CURLY_GROUP_WORD_LIST@5..10
- L_CURLY@5..6 "{"
- KEY@6..9
- WORD@6..9 "foo"
- R_CURLY@9..10 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_star.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_star.txt.snap
deleted file mode 100644
index 4b66a7e7d9..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_star.txt.snap
+++ /dev/null
@@ -1,15 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/citation/citation_star.txt
----
-ROOT@0..10
- PREAMBLE@0..10
- CITATION@0..10
- COMMAND_NAME@0..7 "\\nocite"
- CURLY_GROUP_WORD_LIST@7..10
- L_CURLY@7..8 "{"
- KEY@8..9
- WORD@8..9 "*"
- R_CURLY@9..10 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_definition_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_definition_simple.txt.snap
deleted file mode 100644
index d38951b148..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_definition_simple.txt.snap
+++ /dev/null
@@ -1,29 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/color/color_definition_simple.txt
----
-ROOT@0..33
- PREAMBLE@0..33
- COLOR_DEFINITION@0..33
- COMMAND_NAME@0..12 "\\definecolor"
- CURLY_GROUP_WORD@12..17
- L_CURLY@12..13 "{"
- KEY@13..16
- WORD@13..16 "foo"
- R_CURLY@16..17 "}"
- CURLY_GROUP_WORD@17..22
- L_CURLY@17..18 "{"
- KEY@18..21
- WORD@18..21 "rgb"
- R_CURLY@21..22 "}"
- CURLY_GROUP@22..33
- L_CURLY@22..23 "{"
- TEXT@23..32
- WORD@23..26 "255"
- COMMA@26..27 ","
- WORD@27..30 "168"
- COMMA@30..31 ","
- WORD@31..32 "0"
- R_CURLY@32..33 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_reference_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_reference_simple.txt.snap
deleted file mode 100644
index dbf153dc18..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_reference_simple.txt.snap
+++ /dev/null
@@ -1,15 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/color/color_reference_simple.txt
----
-ROOT@0..13
- PREAMBLE@0..13
- COLOR_REFERENCE@0..13
- COMMAND_NAME@0..6 "\\color"
- CURLY_GROUP_WORD@6..13
- L_CURLY@6..7 "{"
- KEY@7..12
- WORD@7..12 "black"
- R_CURLY@12..13 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_set_definition_error1.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_set_definition_error1.txt.snap
deleted file mode 100644
index 9e3317ac05..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_set_definition_error1.txt.snap
+++ /dev/null
@@ -1,33 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/color/color_set_definition_error1.txt
----
-ROOT@0..39
- PREAMBLE@0..39
- COLOR_SET_DEFINITION@0..39
- COMMAND_NAME@0..15 "\\definecolorset"
- BRACK_GROUP_WORD@15..19
- L_BRACK@15..16 "["
- KEY@16..18
- WORD@16..18 "ty"
- R_BRACK@18..19 "]"
- CURLY_GROUP_WORD_LIST@19..29
- L_CURLY@19..20 "{"
- KEY@20..23
- WORD@20..23 "rgb"
- COMMA@23..24 ","
- KEY@24..28
- WORD@24..28 "HTML"
- R_CURLY@28..29 "}"
- CURLY_GROUP_WORD@29..34
- L_CURLY@29..30 "{"
- KEY@30..33
- WORD@30..33 "foo"
- R_CURLY@33..34 "}"
- CURLY_GROUP_WORD@34..39
- L_CURLY@34..35 "{"
- KEY@35..38
- WORD@35..38 "bar"
- R_CURLY@38..39 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_set_definition_error2.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_set_definition_error2.txt.snap
deleted file mode 100644
index 04b75973e5..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_set_definition_error2.txt.snap
+++ /dev/null
@@ -1,23 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/color/color_set_definition_error2.txt
----
-ROOT@0..30
- PREAMBLE@0..30
- COLOR_SET_DEFINITION@0..30
- COMMAND_NAME@0..15 "\\definecolorset"
- CURLY_GROUP_WORD_LIST@15..25
- L_CURLY@15..16 "{"
- KEY@16..19
- WORD@16..19 "rgb"
- COMMA@19..20 ","
- KEY@20..24
- WORD@20..24 "HTML"
- R_CURLY@24..25 "}"
- CURLY_GROUP_WORD@25..30
- L_CURLY@25..26 "{"
- KEY@26..29
- WORD@26..29 "foo"
- R_CURLY@29..30 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_set_definition_error3.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_set_definition_error3.txt.snap
deleted file mode 100644
index 1133778fbf..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_set_definition_error3.txt.snap
+++ /dev/null
@@ -1,18 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/color/color_set_definition_error3.txt
----
-ROOT@0..25
- PREAMBLE@0..25
- COLOR_SET_DEFINITION@0..25
- COMMAND_NAME@0..15 "\\definecolorset"
- CURLY_GROUP_WORD_LIST@15..25
- L_CURLY@15..16 "{"
- KEY@16..19
- WORD@16..19 "rgb"
- COMMA@19..20 ","
- KEY@20..24
- WORD@20..24 "HTML"
- R_CURLY@24..25 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_set_definition_error4.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_set_definition_error4.txt.snap
deleted file mode 100644
index 11d175d732..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_set_definition_error4.txt.snap
+++ /dev/null
@@ -1,10 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/color/color_set_definition_error4.txt
----
-ROOT@0..15
- PREAMBLE@0..15
- COLOR_SET_DEFINITION@0..15
- COMMAND_NAME@0..15 "\\definecolorset"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_set_definition_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_set_definition_simple.txt.snap
deleted file mode 100644
index 903a780989..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_set_definition_simple.txt.snap
+++ /dev/null
@@ -1,38 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/color/color_set_definition_simple.txt
----
-ROOT@0..44
- PREAMBLE@0..44
- COLOR_SET_DEFINITION@0..44
- COMMAND_NAME@0..15 "\\definecolorset"
- BRACK_GROUP_WORD@15..19
- L_BRACK@15..16 "["
- KEY@16..18
- WORD@16..18 "ty"
- R_BRACK@18..19 "]"
- CURLY_GROUP_WORD_LIST@19..29
- L_CURLY@19..20 "{"
- KEY@20..23
- WORD@20..23 "rgb"
- COMMA@23..24 ","
- KEY@24..28
- WORD@24..28 "HTML"
- R_CURLY@28..29 "}"
- CURLY_GROUP_WORD@29..34
- L_CURLY@29..30 "{"
- KEY@30..33
- WORD@30..33 "foo"
- R_CURLY@33..34 "}"
- CURLY_GROUP_WORD@34..39
- L_CURLY@34..35 "{"
- KEY@35..38
- WORD@35..38 "bar"
- R_CURLY@38..39 "}"
- CURLY_GROUP_WORD@39..44
- L_CURLY@39..40 "{"
- KEY@40..43
- WORD@40..43 "baz"
- R_CURLY@43..44 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_no_argc.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_no_argc.txt.snap
deleted file mode 100644
index c4d51b8248..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_no_argc.txt.snap
+++ /dev/null
@@ -1,19 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/command_definition/command_definition_no_argc.txt
----
-ROOT@0..22
- PREAMBLE@0..22
- COMMAND_DEFINITION@0..22
- COMMAND_NAME@0..11 "\\newcommand"
- CURLY_GROUP_COMMAND@11..17
- L_CURLY@11..12 "{"
- COMMAND_NAME@12..16 "\\foo"
- R_CURLY@16..17 "}"
- CURLY_GROUP@17..22
- L_CURLY@17..18 "{"
- TEXT@18..21
- WORD@18..21 "foo"
- R_CURLY@21..22 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_no_impl.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_no_impl.txt.snap
deleted file mode 100644
index 4170bbb233..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_no_impl.txt.snap
+++ /dev/null
@@ -1,14 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/command_definition/command_definition_no_impl.txt
----
-ROOT@0..17
- PREAMBLE@0..17
- COMMAND_DEFINITION@0..17
- COMMAND_NAME@0..11 "\\newcommand"
- CURLY_GROUP_COMMAND@11..17
- L_CURLY@11..12 "{"
- COMMAND_NAME@12..16 "\\foo"
- R_CURLY@16..17 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_no_impl_error.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_no_impl_error.txt.snap
deleted file mode 100644
index 8a3bd36895..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_no_impl_error.txt.snap
+++ /dev/null
@@ -1,13 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/command_definition/command_definition_no_impl_error.txt
----
-ROOT@0..16
- PREAMBLE@0..16
- COMMAND_DEFINITION@0..16
- COMMAND_NAME@0..11 "\\newcommand"
- CURLY_GROUP_COMMAND@11..16
- L_CURLY@11..12 "{"
- COMMAND_NAME@12..16 "\\foo"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_optional.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_optional.txt.snap
deleted file mode 100644
index ff11be61d4..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_optional.txt.snap
+++ /dev/null
@@ -1,29 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/command_definition/command_definition_optional.txt
----
-ROOT@0..29
- PREAMBLE@0..29
- COMMAND_DEFINITION@0..29
- COMMAND_NAME@0..11 "\\newcommand"
- CURLY_GROUP_COMMAND@11..17
- L_CURLY@11..12 "{"
- COMMAND_NAME@12..16 "\\foo"
- R_CURLY@16..17 "}"
- BRACK_GROUP_WORD@17..20
- L_BRACK@17..18 "["
- KEY@18..19
- WORD@18..19 "1"
- R_BRACK@19..20 "]"
- BRACK_GROUP@20..25
- L_BRACK@20..21 "["
- TEXT@21..24
- WORD@21..24 "def"
- R_BRACK@24..25 "]"
- CURLY_GROUP@25..29
- L_CURLY@25..26 "{"
- TEXT@26..28
- WORD@26..28 "#1"
- R_CURLY@28..29 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_simple.txt.snap
deleted file mode 100644
index 1d5fb28686..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_simple.txt.snap
+++ /dev/null
@@ -1,25 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/command_definition/command_definition_simple.txt
----
-ROOT@0..23
- PREAMBLE@0..23
- COMMAND_DEFINITION@0..19
- COMMAND_NAME@0..11 "\\newcommand"
- BRACK_GROUP_WORD@11..14
- L_BRACK@11..12 "["
- KEY@12..13
- WORD@12..13 "1"
- R_BRACK@13..14 "]"
- CURLY_GROUP@14..19
- L_CURLY@14..15 "{"
- GENERIC_COMMAND@15..18
- COMMAND_NAME@15..18 "\\id"
- R_CURLY@18..19 "}"
- CURLY_GROUP@19..23
- L_CURLY@19..20 "{"
- TEXT@20..22
- WORD@20..22 "#1"
- R_CURLY@22..23 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_with_begin.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_with_begin.txt.snap
deleted file mode 100644
index 3e58111e6b..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_with_begin.txt.snap
+++ /dev/null
@@ -1,39 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/command_definition/command_definition_with_begin.txt
----
-ROOT@0..80
- PREAMBLE@0..80
- COMMAND_DEFINITION@0..80
- COMMAND_NAME@0..11 "\\newcommand"
- CURLY_GROUP_COMMAND@11..35
- L_CURLY@11..12 "{"
- COMMAND_NAME@12..34 "\\CVSubHeadingListStart"
- R_CURLY@34..35 "}"
- CURLY_GROUP@35..80
- L_CURLY@35..36 "{"
- BEGIN@36..79
- COMMAND_NAME@36..42 "\\begin"
- CURLY_GROUP_WORD@42..51
- L_CURLY@42..43 "{"
- KEY@43..50
- WORD@43..50 "itemize"
- R_CURLY@50..51 "}"
- BRACK_GROUP@51..79
- L_BRACK@51..52 "["
- TEXT@52..62
- WORD@52..62 "leftmargin"
- EQUALITY_SIGN@62..63 "="
- TEXT@63..75
- WORD@63..68 "0.5cm"
- COMMA@68..69 ","
- WHITESPACE@69..70 " "
- WORD@70..75 "label"
- EQUALITY_SIGN@75..76 "="
- CURLY_GROUP@76..78
- L_CURLY@76..77 "{"
- R_CURLY@77..78 "}"
- R_BRACK@78..79 "]"
- R_CURLY@79..80 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__math_operator_no_impl.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__math_operator_no_impl.txt.snap
deleted file mode 100644
index ea401584af..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__math_operator_no_impl.txt.snap
+++ /dev/null
@@ -1,14 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/command_definition/math_operator_no_impl.txt
----
-ROOT@0..26
- PREAMBLE@0..26
- MATH_OPERATOR@0..26
- COMMAND_NAME@0..20 "\\DeclareMathOperator"
- CURLY_GROUP_COMMAND@20..26
- L_CURLY@20..21 "{"
- COMMAND_NAME@21..25 "\\foo"
- R_CURLY@25..26 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__math_operator_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__math_operator_simple.txt.snap
deleted file mode 100644
index 2833943059..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__math_operator_simple.txt.snap
+++ /dev/null
@@ -1,19 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/command_definition/math_operator_simple.txt
----
-ROOT@0..31
- PREAMBLE@0..31
- MATH_OPERATOR@0..31
- COMMAND_NAME@0..20 "\\DeclareMathOperator"
- CURLY_GROUP_COMMAND@20..26
- L_CURLY@20..21 "{"
- COMMAND_NAME@21..25 "\\foo"
- R_CURLY@25..26 "}"
- CURLY_GROUP@26..31
- L_CURLY@26..27 "{"
- TEXT@27..30
- WORD@27..30 "foo"
- R_CURLY@30..31 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_asymptote.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_asymptote.txt.snap
deleted file mode 100644
index 48f11f6285..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_asymptote.txt.snap
+++ /dev/null
@@ -1,41 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/environment/environment_asymptote.txt
----
-ROOT@0..50
- PREAMBLE@0..50
- ENVIRONMENT@0..50
- BEGIN@0..16
- COMMAND_NAME@0..6 "\\begin"
- CURLY_GROUP_WORD@6..16
- L_CURLY@6..7 "{"
- KEY@7..10
- WORD@7..10 "asy"
- R_CURLY@10..11 "}"
- LINE_BREAK@11..12 "\n"
- WHITESPACE@12..16 " "
- TEXT@16..22
- WORD@16..22 "printf"
- MIXED_GROUP@22..39
- L_PAREN@22..23 "("
- TEXT@23..35
- WORD@23..29 "\"Hello"
- WHITESPACE@29..30 " "
- WORD@30..35 "World"
- GENERIC_COMMAND@35..37
- COMMAND_NAME@35..37 "\\n"
- TEXT@37..38
- WORD@37..38 "\""
- R_PAREN@38..39 ")"
- TEXT@39..41
- WORD@39..40 ";"
- LINE_BREAK@40..41 "\n"
- END@41..50
- COMMAND_NAME@41..45 "\\end"
- CURLY_GROUP_WORD@45..50
- L_CURLY@45..46 "{"
- KEY@46..49
- WORD@46..49 "asy"
- R_CURLY@49..50 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_definition.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_definition.txt.snap
deleted file mode 100644
index 2403d60ef1..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_definition.txt.snap
+++ /dev/null
@@ -1,40 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/environment/environment_definition.txt
----
-ROOT@0..47
- PREAMBLE@0..47
- ENVIRONMENT_DEFINITION@0..47
- COMMAND_NAME@0..15 "\\newenvironment"
- CURLY_GROUP_WORD@15..20
- L_CURLY@15..16 "{"
- KEY@16..19
- WORD@16..19 "bar"
- R_CURLY@19..20 "}"
- BRACK_GROUP_WORD@20..23
- L_BRACK@20..21 "["
- KEY@21..22
- WORD@21..22 "1"
- R_BRACK@22..23 "]"
- CURLY_GROUP@23..36
- L_CURLY@23..24 "{"
- GENERIC_COMMAND@24..35
- COMMAND_NAME@24..30 "\\begin"
- CURLY_GROUP@30..35
- L_CURLY@30..31 "{"
- TEXT@31..34
- WORD@31..34 "foo"
- R_CURLY@34..35 "}"
- R_CURLY@35..36 "}"
- CURLY_GROUP@36..47
- L_CURLY@36..37 "{"
- GENERIC_COMMAND@37..46
- COMMAND_NAME@37..41 "\\end"
- CURLY_GROUP@41..46
- L_CURLY@41..42 "{"
- TEXT@42..45
- WORD@42..45 "foo"
- R_CURLY@45..46 "}"
- R_CURLY@46..47 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_definition_optional_arg.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_definition_optional_arg.txt.snap
deleted file mode 100644
index ae0fbd931a..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_definition_optional_arg.txt.snap
+++ /dev/null
@@ -1,35 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/environment/environment_definition_optional_arg.txt
----
-ROOT@0..44
- PREAMBLE@0..44
- ENVIRONMENT_DEFINITION@0..44
- COMMAND_NAME@0..15 "\\newenvironment"
- CURLY_GROUP_WORD@15..20
- L_CURLY@15..16 "{"
- KEY@16..19
- WORD@16..19 "foo"
- R_CURLY@19..20 "}"
- BRACK_GROUP_WORD@20..23
- L_BRACK@20..21 "["
- KEY@21..22
- WORD@21..22 "1"
- R_BRACK@22..23 "]"
- BRACK_GROUP@23..32
- L_BRACK@23..24 "["
- TEXT@24..31
- WORD@24..31 "default"
- R_BRACK@31..32 "]"
- CURLY_GROUP@32..39
- L_CURLY@32..33 "{"
- TEXT@33..38
- WORD@33..38 "begin"
- R_CURLY@38..39 "}"
- CURLY_GROUP@39..44
- L_CURLY@39..40 "{"
- TEXT@40..43
- WORD@40..43 "end"
- R_CURLY@43..44 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_nested.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_nested.txt.snap
deleted file mode 100644
index b4e1d6a458..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_nested.txt.snap
+++ /dev/null
@@ -1,41 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/environment/environment_nested.txt
----
-ROOT@0..43
- PREAMBLE@0..43
- ENVIRONMENT@0..43
- BEGIN@0..12
- COMMAND_NAME@0..6 "\\begin"
- CURLY_GROUP_WORD@6..12
- L_CURLY@6..7 "{"
- KEY@7..10
- WORD@7..10 "foo"
- R_CURLY@10..11 "}"
- WHITESPACE@11..12 " "
- ENVIRONMENT@12..34
- BEGIN@12..24
- COMMAND_NAME@12..18 "\\begin"
- CURLY_GROUP_WORD@18..24
- L_CURLY@18..19 "{"
- KEY@19..22
- WORD@19..22 "qux"
- R_CURLY@22..23 "}"
- WHITESPACE@23..24 " "
- END@24..34
- COMMAND_NAME@24..28 "\\end"
- CURLY_GROUP_WORD@28..34
- L_CURLY@28..29 "{"
- KEY@29..32
- WORD@29..32 "baz"
- R_CURLY@32..33 "}"
- WHITESPACE@33..34 " "
- END@34..43
- COMMAND_NAME@34..38 "\\end"
- CURLY_GROUP_WORD@38..43
- L_CURLY@38..39 "{"
- KEY@39..42
- WORD@39..42 "bar"
- R_CURLY@42..43 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_nested_missing_braces.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_nested_missing_braces.txt.snap
deleted file mode 100644
index 5d67bfe665..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_nested_missing_braces.txt.snap
+++ /dev/null
@@ -1,42 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/environment/environment_nested_missing_braces.txt
----
-ROOT@0..52
- PREAMBLE@0..52
- ENVIRONMENT@0..52
- BEGIN@0..11
- COMMAND_NAME@0..6 "\\begin"
- CURLY_GROUP_WORD@6..11
- L_CURLY@6..7 "{"
- KEY@7..11
- WORD@7..10 "foo"
- WHITESPACE@10..11 " "
- ENVIRONMENT@11..44
- BEGIN@11..34
- COMMAND_NAME@11..17 "\\begin"
- CURLY_GROUP_WORD@17..34
- L_CURLY@17..18 "{"
- KEY@18..34
- WORD@18..21 "qux"
- WHITESPACE@21..22 " "
- WORD@22..27 "Hello"
- WHITESPACE@27..28 " "
- WORD@28..33 "World"
- WHITESPACE@33..34 " "
- END@34..44
- COMMAND_NAME@34..38 "\\end"
- CURLY_GROUP_WORD@38..44
- L_CURLY@38..39 "{"
- KEY@39..42
- WORD@39..42 "baz"
- R_CURLY@42..43 "}"
- WHITESPACE@43..44 " "
- END@44..52
- COMMAND_NAME@44..48 "\\end"
- CURLY_GROUP_WORD@48..52
- L_CURLY@48..49 "{"
- KEY@49..52
- WORD@49..52 "bar"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_simple.txt.snap
deleted file mode 100644
index f74b68fdf7..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_simple.txt.snap
+++ /dev/null
@@ -1,29 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/environment/environment_simple.txt
----
-ROOT@0..33
- PREAMBLE@0..33
- ENVIRONMENT@0..33
- BEGIN@0..12
- COMMAND_NAME@0..6 "\\begin"
- CURLY_GROUP_WORD@6..12
- L_CURLY@6..7 "{"
- KEY@7..10
- WORD@7..10 "foo"
- R_CURLY@10..11 "}"
- WHITESPACE@11..12 " "
- TEXT@12..24
- WORD@12..17 "Hello"
- WHITESPACE@17..18 " "
- WORD@18..23 "World"
- WHITESPACE@23..24 " "
- END@24..33
- COMMAND_NAME@24..28 "\\end"
- CURLY_GROUP_WORD@28..33
- L_CURLY@28..29 "{"
- KEY@29..32
- WORD@29..32 "bar"
- R_CURLY@32..33 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@equation.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@equation.txt.snap
deleted file mode 100644
index 71fff49984..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@equation.txt.snap
+++ /dev/null
@@ -1,17 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/equation.txt
----
-ROOT@0..13
- PREAMBLE@0..13
- EQUATION@0..13
- COMMAND_NAME@0..2 "\\["
- WHITESPACE@2..3 " "
- TEXT@3..11
- WORD@3..6 "foo"
- WHITESPACE@6..7 " "
- WORD@7..10 "bar"
- WHITESPACE@10..11 " "
- COMMAND_NAME@11..13 "\\]"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@equation_missing_begin.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@equation_missing_begin.txt.snap
deleted file mode 100644
index 1590fbed73..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@equation_missing_begin.txt.snap
+++ /dev/null
@@ -1,32 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/equation_missing_begin.txt
----
-ROOT@0..28
- PREAMBLE@0..28
- ENVIRONMENT@0..28
- BEGIN@0..10
- COMMAND_NAME@0..6 "\\begin"
- CURLY_GROUP_WORD@6..10
- L_CURLY@6..7 "{"
- KEY@7..8
- WORD@7..8 "a"
- R_CURLY@8..9 "}"
- WHITESPACE@9..10 " "
- TEXT@10..18
- WORD@10..13 "foo"
- WHITESPACE@13..14 " "
- WORD@14..17 "bar"
- WHITESPACE@17..18 " "
- GENERIC_COMMAND@18..21
- COMMAND_NAME@18..20 "\\]"
- WHITESPACE@20..21 " "
- END@21..28
- COMMAND_NAME@21..25 "\\end"
- CURLY_GROUP_WORD@25..28
- L_CURLY@25..26 "{"
- KEY@26..27
- WORD@26..27 "b"
- R_CURLY@27..28 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@generic_command_args.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@generic_command_args.txt.snap
deleted file mode 100644
index 9057d8f024..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@generic_command_args.txt.snap
+++ /dev/null
@@ -1,20 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/generic_command_args.txt
----
-ROOT@0..14
- PREAMBLE@0..14
- GENERIC_COMMAND@0..14
- COMMAND_NAME@0..4 "\\foo"
- CURLY_GROUP@4..9
- L_CURLY@4..5 "{"
- TEXT@5..8
- WORD@5..8 "bar"
- R_CURLY@8..9 "}"
- MIXED_GROUP@9..14
- L_BRACK@9..10 "["
- TEXT@10..13
- WORD@10..13 "qux"
- R_BRACK@13..14 "]"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@generic_command_empty.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@generic_command_empty.txt.snap
deleted file mode 100644
index ee8f593395..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@generic_command_empty.txt.snap
+++ /dev/null
@@ -1,10 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/generic_command_empty.txt
----
-ROOT@0..4
- PREAMBLE@0..4
- GENERIC_COMMAND@0..4
- COMMAND_NAME@0..4 "\\foo"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@generic_command_escape.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@generic_command_escape.txt.snap
deleted file mode 100644
index f973be4b12..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@generic_command_escape.txt.snap
+++ /dev/null
@@ -1,10 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/generic_command_escape.txt
----
-ROOT@0..2
- PREAMBLE@0..2
- GENERIC_COMMAND@0..2
- COMMAND_NAME@0..2 "\\#"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_declaration.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_declaration.txt.snap
deleted file mode 100644
index fb24afbf24..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_declaration.txt.snap
+++ /dev/null
@@ -1,50 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/glossary/acronym_declaration.txt
----
-ROOT@0..64
- PREAMBLE@0..64
- ACRONYM_DECLARATION@0..64
- COMMAND_NAME@0..15 "\\DeclareAcronym"
- CURLY_GROUP_WORD@15..19
- L_CURLY@15..16 "{"
- KEY@16..18
- WORD@16..18 "eg"
- R_CURLY@18..19 "}"
- CURLY_GROUP_KEY_VALUE@19..64
- L_CURLY@19..20 "{"
- KEY_VALUE_BODY@20..63
- KEY_VALUE_PAIR@20..31
- KEY@20..26
- WORD@20..25 "short"
- WHITESPACE@25..26 " "
- EQUALITY_SIGN@26..27 "="
- WHITESPACE@27..28 " "
- VALUE@28..31
- TEXT@28..31
- WORD@28..31 "e.g"
- COMMA@31..32 ","
- KEY_VALUE_PAIR@32..50
- KEY@32..37
- WORD@32..36 "long"
- WHITESPACE@36..37 " "
- EQUALITY_SIGN@37..38 "="
- WHITESPACE@38..39 " "
- VALUE@39..50
- TEXT@39..50
- WORD@39..42 "for"
- WHITESPACE@42..43 " "
- WORD@43..50 "example"
- COMMA@50..51 ","
- KEY_VALUE_PAIR@51..63
- KEY@51..55
- WORD@51..54 "tag"
- WHITESPACE@54..55 " "
- EQUALITY_SIGN@55..56 "="
- WHITESPACE@56..57 " "
- VALUE@57..63
- TEXT@57..63
- WORD@57..63 "abbrev"
- R_CURLY@63..64 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_definition_options.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_definition_options.txt.snap
deleted file mode 100644
index 8dd76abbf3..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_definition_options.txt.snap
+++ /dev/null
@@ -1,47 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/glossary/acronym_definition_options.txt
----
-ROOT@0..76
- PREAMBLE@0..76
- ACRONYM_DEFINITION@0..76
- COMMAND_NAME@0..11 "\\newacronym"
- BRACK_GROUP_KEY_VALUE@11..43
- L_BRACK@11..12 "["
- KEY_VALUE_BODY@12..42
- KEY_VALUE_PAIR@12..42
- KEY@12..22
- WORD@12..22 "longplural"
- EQUALITY_SIGN@22..23 "="
- VALUE@23..42
- CURLY_GROUP@23..42
- L_CURLY@23..24 "{"
- TEXT@24..41
- WORD@24..30 "Frames"
- WHITESPACE@30..31 " "
- WORD@31..34 "per"
- WHITESPACE@34..35 " "
- WORD@35..41 "Second"
- R_CURLY@41..42 "}"
- R_BRACK@42..43 "]"
- CURLY_GROUP_WORD@43..53
- L_CURLY@43..44 "{"
- KEY@44..52
- WORD@44..52 "fpsLabel"
- R_CURLY@52..53 "}"
- CURLY_GROUP@53..58
- L_CURLY@53..54 "{"
- TEXT@54..57
- WORD@54..57 "FPS"
- R_CURLY@57..58 "}"
- CURLY_GROUP@58..76
- L_CURLY@58..59 "{"
- TEXT@59..75
- WORD@59..64 "Frame"
- WHITESPACE@64..65 " "
- WORD@65..68 "per"
- WHITESPACE@68..69 " "
- WORD@69..75 "Second"
- R_CURLY@75..76 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_definition_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_definition_simple.txt.snap
deleted file mode 100644
index cf630440f8..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_definition_simple.txt.snap
+++ /dev/null
@@ -1,29 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/glossary/acronym_definition_simple.txt
----
-ROOT@0..44
- PREAMBLE@0..44
- ACRONYM_DEFINITION@0..44
- COMMAND_NAME@0..11 "\\newacronym"
- CURLY_GROUP_WORD@11..21
- L_CURLY@11..12 "{"
- KEY@12..20
- WORD@12..20 "fpsLabel"
- R_CURLY@20..21 "}"
- CURLY_GROUP@21..26
- L_CURLY@21..22 "{"
- TEXT@22..25
- WORD@22..25 "FPS"
- R_CURLY@25..26 "}"
- CURLY_GROUP@26..44
- L_CURLY@26..27 "{"
- TEXT@27..43
- WORD@27..32 "Frame"
- WHITESPACE@32..33 " "
- WORD@33..36 "per"
- WHITESPACE@36..37 " "
- WORD@37..43 "Second"
- R_CURLY@43..44 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_package.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_package.txt.snap
deleted file mode 100644
index 721dfa5bf9..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_package.txt.snap
+++ /dev/null
@@ -1,30 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/glossary/acronym_package.txt
----
-ROOT@0..35
- PREAMBLE@0..35
- ACRONYM_DEFINITION@0..35
- COMMAND_NAME@0..5 "\\acro"
- CURLY_GROUP_WORD@5..10
- L_CURLY@5..6 "{"
- KEY@6..9
- WORD@6..9 "fps"
- R_CURLY@9..10 "}"
- BRACK_GROUP@10..15
- L_BRACK@10..11 "["
- TEXT@11..14
- WORD@11..14 "FPS"
- R_BRACK@14..15 "]"
- CURLY_GROUP@15..35
- L_CURLY@15..16 "{"
- TEXT@16..33
- WORD@16..22 "Frames"
- WHITESPACE@22..23 " "
- WORD@23..26 "per"
- WHITESPACE@26..27 " "
- WORD@27..33 "Second"
- R_CURLY@33..34 "}"
- LINE_BREAK@34..35 "\n"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_reference_options.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_reference_options.txt.snap
deleted file mode 100644
index 6e470c3add..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_reference_options.txt.snap
+++ /dev/null
@@ -1,30 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/glossary/acronym_reference_options.txt
----
-ROOT@0..32
- PREAMBLE@0..32
- ACRONYM_REFERENCE@0..32
- COMMAND_NAME@0..9 "\\acrshort"
- BRACK_GROUP_KEY_VALUE@9..22
- L_BRACK@9..10 "["
- KEY_VALUE_BODY@10..21
- KEY_VALUE_PAIR@10..17
- KEY@10..13
- WORD@10..13 "foo"
- EQUALITY_SIGN@13..14 "="
- VALUE@14..17
- TEXT@14..17
- WORD@14..17 "bar"
- COMMA@17..18 ","
- KEY_VALUE_PAIR@18..21
- KEY@18..21
- WORD@18..21 "baz"
- R_BRACK@21..22 "]"
- CURLY_GROUP_WORD@22..32
- L_CURLY@22..23 "{"
- KEY@23..31
- WORD@23..31 "fpsLabel"
- R_CURLY@31..32 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_reference_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_reference_simple.txt.snap
deleted file mode 100644
index 5b83135522..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_reference_simple.txt.snap
+++ /dev/null
@@ -1,15 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/glossary/acronym_reference_simple.txt
----
-ROOT@0..19
- PREAMBLE@0..19
- ACRONYM_REFERENCE@0..19
- COMMAND_NAME@0..9 "\\acrshort"
- CURLY_GROUP_WORD@9..19
- L_CURLY@9..10 "{"
- KEY@10..18
- WORD@10..18 "fpsLabel"
- R_CURLY@18..19 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__glossary_entry_definition_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__glossary_entry_definition_simple.txt.snap
deleted file mode 100644
index 52037c6bbf..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__glossary_entry_definition_simple.txt.snap
+++ /dev/null
@@ -1,34 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/glossary/glossary_entry_definition_simple.txt
----
-ROOT@0..39
- PREAMBLE@0..39
- GLOSSARY_ENTRY_DEFINITION@0..39
- COMMAND_NAME@0..17 "\\newglossaryentry"
- CURLY_GROUP_WORD@17..22
- L_CURLY@17..18 "{"
- KEY@18..21
- WORD@18..21 "foo"
- R_CURLY@21..22 "}"
- CURLY_GROUP_KEY_VALUE@22..39
- L_CURLY@22..23 "{"
- KEY_VALUE_BODY@23..38
- KEY_VALUE_PAIR@23..32
- KEY@23..27
- WORD@23..26 "bar"
- WHITESPACE@26..27 " "
- EQUALITY_SIGN@27..28 "="
- WHITESPACE@28..29 " "
- VALUE@29..32
- TEXT@29..32
- WORD@29..32 "baz"
- COMMA@32..33 ","
- WHITESPACE@33..34 " "
- KEY_VALUE_PAIR@34..37
- KEY@34..37
- WORD@34..37 "qux"
- COMMA@37..38 ","
- R_CURLY@38..39 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__glossary_entry_reference_options.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__glossary_entry_reference_options.txt.snap
deleted file mode 100644
index 07d1d8cdfa..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__glossary_entry_reference_options.txt.snap
+++ /dev/null
@@ -1,33 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/glossary/glossary_entry_reference_options.txt
----
-ROOT@0..25
- PREAMBLE@0..25
- GLOSSARY_ENTRY_REFERENCE@0..25
- COMMAND_NAME@0..4 "\\gls"
- BRACK_GROUP_KEY_VALUE@4..20
- L_BRACK@4..5 "["
- KEY_VALUE_BODY@5..19
- KEY_VALUE_PAIR@5..14
- KEY@5..9
- WORD@5..8 "foo"
- WHITESPACE@8..9 " "
- EQUALITY_SIGN@9..10 "="
- WHITESPACE@10..11 " "
- VALUE@11..14
- TEXT@11..14
- WORD@11..14 "bar"
- COMMA@14..15 ","
- WHITESPACE@15..16 " "
- KEY_VALUE_PAIR@16..19
- KEY@16..19
- WORD@16..19 "qux"
- R_BRACK@19..20 "]"
- CURLY_GROUP_WORD@20..25
- L_CURLY@20..21 "{"
- KEY@21..24
- WORD@21..24 "baz"
- R_CURLY@24..25 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__glossary_entry_reference_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__glossary_entry_reference_simple.txt.snap
deleted file mode 100644
index db50fc3298..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__glossary_entry_reference_simple.txt.snap
+++ /dev/null
@@ -1,15 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/glossary/glossary_entry_reference_simple.txt
----
-ROOT@0..9
- PREAMBLE@0..9
- GLOSSARY_ENTRY_REFERENCE@0..9
- COMMAND_NAME@0..4 "\\gls"
- CURLY_GROUP_WORD@4..9
- L_CURLY@4..5 "{"
- KEY@5..8
- WORD@5..8 "foo"
- R_CURLY@8..9 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@graphics_path.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@graphics_path.txt.snap
deleted file mode 100644
index 80bf58d783..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@graphics_path.txt.snap
+++ /dev/null
@@ -1,18 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/graphics_path.txt
----
-ROOT@0..28
- PREAMBLE@0..28
- GRAPHICS_PATH@0..28
- COMMAND_NAME@0..13 "\\graphicspath"
- CURLY_GROUP@13..28
- L_CURLY@13..14 "{"
- CURLY_GROUP_WORD@14..27
- L_CURLY@14..15 "{"
- KEY@15..26
- WORD@15..26 "../figures/"
- R_CURLY@26..27 "}"
- R_CURLY@27..28 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@graphics_path_command.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@graphics_path_command.txt.snap
deleted file mode 100644
index c8521d2de7..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@graphics_path_command.txt.snap
+++ /dev/null
@@ -1,23 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/graphics_path_command.txt
----
-ROOT@0..32
- PREAMBLE@0..32
- GRAPHICS_PATH@0..32
- COMMAND_NAME@0..13 "\\graphicspath"
- CURLY_GROUP@13..32
- L_CURLY@13..14 "{"
- CURLY_GROUP_WORD@14..31
- L_CURLY@14..15 "{"
- KEY@15..30
- COMMAND_NAME@15..22 "\\subfix"
- CURLY_GROUP_WORD@22..30
- L_CURLY@22..23 "{"
- KEY@23..29
- WORD@23..29 "./img/"
- R_CURLY@29..30 "}"
- R_CURLY@30..31 "}"
- R_CURLY@31..32 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@graphics_path_options.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@graphics_path_options.txt.snap
deleted file mode 100644
index 4ca53d2fe2..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@graphics_path_options.txt.snap
+++ /dev/null
@@ -1,23 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/graphics_path_options.txt
----
-ROOT@0..33
- PREAMBLE@0..33
- GRAPHICS_PATH@0..13
- COMMAND_NAME@0..13 "\\graphicspath"
- MIXED_GROUP@13..18
- L_BRACK@13..14 "["
- TEXT@14..17
- WORD@14..17 "foo"
- R_BRACK@17..18 "]"
- CURLY_GROUP@18..33
- L_CURLY@18..19 "{"
- CURLY_GROUP@19..32
- L_CURLY@19..20 "{"
- TEXT@20..31
- WORD@20..31 "../figures/"
- R_CURLY@31..32 "}"
- R_CURLY@32..33 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__curly_group_missing_end.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__curly_group_missing_end.txt.snap
deleted file mode 100644
index 902cacfdd5..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__curly_group_missing_end.txt.snap
+++ /dev/null
@@ -1,14 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/group/curly_group_missing_end.txt
----
-ROOT@0..12
- PREAMBLE@0..12
- CURLY_GROUP@0..12
- L_CURLY@0..1 "{"
- TEXT@1..12
- WORD@1..6 "hello"
- WHITESPACE@6..7 " "
- WORD@7..12 "world"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__curly_group_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__curly_group_simple.txt.snap
deleted file mode 100644
index 4f1b8473be..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__curly_group_simple.txt.snap
+++ /dev/null
@@ -1,15 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/group/curly_group_simple.txt
----
-ROOT@0..13
- PREAMBLE@0..13
- CURLY_GROUP@0..13
- L_CURLY@0..1 "{"
- TEXT@1..12
- WORD@1..6 "hello"
- WHITESPACE@6..7 " "
- WORD@7..12 "world"
- R_CURLY@12..13 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__equation_missing_end.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__equation_missing_end.txt.snap
deleted file mode 100644
index dfddb20f85..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__equation_missing_end.txt.snap
+++ /dev/null
@@ -1,32 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/group/equation_missing_end.txt
----
-ROOT@0..28
- PREAMBLE@0..28
- ENVIRONMENT@0..28
- BEGIN@0..10
- COMMAND_NAME@0..6 "\\begin"
- CURLY_GROUP_WORD@6..10
- L_CURLY@6..7 "{"
- KEY@7..8
- WORD@7..8 "a"
- R_CURLY@8..9 "}"
- WHITESPACE@9..10 " "
- EQUATION@10..21
- COMMAND_NAME@10..12 "\\["
- WHITESPACE@12..13 " "
- TEXT@13..21
- WORD@13..16 "foo"
- WHITESPACE@16..17 " "
- WORD@17..20 "bar"
- WHITESPACE@20..21 " "
- END@21..28
- COMMAND_NAME@21..25 "\\end"
- CURLY_GROUP_WORD@25..28
- L_CURLY@25..26 "{"
- KEY@26..27
- WORD@26..27 "b"
- R_CURLY@27..28 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__escaped_brackets.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__escaped_brackets.txt.snap
deleted file mode 100644
index d9e1636cf8..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__escaped_brackets.txt.snap
+++ /dev/null
@@ -1,18 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/group/escaped_brackets.txt
----
-ROOT@0..6
- PREAMBLE@0..6
- CURLY_GROUP@0..3
- L_CURLY@0..1 "{"
- MIXED_GROUP@1..2
- L_BRACK@1..2 "["
- R_CURLY@2..3 "}"
- CURLY_GROUP@3..6
- L_CURLY@3..4 "{"
- ERROR@4..5
- R_BRACK@4..5 "]"
- R_CURLY@5..6 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__unmatched_braces.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__unmatched_braces.txt.snap
deleted file mode 100644
index 922776c8c5..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__unmatched_braces.txt.snap
+++ /dev/null
@@ -1,12 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/group/unmatched_braces.txt
----
-ROOT@0..2
- PREAMBLE@0..2
- ERROR@0..1
- R_CURLY@0..1 "}"
- CURLY_GROUP@1..2
- L_CURLY@1..2 "{"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__unmatched_brackets.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__unmatched_brackets.txt.snap
deleted file mode 100644
index 12e455b505..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__unmatched_brackets.txt.snap
+++ /dev/null
@@ -1,12 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/group/unmatched_brackets.txt
----
-ROOT@0..2
- PREAMBLE@0..2
- ERROR@0..1
- R_BRACK@0..1 "]"
- MIXED_GROUP@1..2
- L_BRACK@1..2 "["
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__unmatched_brackets_with_group.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__unmatched_brackets_with_group.txt.snap
deleted file mode 100644
index 765c7e4a8d..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__unmatched_brackets_with_group.txt.snap
+++ /dev/null
@@ -1,15 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/group/unmatched_brackets_with_group.txt
----
-ROOT@0..4
- PREAMBLE@0..4
- CURLY_GROUP@0..4
- L_CURLY@0..1 "{"
- ERROR@1..2
- R_BRACK@1..2 "]"
- MIXED_GROUP@2..3
- L_BRACK@2..3 "["
- R_CURLY@3..4 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@hello_world.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@hello_world.txt.snap
deleted file mode 100644
index 27bca69893..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@hello_world.txt.snap
+++ /dev/null
@@ -1,12 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/hello_world.txt
----
-ROOT@0..12
- PREAMBLE@0..12
- TEXT@0..12
- WORD@0..5 "Hello"
- WHITESPACE@5..6 " "
- WORD@6..12 "World!"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__biblatex_include_options.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__biblatex_include_options.txt.snap
deleted file mode 100644
index e3e34a68f6..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__biblatex_include_options.txt.snap
+++ /dev/null
@@ -1,31 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/include/biblatex_include_options.txt
----
-ROOT@0..42
- PREAMBLE@0..42
- BIBLATEX_INCLUDE@0..42
- COMMAND_NAME@0..15 "\\addbibresource"
- BRACK_GROUP_KEY_VALUE@15..29
- L_BRACK@15..16 "["
- KEY_VALUE_BODY@16..28
- KEY_VALUE_PAIR@16..23
- KEY@16..19
- WORD@16..19 "foo"
- EQUALITY_SIGN@19..20 "="
- VALUE@20..23
- TEXT@20..23
- WORD@20..23 "bar"
- COMMA@23..24 ","
- WHITESPACE@24..25 " "
- KEY_VALUE_PAIR@25..28
- KEY@25..28
- WORD@25..28 "baz"
- R_BRACK@28..29 "]"
- CURLY_GROUP_WORD_LIST@29..42
- L_CURLY@29..30 "{"
- KEY@30..41
- WORD@30..41 "foo/bar.bib"
- R_CURLY@41..42 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__biblatex_include_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__biblatex_include_simple.txt.snap
deleted file mode 100644
index b4b4193dba..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__biblatex_include_simple.txt.snap
+++ /dev/null
@@ -1,15 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/include/biblatex_include_simple.txt
----
-ROOT@0..28
- PREAMBLE@0..28
- BIBLATEX_INCLUDE@0..28
- COMMAND_NAME@0..15 "\\addbibresource"
- CURLY_GROUP_WORD_LIST@15..28
- L_CURLY@15..16 "{"
- KEY@16..27
- WORD@16..27 "foo/bar.bib"
- R_CURLY@27..28 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__bibtex_include_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__bibtex_include_simple.txt.snap
deleted file mode 100644
index c39c9e2c68..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__bibtex_include_simple.txt.snap
+++ /dev/null
@@ -1,15 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/include/bibtex_include_simple.txt
----
-ROOT@0..22
- PREAMBLE@0..22
- BIBTEX_INCLUDE@0..22
- COMMAND_NAME@0..13 "\\bibliography"
- CURLY_GROUP_WORD_LIST@13..22
- L_CURLY@13..14 "{"
- KEY@14..21
- WORD@14..21 "foo/bar"
- R_CURLY@21..22 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__class_include_empty.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__class_include_empty.txt.snap
deleted file mode 100644
index a8d5a7077f..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__class_include_empty.txt.snap
+++ /dev/null
@@ -1,13 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/include/class_include_empty.txt
----
-ROOT@0..16
- PREAMBLE@0..16
- CLASS_INCLUDE@0..16
- COMMAND_NAME@0..14 "\\documentclass"
- CURLY_GROUP_WORD_LIST@14..16
- L_CURLY@14..15 "{"
- R_CURLY@15..16 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__class_include_options.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__class_include_options.txt.snap
deleted file mode 100644
index 4cf4473cfa..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__class_include_options.txt.snap
+++ /dev/null
@@ -1,38 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/include/class_include_options.txt
----
-ROOT@0..44
- PREAMBLE@0..44
- CLASS_INCLUDE@0..44
- COMMAND_NAME@0..14 "\\documentclass"
- BRACK_GROUP_KEY_VALUE@14..35
- L_BRACK@14..15 "["
- KEY_VALUE_BODY@15..34
- KEY_VALUE_PAIR@15..24
- KEY@15..19
- WORD@15..18 "foo"
- WHITESPACE@18..19 " "
- EQUALITY_SIGN@19..20 "="
- WHITESPACE@20..21 " "
- VALUE@21..24
- TEXT@21..24
- WORD@21..24 "bar"
- COMMA@24..25 ","
- WHITESPACE@25..26 " "
- KEY_VALUE_PAIR@26..29
- KEY@26..29
- WORD@26..29 "baz"
- COMMA@29..30 ","
- WHITESPACE@30..31 " "
- KEY_VALUE_PAIR@31..34
- KEY@31..34
- WORD@31..34 "qux"
- R_BRACK@34..35 "]"
- CURLY_GROUP_WORD_LIST@35..44
- L_CURLY@35..36 "{"
- KEY@36..43
- WORD@36..43 "article"
- R_CURLY@43..44 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__class_include_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__class_include_simple.txt.snap
deleted file mode 100644
index a6be2ec496..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__class_include_simple.txt.snap
+++ /dev/null
@@ -1,15 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/include/class_include_simple.txt
----
-ROOT@0..23
- PREAMBLE@0..23
- CLASS_INCLUDE@0..23
- COMMAND_NAME@0..14 "\\documentclass"
- CURLY_GROUP_WORD_LIST@14..23
- L_CURLY@14..15 "{"
- KEY@15..22
- WORD@15..22 "article"
- R_CURLY@22..23 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__graphics_include_command.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__graphics_include_command.txt.snap
deleted file mode 100644
index 6f9f736d1f..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__graphics_include_command.txt.snap
+++ /dev/null
@@ -1,31 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/include/graphics_include_command.txt
----
-ROOT@0..52
- PREAMBLE@0..52
- GRAPHICS_INCLUDE@0..52
- COMMAND_NAME@0..16 "\\includegraphics"
- BRACK_GROUP_KEY_VALUE@16..37
- L_BRACK@16..17 "["
- KEY_VALUE_BODY@17..36
- KEY_VALUE_PAIR@17..36
- KEY@17..22
- WORD@17..22 "width"
- EQUALITY_SIGN@22..23 "="
- VALUE@23..36
- TEXT@23..26
- WORD@23..26 "0.5"
- GENERIC_COMMAND@26..36
- COMMAND_NAME@26..36 "\\textwidth"
- R_BRACK@36..37 "]"
- CURLY_GROUP_WORD_LIST@37..52
- L_CURLY@37..38 "{"
- KEY@38..51
- COMMAND_NAME@38..42 "\\foo"
- WORD@42..43 "."
- COMMAND_NAME@43..47 "\\bar"
- WORD@47..51 ".pdf"
- R_CURLY@51..52 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__graphics_include_complicated_options.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__graphics_include_complicated_options.txt.snap
deleted file mode 100644
index 4b422dcd64..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__graphics_include_complicated_options.txt.snap
+++ /dev/null
@@ -1,26 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/include/graphics_include_complicated_options.txt
----
-ROOT@0..39
- PREAMBLE@0..39
- GRAPHICS_INCLUDE@0..39
- COMMAND_NAME@0..16 "\\includegraphics"
- BRACK_GROUP_KEY_VALUE@16..37
- L_BRACK@16..17 "["
- KEY_VALUE_BODY@17..36
- KEY_VALUE_PAIR@17..36
- KEY@17..22
- WORD@17..22 "width"
- EQUALITY_SIGN@22..23 "="
- VALUE@23..36
- TEXT@23..26
- WORD@23..26 "0.5"
- GENERIC_COMMAND@26..36
- COMMAND_NAME@26..36 "\\textwidth"
- R_BRACK@36..37 "]"
- CURLY_GROUP_WORD_LIST@37..39
- L_CURLY@37..38 "{"
- R_CURLY@38..39 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__graphics_include_options.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__graphics_include_options.txt.snap
deleted file mode 100644
index 656d68c1ef..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__graphics_include_options.txt.snap
+++ /dev/null
@@ -1,26 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/include/graphics_include_options.txt
----
-ROOT@0..39
- PREAMBLE@0..39
- GRAPHICS_INCLUDE@0..39
- COMMAND_NAME@0..16 "\\includegraphics"
- BRACK_GROUP_KEY_VALUE@16..26
- L_BRACK@16..17 "["
- KEY_VALUE_BODY@17..25
- KEY_VALUE_PAIR@17..25
- KEY@17..22
- WORD@17..22 "scale"
- EQUALITY_SIGN@22..23 "="
- VALUE@23..25
- TEXT@23..25
- WORD@23..25 ".5"
- R_BRACK@25..26 "]"
- CURLY_GROUP_WORD_LIST@26..39
- L_CURLY@26..27 "{"
- KEY@27..38
- WORD@27..38 "foo/bar.pdf"
- R_CURLY@38..39 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__graphics_include_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__graphics_include_simple.txt.snap
deleted file mode 100644
index 39cb634ec2..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__graphics_include_simple.txt.snap
+++ /dev/null
@@ -1,15 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/include/graphics_include_simple.txt
----
-ROOT@0..29
- PREAMBLE@0..29
- GRAPHICS_INCLUDE@0..29
- COMMAND_NAME@0..16 "\\includegraphics"
- CURLY_GROUP_WORD_LIST@16..29
- L_CURLY@16..17 "{"
- KEY@17..28
- WORD@17..28 "foo/bar.pdf"
- R_CURLY@28..29 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__import_incomplete.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__import_incomplete.txt.snap
deleted file mode 100644
index 645133e65c..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__import_incomplete.txt.snap
+++ /dev/null
@@ -1,14 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/include/import_incomplete.txt
----
-ROOT@0..11
- PREAMBLE@0..11
- IMPORT@0..11
- COMMAND_NAME@0..7 "\\import"
- CURLY_GROUP_WORD@7..11
- L_CURLY@7..8 "{"
- KEY@8..11
- WORD@8..11 "foo"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__import_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__import_simple.txt.snap
deleted file mode 100644
index b383dc435e..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__import_simple.txt.snap
+++ /dev/null
@@ -1,20 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/include/import_simple.txt
----
-ROOT@0..17
- PREAMBLE@0..17
- IMPORT@0..17
- COMMAND_NAME@0..7 "\\import"
- CURLY_GROUP_WORD@7..12
- L_CURLY@7..8 "{"
- KEY@8..11
- WORD@8..11 "foo"
- R_CURLY@11..12 "}"
- CURLY_GROUP_WORD@12..17
- L_CURLY@12..13 "{"
- KEY@13..16
- WORD@13..16 "bar"
- R_CURLY@16..17 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__inkscape_include_options.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__inkscape_include_options.txt.snap
deleted file mode 100644
index 2c2c176fdb..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__inkscape_include_options.txt.snap
+++ /dev/null
@@ -1,26 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/include/inkscape_include_options.txt
----
-ROOT@0..30
- PREAMBLE@0..30
- SVG_INCLUDE@0..30
- COMMAND_NAME@0..11 "\\includesvg"
- BRACK_GROUP_KEY_VALUE@11..21
- L_BRACK@11..12 "["
- KEY_VALUE_BODY@12..20
- KEY_VALUE_PAIR@12..20
- KEY@12..17
- WORD@12..17 "scale"
- EQUALITY_SIGN@17..18 "="
- VALUE@18..20
- TEXT@18..20
- WORD@18..20 ".5"
- R_BRACK@20..21 "]"
- CURLY_GROUP_WORD_LIST@21..30
- L_CURLY@21..22 "{"
- KEY@22..29
- WORD@22..29 "foo/bar"
- R_CURLY@29..30 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__inkscape_include_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__inkscape_include_simple.txt.snap
deleted file mode 100644
index 62cb7486db..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__inkscape_include_simple.txt.snap
+++ /dev/null
@@ -1,15 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/include/inkscape_include_simple.txt
----
-ROOT@0..20
- PREAMBLE@0..20
- SVG_INCLUDE@0..20
- COMMAND_NAME@0..11 "\\includesvg"
- CURLY_GROUP_WORD_LIST@11..20
- L_CURLY@11..12 "{"
- KEY@12..19
- WORD@12..19 "foo/bar"
- R_CURLY@19..20 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__latex_include_equality_sign.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__latex_include_equality_sign.txt.snap
deleted file mode 100644
index 2fff7b1e8f..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__latex_include_equality_sign.txt.snap
+++ /dev/null
@@ -1,17 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/include/latex_include_equality_sign.txt
----
-ROOT@0..17
- PREAMBLE@0..17
- LATEX_INCLUDE@0..17
- COMMAND_NAME@0..8 "\\include"
- CURLY_GROUP_WORD_LIST@8..17
- L_CURLY@8..9 "{"
- KEY@9..16
- WORD@9..12 "foo"
- EQUALITY_SIGN@12..13 "="
- WORD@13..16 "bar"
- R_CURLY@16..17 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__latex_include_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__latex_include_simple.txt.snap
deleted file mode 100644
index 4841296f02..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__latex_include_simple.txt.snap
+++ /dev/null
@@ -1,15 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/include/latex_include_simple.txt
----
-ROOT@0..17
- PREAMBLE@0..17
- LATEX_INCLUDE@0..17
- COMMAND_NAME@0..8 "\\include"
- CURLY_GROUP_WORD_LIST@8..17
- L_CURLY@8..9 "{"
- KEY@9..16
- WORD@9..16 "foo/bar"
- R_CURLY@16..17 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__latex_input_path_brackets.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__latex_input_path_brackets.txt.snap
deleted file mode 100644
index 7f13f6b247..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__latex_input_path_brackets.txt.snap
+++ /dev/null
@@ -1,19 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/include/latex_input_path_brackets.txt
----
-ROOT@0..20
- PREAMBLE@0..20
- LATEX_INCLUDE@0..20
- COMMAND_NAME@0..6 "\\input"
- CURLY_GROUP_WORD_LIST@6..20
- L_CURLY@6..7 "{"
- KEY@7..19
- WORD@7..10 "foo"
- L_BRACK@10..11 "["
- WORD@11..14 "bar"
- R_BRACK@14..15 "]"
- WORD@15..19 ".tex"
- R_CURLY@19..20 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__package_include_empty.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__package_include_empty.txt.snap
deleted file mode 100644
index 086f2b0c75..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__package_include_empty.txt.snap
+++ /dev/null
@@ -1,13 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/include/package_include_empty.txt
----
-ROOT@0..13
- PREAMBLE@0..13
- PACKAGE_INCLUDE@0..13
- COMMAND_NAME@0..11 "\\usepackage"
- CURLY_GROUP_WORD_LIST@11..13
- L_CURLY@11..12 "{"
- R_CURLY@12..13 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__package_include_multiple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__package_include_multiple.txt.snap
deleted file mode 100644
index d42a4a76fe..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__package_include_multiple.txt.snap
+++ /dev/null
@@ -1,19 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/include/package_include_multiple.txt
----
-ROOT@0..28
- PREAMBLE@0..28
- PACKAGE_INCLUDE@0..28
- COMMAND_NAME@0..11 "\\usepackage"
- CURLY_GROUP_WORD_LIST@11..28
- L_CURLY@11..12 "{"
- KEY@12..19
- WORD@12..19 "amsmath"
- COMMA@19..20 ","
- WHITESPACE@20..21 " "
- KEY@21..27
- WORD@21..27 "lipsum"
- R_CURLY@27..28 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__package_include_options.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__package_include_options.txt.snap
deleted file mode 100644
index 8ecffa39d5..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__package_include_options.txt.snap
+++ /dev/null
@@ -1,38 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/include/package_include_options.txt
----
-ROOT@0..41
- PREAMBLE@0..41
- PACKAGE_INCLUDE@0..41
- COMMAND_NAME@0..11 "\\usepackage"
- BRACK_GROUP_KEY_VALUE@11..32
- L_BRACK@11..12 "["
- KEY_VALUE_BODY@12..31
- KEY_VALUE_PAIR@12..21
- KEY@12..16
- WORD@12..15 "foo"
- WHITESPACE@15..16 " "
- EQUALITY_SIGN@16..17 "="
- WHITESPACE@17..18 " "
- VALUE@18..21
- TEXT@18..21
- WORD@18..21 "bar"
- COMMA@21..22 ","
- WHITESPACE@22..23 " "
- KEY_VALUE_PAIR@23..26
- KEY@23..26
- WORD@23..26 "baz"
- COMMA@26..27 ","
- WHITESPACE@27..28 " "
- KEY_VALUE_PAIR@28..31
- KEY@28..31
- WORD@28..31 "qux"
- R_BRACK@31..32 "]"
- CURLY_GROUP_WORD_LIST@32..41
- L_CURLY@32..33 "{"
- KEY@33..40
- WORD@33..40 "amsmath"
- R_CURLY@40..41 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__package_include_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__package_include_simple.txt.snap
deleted file mode 100644
index 99304a8108..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__package_include_simple.txt.snap
+++ /dev/null
@@ -1,15 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/include/package_include_simple.txt
----
-ROOT@0..20
- PREAMBLE@0..20
- PACKAGE_INCLUDE@0..20
- COMMAND_NAME@0..11 "\\usepackage"
- CURLY_GROUP_WORD_LIST@11..20
- L_CURLY@11..12 "{"
- KEY@12..19
- WORD@12..19 "amsmath"
- R_CURLY@19..20 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__pgf_library_import_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__pgf_library_import_simple.txt.snap
deleted file mode 100644
index c55ce16744..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__pgf_library_import_simple.txt.snap
+++ /dev/null
@@ -1,15 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/include/pgf_library_import_simple.txt
----
-ROOT@0..19
- PREAMBLE@0..19
- TIKZ_LIBRARY_IMPORT@0..19
- COMMAND_NAME@0..14 "\\usepgflibrary"
- CURLY_GROUP_WORD_LIST@14..19
- L_CURLY@14..15 "{"
- KEY@15..18
- WORD@15..18 "foo"
- R_CURLY@18..19 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__svg_include_options.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__svg_include_options.txt.snap
deleted file mode 100644
index 7e67683606..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__svg_include_options.txt.snap
+++ /dev/null
@@ -1,26 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/include/svg_include_options.txt
----
-ROOT@0..34
- PREAMBLE@0..34
- SVG_INCLUDE@0..34
- COMMAND_NAME@0..11 "\\includesvg"
- BRACK_GROUP_KEY_VALUE@11..21
- L_BRACK@11..12 "["
- KEY_VALUE_BODY@12..20
- KEY_VALUE_PAIR@12..20
- KEY@12..17
- WORD@12..17 "scale"
- EQUALITY_SIGN@17..18 "="
- VALUE@18..20
- TEXT@18..20
- WORD@18..20 ".5"
- R_BRACK@20..21 "]"
- CURLY_GROUP_WORD_LIST@21..34
- L_CURLY@21..22 "{"
- KEY@22..33
- WORD@22..33 "foo/bar.svg"
- R_CURLY@33..34 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__svg_include_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__svg_include_simple.txt.snap
deleted file mode 100644
index f776f9c2bc..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__svg_include_simple.txt.snap
+++ /dev/null
@@ -1,15 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/include/svg_include_simple.txt
----
-ROOT@0..24
- PREAMBLE@0..24
- SVG_INCLUDE@0..24
- COMMAND_NAME@0..11 "\\includesvg"
- CURLY_GROUP_WORD_LIST@11..24
- L_CURLY@11..12 "{"
- KEY@12..23
- WORD@12..23 "foo/bar.svg"
- R_CURLY@23..24 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__tikz_library_import_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__tikz_library_import_simple.txt.snap
deleted file mode 100644
index fff99d5ad1..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__tikz_library_import_simple.txt.snap
+++ /dev/null
@@ -1,15 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/include/tikz_library_import_simple.txt
----
-ROOT@0..20
- PREAMBLE@0..20
- TIKZ_LIBRARY_IMPORT@0..20
- COMMAND_NAME@0..15 "\\usetikzlibrary"
- CURLY_GROUP_WORD_LIST@15..20
- L_CURLY@15..16 "{"
- KEY@16..19
- WORD@16..19 "foo"
- R_CURLY@19..20 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__verbatim_include_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__verbatim_include_simple.txt.snap
deleted file mode 100644
index 28eda149c4..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__verbatim_include_simple.txt.snap
+++ /dev/null
@@ -1,15 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/include/verbatim_include_simple.txt
----
-ROOT@0..27
- PREAMBLE@0..27
- VERBATIM_INCLUDE@0..27
- COMMAND_NAME@0..14 "\\verbatiminput"
- CURLY_GROUP_WORD_LIST@14..27
- L_CURLY@14..15 "{"
- KEY@15..26
- WORD@15..26 "foo/bar.txt"
- R_CURLY@26..27 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@inline.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@inline.txt.snap
deleted file mode 100644
index b5696044a5..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@inline.txt.snap
+++ /dev/null
@@ -1,26 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/inline.txt
----
-ROOT@0..19
- PREAMBLE@0..19
- FORMULA@0..19
- DOLLAR@0..1 "$"
- TEXT@1..3
- WORD@1..2 "x"
- WHITESPACE@2..3 " "
- GENERIC_COMMAND@3..18
- COMMAND_NAME@3..6 "\\in"
- WHITESPACE@6..7 " "
- MIXED_GROUP@7..18
- L_BRACK@7..8 "["
- TEXT@8..11
- WORD@8..9 "0"
- COMMA@9..10 ","
- WHITESPACE@10..11 " "
- GENERIC_COMMAND@11..17
- COMMAND_NAME@11..17 "\\infty"
- R_PAREN@17..18 ")"
- DOLLAR@18..19 "$"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@inline_double_dollar.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@inline_double_dollar.txt.snap
deleted file mode 100644
index 6d614db919..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@inline_double_dollar.txt.snap
+++ /dev/null
@@ -1,26 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/inline_double_dollar.txt
----
-ROOT@0..21
- PREAMBLE@0..21
- FORMULA@0..21
- DOLLAR@0..2 "$$"
- TEXT@2..4
- WORD@2..3 "x"
- WHITESPACE@3..4 " "
- GENERIC_COMMAND@4..19
- COMMAND_NAME@4..7 "\\in"
- WHITESPACE@7..8 " "
- MIXED_GROUP@8..19
- L_BRACK@8..9 "["
- TEXT@9..12
- WORD@9..10 "0"
- COMMA@10..11 ","
- WHITESPACE@11..12 " "
- GENERIC_COMMAND@12..18
- COMMAND_NAME@12..18 "\\infty"
- R_PAREN@18..19 ")"
- DOLLAR@19..21 "$$"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_568.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_568.txt.snap
deleted file mode 100644
index f71507c2ac..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_568.txt.snap
+++ /dev/null
@@ -1,28 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/issue_568.txt
----
-ROOT@0..51
- PREAMBLE@0..51
- LATEX_INCLUDE@0..36
- COMMAND_NAME@0..6 "\\input"
- CURLY_GROUP_WORD_LIST@6..36
- L_CURLY@6..7 "{"
- WORD@7..8 "|"
- KEY@8..34
- WORD@8..15 "ipython"
- WHITESPACE@15..16 " "
- WORD@16..34 "scripts/test.ipynb"
- R_CURLY@34..35 "}"
- LINE_BREAK@35..36 "\n"
- LABEL_DEFINITION@36..51
- COMMAND_NAME@36..42 "\\label"
- CURLY_GROUP_WORD@42..51
- L_CURLY@42..43 "{"
- KEY@43..50
- WORD@43..48 "fig:x"
- EQUALITY_SIGN@48..49 "="
- WORD@49..50 "2"
- R_CURLY@50..51 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_745.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_745.txt.snap
deleted file mode 100644
index 4165481528..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_745.txt.snap
+++ /dev/null
@@ -1,131 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/issue_745.txt
----
-ROOT@0..271
- PREAMBLE@0..271
- CLASS_INCLUDE@0..24
- COMMAND_NAME@0..14 "\\documentclass"
- CURLY_GROUP_WORD_LIST@14..24
- L_CURLY@14..15 "{"
- KEY@15..22
- WORD@15..22 "article"
- R_CURLY@22..23 "}"
- LINE_BREAK@23..24 "\n"
- PACKAGE_INCLUDE@24..50
- COMMAND_NAME@24..35 "\\usepackage"
- CURLY_GROUP_WORD_LIST@35..50
- L_CURLY@35..36 "{"
- KEY@36..46
- WORD@36..46 "tabularray"
- R_CURLY@46..47 "}"
- WHITESPACE@47..48 " "
- LINE_BREAK@48..50 "\n\n"
- GENERIC_COMMAND@50..64
- COMMAND_NAME@50..63 "\\ExplSyntaxOn"
- LINE_BREAK@63..64 "\n"
- GENERIC_COMMAND@64..223
- COMMAND_NAME@64..87 "\\NewDocumentEnvironment"
- CURLY_GROUP@87..96
- L_CURLY@87..88 "{"
- TEXT@88..95
- WORD@88..95 "exptblr"
- R_CURLY@95..96 "}"
- CURLY_GROUP@96..107
- L_CURLY@96..97 "{"
- TEXT@97..98
- WORD@97..98 "O"
- CURLY_GROUP@98..100
- L_CURLY@98..99 "{"
- R_CURLY@99..100 "}"
- TEXT@100..101
- WORD@100..101 "m"
- R_CURLY@101..102 "}"
- LINE_BREAK@102..103 "\n"
- WHITESPACE@103..107 " "
- CURLY_GROUP@107..200
- L_CURLY@107..108 "{"
- LINE_BREAK@108..109 "\n"
- WHITESPACE@109..113 " "
- GENERIC_COMMAND@113..194
- COMMAND_NAME@113..119 "\\use:x"
- LINE_BREAK@119..120 "\n"
- WHITESPACE@120..124 " "
- CURLY_GROUP@124..194
- L_CURLY@124..125 "{"
- LINE_BREAK@125..126 "\n"
- WHITESPACE@126..130 " "
- GENERIC_COMMAND@130..141
- COMMAND_NAME@130..140 "\\exp_not:N"
- WHITESPACE@140..141 " "
- ENVIRONMENT@141..188
- BEGIN@141..179
- COMMAND_NAME@141..147 "\\begin"
- CURLY_GROUP_WORD@147..158
- L_CURLY@147..148 "{"
- KEY@148..152
- WORD@148..152 "tblr"
- R_CURLY@152..153 "}"
- LINE_BREAK@153..154 "\n"
- WHITESPACE@154..158 " "
- BRACK_GROUP@158..179
- L_BRACK@158..159 "["
- GENERIC_COMMAND@159..173
- COMMAND_NAME@159..169 "\\exp_not:n"
- CURLY_GROUP@169..173
- L_CURLY@169..170 "{"
- TEXT@170..172
- WORD@170..172 "#1"
- R_CURLY@172..173 "}"
- R_BRACK@173..174 "]"
- LINE_BREAK@174..175 "\n"
- WHITESPACE@175..179 " "
- CURLY_GROUP@179..188
- L_CURLY@179..180 "{"
- TEXT@180..182
- WORD@180..182 "#2"
- R_CURLY@182..183 "}"
- LINE_BREAK@183..184 "\n"
- WHITESPACE@184..188 " "
- R_CURLY@188..189 "}"
- LINE_BREAK@189..190 "\n"
- WHITESPACE@190..194 " "
- R_CURLY@194..195 "}"
- LINE_BREAK@195..196 "\n"
- WHITESPACE@196..200 " "
- CURLY_GROUP@200..223
- L_CURLY@200..201 "{"
- LINE_BREAK@201..202 "\n"
- WHITESPACE@202..206 " "
- GENERIC_COMMAND@206..221
- COMMAND_NAME@206..210 "\\end"
- CURLY_GROUP@210..221
- L_CURLY@210..211 "{"
- TEXT@211..215
- WORD@211..215 "tblr"
- R_CURLY@215..216 "}"
- LINE_BREAK@216..217 "\n"
- WHITESPACE@217..221 " "
- R_CURLY@221..222 "}"
- LINE_BREAK@222..223 "\n"
- GENERIC_COMMAND@223..239
- COMMAND_NAME@223..237 "\\ExplSyntaxOff"
- LINE_BREAK@237..239 "\n\n"
- ENVIRONMENT@239..271
- BEGIN@239..257
- COMMAND_NAME@239..245 "\\begin"
- CURLY_GROUP_WORD@245..257
- L_CURLY@245..246 "{"
- KEY@246..254
- WORD@246..254 "document"
- R_CURLY@254..255 "}"
- LINE_BREAK@255..257 "\n\n"
- END@257..271
- COMMAND_NAME@257..261 "\\end"
- CURLY_GROUP_WORD@261..271
- L_CURLY@261..262 "{"
- KEY@262..270
- WORD@262..270 "document"
- R_CURLY@270..271 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_789.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_789.txt.snap
deleted file mode 100644
index 9899e3c9ab..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_789.txt.snap
+++ /dev/null
@@ -1,15 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/issue_789.txt
----
-ROOT@0..19
- PREAMBLE@0..19
- GRAPHICS_PATH@0..19
- COMMAND_NAME@0..13 "\\graphicspath"
- CURLY_GROUP_WORD@13..19
- L_CURLY@13..14 "{"
- KEY@14..18
- WORD@14..18 "test"
- R_CURLY@18..19 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_828.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_828.txt.snap
deleted file mode 100644
index 059b957241..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_828.txt.snap
+++ /dev/null
@@ -1,22 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/issue_828.txt
----
-ROOT@0..51
- PREAMBLE@0..51
- GENERIC_COMMAND@0..5
- COMMAND_NAME@0..5 "\\verb"
- VERBATIM@5..6 "|"
- VERBATIM@6..17 "<STATEMENT>"
- VERBATIM@17..22 " "
- VERBATIM@22..24 "if"
- VERBATIM@24..25 "("
- VERBATIM@25..31 "<expr>"
- VERBATIM@31..32 ")"
- VERBATIM@32..33 "{"
- VERBATIM@33..43 "<body>else"
- VERBATIM@43..44 "{"
- VERBATIM@44..50 "<body>"
- VERBATIM@50..51 "|"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_853.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_853.txt.snap
deleted file mode 100644
index dc8c3a3d2b..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_853.txt.snap
+++ /dev/null
@@ -1,62 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/issue_853.txt
----
-ROOT@0..135
- PREAMBLE@0..135
- CLASS_INCLUDE@0..24
- COMMAND_NAME@0..14 "\\documentclass"
- CURLY_GROUP_WORD_LIST@14..24
- L_CURLY@14..15 "{"
- KEY@15..22
- WORD@15..22 "minimal"
- R_CURLY@22..23 "}"
- LINE_BREAK@23..24 "\n"
- ENVIRONMENT@24..135
- BEGIN@24..41
- COMMAND_NAME@24..30 "\\begin"
- CURLY_GROUP_WORD@30..41
- L_CURLY@30..31 "{"
- KEY@31..39
- WORD@31..39 "document"
- R_CURLY@39..40 "}"
- LINE_BREAK@40..41 "\n"
- TEXT@41..75
- WORD@41..45 "This"
- WHITESPACE@45..46 " "
- WORD@46..48 "is"
- WHITESPACE@48..49 " "
- WORD@49..51 "an"
- WHITESPACE@51..52 " "
- WORD@52..56 "asdf"
- WHITESPACE@56..57 " "
- WORD@57..66 "undefined"
- WHITESPACE@66..67 " "
- WORD@67..74 "command"
- LINE_BREAK@74..75 "\n"
- BLOCK_COMMENT@75..120
- COMMAND_NAME@75..83 "\\iffalse"
- LINE_BREAK@83..84 "\n"
- WHITESPACE@84..86 " "
- BLOCK_COMMENT@86..97
- COMMAND_NAME@86..94 "\\iffalse"
- COMMAND_NAME@94..97 "\\fi"
- LINE_BREAK@97..98 "\n"
- WHITESPACE@98..100 " "
- COMMAND_NAME@100..104 "\\end"
- L_CURLY@104..105 "{"
- WORD@105..114 "enumerate"
- R_CURLY@114..115 "}"
- WHITESPACE@115..116 " "
- LINE_BREAK@116..117 "\n"
- COMMAND_NAME@117..120 "\\fi"
- LINE_BREAK@120..121 "\n"
- END@121..135
- COMMAND_NAME@121..125 "\\end"
- CURLY_GROUP_WORD@125..135
- L_CURLY@125..126 "{"
- KEY@126..134
- WORD@126..134 "document"
- R_CURLY@134..135 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_857.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_857.txt.snap
deleted file mode 100644
index b0edef17a8..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_857.txt.snap
+++ /dev/null
@@ -1,33 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/issue_857.txt
----
-ROOT@0..55
- PREAMBLE@0..55
- COMMAND_DEFINITION@0..11
- COMMAND_NAME@0..11 "\\newcommand"
- GENERIC_COMMAND@11..17
- COMMAND_NAME@11..14 "\\ö"
- CURLY_GROUP@14..17
- L_CURLY@14..15 "{"
- R_CURLY@15..16 "}"
- LINE_BREAK@16..17 "\n"
- COMMAND_DEFINITION@17..38
- COMMAND_NAME@17..28 "\\newcommand"
- CURLY_GROUP_COMMAND@28..35
- L_CURLY@28..29 "{"
- COMMAND_NAME@29..34 "\\öö"
- R_CURLY@34..35 "}"
- CURLY_GROUP@35..38
- L_CURLY@35..36 "{"
- R_CURLY@36..37 "}"
- LINE_BREAK@37..38 "\n"
- COMMAND_DEFINITION@38..49
- COMMAND_NAME@38..49 "\\newcommand"
- GENERIC_COMMAND@49..55
- COMMAND_NAME@49..53 "\\123"
- CURLY_GROUP@53..55
- L_CURLY@53..54 "{"
- R_CURLY@54..55 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_874.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_874.txt.snap
deleted file mode 100644
index 8555f2bc48..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_874.txt.snap
+++ /dev/null
@@ -1,28 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/issue_874.txt
----
-ROOT@0..37
- PREAMBLE@0..37
- GRAPHICS_INCLUDE@0..37
- COMMAND_NAME@0..16 "\\includegraphics"
- BRACK_GROUP_KEY_VALUE@16..27
- L_BRACK@16..17 "["
- KEY_VALUE_BODY@17..26
- KEY_VALUE_PAIR@17..26
- KEY@17..22
- WORD@17..22 "scale"
- EQUALITY_SIGN@22..23 "="
- VALUE@23..26
- TEXT@23..26
- WORD@23..26 "0.2"
- R_BRACK@26..27 "]"
- CURLY_GROUP_WORD_LIST@27..37
- L_CURLY@27..28 "{"
- KEY@28..36
- WORD@28..31 "7.4"
- R_PAREN@31..32 ")"
- WORD@32..36 ".jpg"
- R_CURLY@36..37 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_919.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_919.txt.snap
deleted file mode 100644
index bf5d207fca..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_919.txt.snap
+++ /dev/null
@@ -1,61 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/issue_919.txt
----
-ROOT@0..217
- PREAMBLE@0..217
- CLASS_INCLUDE@0..25
- COMMAND_NAME@0..14 "\\documentclass"
- CURLY_GROUP_WORD_LIST@14..25
- L_CURLY@14..15 "{"
- KEY@15..22
- WORD@15..22 "article"
- R_CURLY@22..23 "}"
- LINE_BREAK@23..25 "\n\n"
- PACKAGE_INCLUDE@25..173
- COMMAND_NAME@25..36 "\\usepackage"
- CURLY_GROUP_WORD_LIST@36..173
- L_CURLY@36..37 "{"
- LINE_BREAK@37..38 "\n"
- WHITESPACE@38..42 " "
- KEY@42..48
- WORD@42..48 "lipsum"
- COMMA@48..49 ","
- WHITESPACE@49..50 " "
- COMMENT@50..70 "% provides blindtext"
- LINE_BREAK@70..71 "\n"
- WHITESPACE@71..75 " "
- KEY@75..83
- WORD@75..83 "booktabs"
- COMMA@83..84 ","
- WHITESPACE@84..85 " "
- COMMENT@85..110 "% better rules for ta ..."
- LINE_BREAK@110..111 "\n"
- WHITESPACE@111..115 " "
- COMMENT@115..169 "%xcolor % easily defi ..."
- LINE_BREAK@169..170 "\n"
- R_CURLY@170..171 "}"
- LINE_BREAK@171..173 "\n\n"
- ENVIRONMENT@173..217
- BEGIN@173..194
- COMMAND_NAME@173..179 "\\begin"
- CURLY_GROUP_WORD@179..194
- L_CURLY@179..180 "{"
- KEY@180..188
- WORD@180..188 "document"
- R_CURLY@188..189 "}"
- LINE_BREAK@189..190 "\n"
- WHITESPACE@190..194 " "
- GENERIC_COMMAND@194..202
- COMMAND_NAME@194..201 "\\lipsum"
- LINE_BREAK@201..202 "\n"
- END@202..217
- COMMAND_NAME@202..206 "\\end"
- CURLY_GROUP_WORD@206..217
- L_CURLY@206..207 "{"
- KEY@207..215
- WORD@207..215 "document"
- R_CURLY@215..216 "}"
- LINE_BREAK@216..217 "\n"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_931.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_931.txt.snap
deleted file mode 100644
index 2fef140d95..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_931.txt.snap
+++ /dev/null
@@ -1,16 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/issue_931.txt
----
-ROOT@0..31
- PREAMBLE@0..31
- BIBTEX_INCLUDE@0..31
- COMMAND_NAME@0..13 "\\bibliography"
- CURLY_GROUP_WORD_LIST@13..31
- L_CURLY@13..14 "{"
- KEY@14..30
- DOLLAR@14..15 "$"
- WORD@15..30 "HOME/Literature"
- R_CURLY@30..31 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_definition_line_break.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_definition_line_break.txt.snap
deleted file mode 100644
index 5eaed87fee..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_definition_line_break.txt.snap
+++ /dev/null
@@ -1,19 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/label/label_definition_line_break.txt
----
-ROOT@0..19
- PREAMBLE@0..19
- LABEL_DEFINITION@0..13
- COMMAND_NAME@0..6 "\\label"
- CURLY_GROUP_WORD@6..13
- L_CURLY@6..7 "{"
- KEY@7..13
- WORD@7..12 "hello"
- LINE_BREAK@12..13 "\n"
- TEXT@13..18
- WORD@13..18 "world"
- ERROR@18..19
- R_CURLY@18..19 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_definition_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_definition_simple.txt.snap
deleted file mode 100644
index cb693002b5..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_definition_simple.txt.snap
+++ /dev/null
@@ -1,15 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/label/label_definition_simple.txt
----
-ROOT@0..11
- PREAMBLE@0..11
- LABEL_DEFINITION@0..11
- COMMAND_NAME@0..6 "\\label"
- CURLY_GROUP_WORD@6..11
- L_CURLY@6..7 "{"
- KEY@7..10
- WORD@7..10 "foo"
- R_CURLY@10..11 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_number.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_number.txt.snap
deleted file mode 100644
index 6e9613313a..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_number.txt.snap
+++ /dev/null
@@ -1,23 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/label/label_number.txt
----
-ROOT@0..21
- PREAMBLE@0..21
- LABEL_NUMBER@0..21
- COMMAND_NAME@0..9 "\\newlabel"
- CURLY_GROUP_WORD@9..14
- L_CURLY@9..10 "{"
- KEY@10..13
- WORD@10..13 "foo"
- R_CURLY@13..14 "}"
- CURLY_GROUP@14..21
- L_CURLY@14..15 "{"
- CURLY_GROUP@15..20
- L_CURLY@15..16 "{"
- TEXT@16..19
- WORD@16..19 "1.1"
- R_CURLY@19..20 "}"
- R_CURLY@20..21 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_equation.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_equation.txt.snap
deleted file mode 100644
index b631f40b60..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_equation.txt.snap
+++ /dev/null
@@ -1,15 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/label/label_reference_equation.txt
----
-ROOT@0..11
- PREAMBLE@0..11
- LABEL_REFERENCE@0..11
- COMMAND_NAME@0..6 "\\eqref"
- CURLY_GROUP_WORD_LIST@6..11
- L_CURLY@6..7 "{"
- KEY@7..10
- WORD@7..10 "foo"
- R_CURLY@10..11 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_incomplete.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_incomplete.txt.snap
deleted file mode 100644
index 054da6d258..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_incomplete.txt.snap
+++ /dev/null
@@ -1,32 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/label/label_reference_incomplete.txt
----
-ROOT@0..47
- PREAMBLE@0..47
- TEXT@0..9
- WORD@0..8 "Equation"
- WHITESPACE@8..9 " "
- LABEL_REFERENCE@9..24
- COMMAND_NAME@9..15 "\\eqref"
- CURLY_GROUP_WORD_LIST@15..24
- L_CURLY@15..16 "{"
- KEY@16..24
- WORD@16..18 "eq"
- WHITESPACE@18..19 " "
- WORD@19..21 "is"
- WHITESPACE@21..22 " "
- WORD@22..23 "a"
- WHITESPACE@23..24 " "
- GENERIC_COMMAND@24..38
- COMMAND_NAME@24..29 "\\emph"
- CURLY_GROUP@29..38
- L_CURLY@29..30 "{"
- TEXT@30..36
- WORD@30..36 "useful"
- R_CURLY@36..37 "}"
- WHITESPACE@37..38 " "
- TEXT@38..47
- WORD@38..47 "identity."
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_multiple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_multiple.txt.snap
deleted file mode 100644
index 5a228e8972..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_multiple.txt.snap
+++ /dev/null
@@ -1,19 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/label/label_reference_multiple.txt
----
-ROOT@0..14
- PREAMBLE@0..14
- LABEL_REFERENCE@0..14
- COMMAND_NAME@0..4 "\\ref"
- CURLY_GROUP_WORD_LIST@4..14
- L_CURLY@4..5 "{"
- KEY@5..8
- WORD@5..8 "foo"
- COMMA@8..9 ","
- WHITESPACE@9..10 " "
- KEY@10..13
- WORD@10..13 "bar"
- R_CURLY@13..14 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_range_error.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_range_error.txt.snap
deleted file mode 100644
index a4b25eeb09..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_range_error.txt.snap
+++ /dev/null
@@ -1,19 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/label/label_reference_range_error.txt
----
-ROOT@0..19
- PREAMBLE@0..19
- LABEL_REFERENCE_RANGE@0..19
- COMMAND_NAME@0..10 "\\crefrange"
- CURLY_GROUP_WORD@10..14
- L_CURLY@10..11 "{"
- KEY@11..14
- WORD@11..14 "foo"
- CURLY_GROUP_WORD@14..19
- L_CURLY@14..15 "{"
- KEY@15..18
- WORD@15..18 "bar"
- R_CURLY@18..19 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_range_incomplete.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_range_incomplete.txt.snap
deleted file mode 100644
index e18cd6ed97..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_range_incomplete.txt.snap
+++ /dev/null
@@ -1,15 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/label/label_reference_range_incomplete.txt
----
-ROOT@0..15
- PREAMBLE@0..15
- LABEL_REFERENCE_RANGE@0..15
- COMMAND_NAME@0..10 "\\crefrange"
- CURLY_GROUP_WORD@10..15
- L_CURLY@10..11 "{"
- KEY@11..14
- WORD@11..14 "foo"
- R_CURLY@14..15 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_range_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_range_simple.txt.snap
deleted file mode 100644
index 335309607c..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_range_simple.txt.snap
+++ /dev/null
@@ -1,20 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/label/label_reference_range_simple.txt
----
-ROOT@0..20
- PREAMBLE@0..20
- LABEL_REFERENCE_RANGE@0..20
- COMMAND_NAME@0..10 "\\crefrange"
- CURLY_GROUP_WORD@10..15
- L_CURLY@10..11 "{"
- KEY@11..14
- WORD@11..14 "foo"
- R_CURLY@14..15 "}"
- CURLY_GROUP_WORD@15..20
- L_CURLY@15..16 "{"
- KEY@16..19
- WORD@16..19 "bar"
- R_CURLY@19..20 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_simple.txt.snap
deleted file mode 100644
index ba3d08b472..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_simple.txt.snap
+++ /dev/null
@@ -1,15 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/label/label_reference_simple.txt
----
-ROOT@0..9
- PREAMBLE@0..9
- LABEL_REFERENCE@0..9
- COMMAND_NAME@0..4 "\\ref"
- CURLY_GROUP_WORD_LIST@4..9
- L_CURLY@4..5 "{"
- KEY@5..8
- WORD@5..8 "foo"
- R_CURLY@8..9 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@parameter.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@parameter.txt.snap
deleted file mode 100644
index aa038efb86..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@parameter.txt.snap
+++ /dev/null
@@ -1,10 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/parameter.txt
----
-ROOT@0..2
- PREAMBLE@0..2
- TEXT@0..2
- WORD@0..2 "#1"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@parameter_error.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@parameter_error.txt.snap
deleted file mode 100644
index 7f9a744622..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@parameter_error.txt.snap
+++ /dev/null
@@ -1,10 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/parameter_error.txt
----
-ROOT@0..1
- PREAMBLE@0..1
- TEXT@0..1
- WORD@0..1 "#"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@structure__paragraphs.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@structure__paragraphs.txt.snap
deleted file mode 100644
index 7c3e7fae57..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@structure__paragraphs.txt.snap
+++ /dev/null
@@ -1,67 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/structure/paragraphs.txt
----
-ROOT@0..134
- PREAMBLE@0..134
- SECTION@0..105
- COMMAND_NAME@0..8 "\\section"
- CURLY_GROUP@8..20
- L_CURLY@8..9 "{"
- TEXT@9..18
- WORD@9..16 "Section"
- WHITESPACE@16..17 " "
- WORD@17..18 "1"
- R_CURLY@18..19 "}"
- LINE_BREAK@19..20 "\n"
- TEXT@20..31
- WORD@20..27 "Section"
- WHITESPACE@27..28 " "
- WORD@28..29 "1"
- LINE_BREAK@29..31 "\n\n"
- PARAGRAPH@31..68
- COMMAND_NAME@31..41 "\\paragraph"
- CURLY_GROUP@41..55
- L_CURLY@41..42 "{"
- TEXT@42..53
- WORD@42..51 "Paragraph"
- WHITESPACE@51..52 " "
- WORD@52..53 "1"
- R_CURLY@53..54 "}"
- LINE_BREAK@54..55 "\n"
- TEXT@55..68
- WORD@55..64 "Paragraph"
- WHITESPACE@64..65 " "
- WORD@65..66 "1"
- LINE_BREAK@66..68 "\n\n"
- PARAGRAPH@68..105
- COMMAND_NAME@68..78 "\\paragraph"
- CURLY_GROUP@78..92
- L_CURLY@78..79 "{"
- TEXT@79..90
- WORD@79..88 "Paragraph"
- WHITESPACE@88..89 " "
- WORD@89..90 "2"
- R_CURLY@90..91 "}"
- LINE_BREAK@91..92 "\n"
- TEXT@92..105
- WORD@92..101 "Paragraph"
- WHITESPACE@101..102 " "
- WORD@102..103 "2"
- LINE_BREAK@103..105 "\n\n"
- SECTION@105..134
- COMMAND_NAME@105..113 "\\section"
- CURLY_GROUP@113..125
- L_CURLY@113..114 "{"
- TEXT@114..123
- WORD@114..121 "Section"
- WHITESPACE@121..122 " "
- WORD@122..123 "2"
- R_CURLY@123..124 "}"
- LINE_BREAK@124..125 "\n"
- TEXT@125..134
- WORD@125..132 "Section"
- WHITESPACE@132..133 " "
- WORD@133..134 "2"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@structure__structure_enum_item.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@structure__structure_enum_item.txt.snap
deleted file mode 100644
index 6045bdce2b..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@structure__structure_enum_item.txt.snap
+++ /dev/null
@@ -1,47 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/structure/structure_enum_item.txt
----
-ROOT@0..60
- PREAMBLE@0..60
- ENVIRONMENT@0..60
- BEGIN@0..18
- COMMAND_NAME@0..6 "\\begin"
- CURLY_GROUP_WORD@6..18
- L_CURLY@6..7 "{"
- KEY@7..16
- WORD@7..16 "enumerate"
- R_CURLY@16..17 "}"
- WHITESPACE@17..18 " "
- ENUM_ITEM@18..26
- COMMAND_NAME@18..23 "\\item"
- WHITESPACE@23..24 " "
- TEXT@24..26
- WORD@24..25 "1"
- WHITESPACE@25..26 " "
- ENUM_ITEM@26..37
- COMMAND_NAME@26..31 "\\item"
- BRACK_GROUP@31..35
- L_BRACK@31..32 "["
- TEXT@32..33
- WORD@32..33 "2"
- R_BRACK@33..34 "]"
- WHITESPACE@34..35 " "
- TEXT@35..37
- WORD@35..36 "2"
- WHITESPACE@36..37 " "
- ENUM_ITEM@37..45
- COMMAND_NAME@37..42 "\\item"
- WHITESPACE@42..43 " "
- TEXT@43..45
- WORD@43..44 "3"
- WHITESPACE@44..45 " "
- END@45..60
- COMMAND_NAME@45..49 "\\end"
- CURLY_GROUP_WORD@49..60
- L_CURLY@49..50 "{"
- KEY@50..59
- WORD@50..59 "enumerate"
- R_CURLY@59..60 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@structure__structure_invalid_nesting.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@structure__structure_invalid_nesting.txt.snap
deleted file mode 100644
index df715917df..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@structure__structure_invalid_nesting.txt.snap
+++ /dev/null
@@ -1,23 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/structure/structure_invalid_nesting.txt
----
-ROOT@0..27
- PREAMBLE@0..27
- SECTION@0..14
- COMMAND_NAME@0..8 "\\section"
- CURLY_GROUP@8..14
- L_CURLY@8..9 "{"
- TEXT@9..12
- WORD@9..12 "Foo"
- R_CURLY@12..13 "}"
- WHITESPACE@13..14 " "
- CHAPTER@14..27
- COMMAND_NAME@14..22 "\\chapter"
- CURLY_GROUP@22..27
- L_CURLY@22..23 "{"
- TEXT@23..26
- WORD@23..26 "Bar"
- R_CURLY@26..27 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@structure__structure_nested.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@structure__structure_nested.txt.snap
deleted file mode 100644
index d9dab436e7..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@structure__structure_nested.txt.snap
+++ /dev/null
@@ -1,57 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/structure/structure_nested.txt
----
-ROOT@0..90
- PREAMBLE@0..90
- PART@0..90
- COMMAND_NAME@0..5 "\\part"
- CURLY_GROUP@5..8
- L_CURLY@5..6 "{"
- TEXT@6..7
- WORD@6..7 "1"
- R_CURLY@7..8 "}"
- CHAPTER@8..90
- COMMAND_NAME@8..16 "\\chapter"
- CURLY_GROUP@16..19
- L_CURLY@16..17 "{"
- TEXT@17..18
- WORD@17..18 "2"
- R_CURLY@18..19 "}"
- SECTION@19..90
- COMMAND_NAME@19..27 "\\section"
- CURLY_GROUP@27..30
- L_CURLY@27..28 "{"
- TEXT@28..29
- WORD@28..29 "3"
- R_CURLY@29..30 "}"
- SUBSECTION@30..90
- COMMAND_NAME@30..41 "\\subsection"
- CURLY_GROUP@41..44
- L_CURLY@41..42 "{"
- TEXT@42..43
- WORD@42..43 "4"
- R_CURLY@43..44 "}"
- SUBSUBSECTION@44..90
- COMMAND_NAME@44..58 "\\subsubsection"
- CURLY_GROUP@58..61
- L_CURLY@58..59 "{"
- TEXT@59..60
- WORD@59..60 "5"
- R_CURLY@60..61 "}"
- PARAGRAPH@61..90
- COMMAND_NAME@61..71 "\\paragraph"
- CURLY_GROUP@71..74
- L_CURLY@71..72 "{"
- TEXT@72..73
- WORD@72..73 "6"
- R_CURLY@73..74 "}"
- SUBPARAGRAPH@74..90
- COMMAND_NAME@74..87 "\\subparagraph"
- CURLY_GROUP@87..90
- L_CURLY@87..88 "{"
- TEXT@88..89
- WORD@88..89 "7"
- R_CURLY@89..90 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@structure__structure_siblings.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@structure__structure_siblings.txt.snap
deleted file mode 100644
index 66040952f0..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@structure__structure_siblings.txt.snap
+++ /dev/null
@@ -1,29 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/structure/structure_siblings.txt
----
-ROOT@0..35
- PREAMBLE@0..35
- SECTION@0..18
- COMMAND_NAME@0..8 "\\section"
- CURLY_GROUP@8..14
- L_CURLY@8..9 "{"
- TEXT@9..12
- WORD@9..12 "Foo"
- R_CURLY@12..13 "}"
- WHITESPACE@13..14 " "
- TEXT@14..18
- WORD@14..17 "Foo"
- WHITESPACE@17..18 " "
- SECTION@18..35
- COMMAND_NAME@18..26 "\\section"
- CURLY_GROUP@26..32
- L_CURLY@26..27 "{"
- TEXT@27..30
- WORD@27..30 "Bar"
- R_CURLY@30..31 "}"
- WHITESPACE@31..32 " "
- TEXT@32..35
- WORD@32..35 "Bar"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_full.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_full.txt.snap
deleted file mode 100644
index ce42bde1d3..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_full.txt.snap
+++ /dev/null
@@ -1,30 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/theorem_definition/theorem_definition_full.txt
----
-ROOT@0..31
- PREAMBLE@0..31
- THEOREM_DEFINITION_AMSTHM@0..31
- COMMAND_NAME@0..11 "\\newtheorem"
- CURLY_GROUP_WORD@11..16
- L_CURLY@11..12 "{"
- KEY@12..15
- WORD@12..15 "foo"
- R_CURLY@15..16 "}"
- BRACK_GROUP_WORD@16..21
- L_BRACK@16..17 "["
- KEY@17..20
- WORD@17..20 "bar"
- R_BRACK@20..21 "]"
- CURLY_GROUP@21..26
- L_CURLY@21..22 "{"
- TEXT@22..25
- WORD@22..25 "Foo"
- R_CURLY@25..26 "}"
- BRACK_GROUP_WORD@26..31
- L_BRACK@26..27 "["
- KEY@27..30
- WORD@27..30 "baz"
- R_BRACK@30..31 "]"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_name_with_counter.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_name_with_counter.txt.snap
deleted file mode 100644
index c1e7ad5387..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_name_with_counter.txt.snap
+++ /dev/null
@@ -1,20 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/theorem_definition/theorem_definition_name_with_counter.txt
----
-ROOT@0..21
- PREAMBLE@0..21
- THEOREM_DEFINITION_AMSTHM@0..21
- COMMAND_NAME@0..11 "\\newtheorem"
- CURLY_GROUP_WORD@11..16
- L_CURLY@11..12 "{"
- KEY@12..15
- WORD@12..15 "foo"
- R_CURLY@15..16 "}"
- BRACK_GROUP_WORD@16..21
- L_BRACK@16..17 "["
- KEY@17..20
- WORD@17..20 "bar"
- R_BRACK@20..21 "]"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_name_with_description.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_name_with_description.txt.snap
deleted file mode 100644
index 13c043c94f..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_name_with_description.txt.snap
+++ /dev/null
@@ -1,20 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/theorem_definition/theorem_definition_name_with_description.txt
----
-ROOT@0..21
- PREAMBLE@0..21
- THEOREM_DEFINITION_AMSTHM@0..21
- COMMAND_NAME@0..11 "\\newtheorem"
- CURLY_GROUP_WORD@11..16
- L_CURLY@11..12 "{"
- KEY@12..15
- WORD@12..15 "foo"
- R_CURLY@15..16 "}"
- CURLY_GROUP@16..21
- L_CURLY@16..17 "{"
- TEXT@17..20
- WORD@17..20 "Foo"
- R_CURLY@20..21 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_name_with_description_and_counter.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_name_with_description_and_counter.txt.snap
deleted file mode 100644
index 57f4f7ce1b..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_name_with_description_and_counter.txt.snap
+++ /dev/null
@@ -1,25 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/theorem_definition/theorem_definition_name_with_description_and_counter.txt
----
-ROOT@0..26
- PREAMBLE@0..26
- THEOREM_DEFINITION_AMSTHM@0..26
- COMMAND_NAME@0..11 "\\newtheorem"
- CURLY_GROUP_WORD@11..16
- L_CURLY@11..12 "{"
- KEY@12..15
- WORD@12..15 "foo"
- R_CURLY@15..16 "}"
- BRACK_GROUP_WORD@16..21
- L_BRACK@16..17 "["
- KEY@17..20
- WORD@17..20 "bar"
- R_BRACK@20..21 "]"
- CURLY_GROUP@21..26
- L_CURLY@21..22 "{"
- TEXT@22..25
- WORD@22..25 "Foo"
- R_CURLY@25..26 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_only_name.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_only_name.txt.snap
deleted file mode 100644
index 22674fbbba..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_only_name.txt.snap
+++ /dev/null
@@ -1,15 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/theorem_definition/theorem_definition_only_name.txt
----
-ROOT@0..16
- PREAMBLE@0..16
- THEOREM_DEFINITION_AMSTHM@0..16
- COMMAND_NAME@0..11 "\\newtheorem"
- CURLY_GROUP_WORD@11..16
- L_CURLY@11..12 "{"
- KEY@12..15
- WORD@12..15 "foo"
- R_CURLY@15..16 "}"
-
diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_thmtools.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_thmtools.txt.snap
deleted file mode 100644
index 8b00bb4b59..0000000000
--- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_thmtools.txt.snap
+++ /dev/null
@@ -1,35 +0,0 @@
----
-source: crates/parser/src/latex.rs
-expression: root
-input_file: crates/parser/src/test_data/latex/theorem_definition/theorem_definition_thmtools.txt
----
-ROOT@0..41
- PREAMBLE@0..41
- THEOREM_DEFINITION_THMTOOLS@0..41
- COMMAND_NAME@0..15 "\\declaretheorem"
- BRACK_GROUP_KEY_VALUE@15..36
- L_BRACK@15..16 "["
- KEY_VALUE_BODY@16..35
- KEY_VALUE_PAIR@16..25
- KEY@16..21
- WORD@16..21 "style"
- EQUALITY_SIGN@21..22 "="
- VALUE@22..25
- TEXT@22..25
- WORD@22..25 "foo"
- COMMA@25..26 ","
- WHITESPACE@26..27 " "
- KEY_VALUE_PAIR@27..35
- KEY@27..31
- WORD@27..31 "name"
- EQUALITY_SIGN@31..32 "="
- VALUE@32..35
- TEXT@32..35
- WORD@32..35 "bar"
- R_BRACK@35..36 "]"
- CURLY_GROUP_WORD@36..41
- L_CURLY@36..37 "{"
- KEY@37..40
- WORD@37..40 "baz"
- R_CURLY@40..41 "}"
-
diff --git a/support/texlab/crates/parser/src/test_data/bibtex/comment.txt b/support/texlab/crates/parser/src/test_data/bibtex/comment.txt
deleted file mode 100644
index f2ff586ab7..0000000000
--- a/support/texlab/crates/parser/src/test_data/bibtex/comment.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Some junk here
-
-@comment{foo,
- author = {Foo Bar},
- title = {Some Title},
-}
diff --git a/support/texlab/crates/parser/src/test_data/bibtex/issue_809.txt b/support/texlab/crates/parser/src/test_data/bibtex/issue_809.txt
deleted file mode 100644
index c94b808fd5..0000000000
--- a/support/texlab/crates/parser/src/test_data/bibtex/issue_809.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-@article{issue_809,
- title = {foo (" bar) baz},
-} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/bibtex/issue_945.txt b/support/texlab/crates/parser/src/test_data/bibtex/issue_945.txt
deleted file mode 100644
index e50835d51f..0000000000
--- a/support/texlab/crates/parser/src/test_data/bibtex/issue_945.txt
+++ /dev/null
@@ -1 +0,0 @@
-@article{test, author = {\"{\i}}} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/bibtex/preamble.txt b/support/texlab/crates/parser/src/test_data/bibtex/preamble.txt
deleted file mode 100644
index 266b5ce228..0000000000
--- a/support/texlab/crates/parser/src/test_data/bibtex/preamble.txt
+++ /dev/null
@@ -1 +0,0 @@
-@preamble{"Hello World!"} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/bibtex/samples/aho_2006.txt b/support/texlab/crates/parser/src/test_data/bibtex/samples/aho_2006.txt
deleted file mode 100644
index ff829b40d1..0000000000
--- a/support/texlab/crates/parser/src/test_data/bibtex/samples/aho_2006.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-@book{10.5555/1177220,
- author = {Aho, Alfred V. and Lam, Monica S. and Sethi, Ravi and Ullman, Jeffrey D.},
- title = {Compilers: Principles, Techniques, and Tools (2nd Edition)},
- year = {2006},
- isbn = {0321486811},
- publisher = {Addison-Wesley Longman Publishing Co., Inc.},
- address = {USA}
-} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/bibtex/samples/aksin_2006.txt b/support/texlab/crates/parser/src/test_data/bibtex/samples/aksin_2006.txt
deleted file mode 100644
index 88ea701c22..0000000000
--- a/support/texlab/crates/parser/src/test_data/bibtex/samples/aksin_2006.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-@string{jomch = {J.~Organomet. Chem.}}
-
-@article{aksin,
- author = {Aks{\i}n, {\"O}zge and T{\"u}rkmen, Hayati and Artok, Levent
- and {\c{C}}etinkaya, Bekir and Ni, Chaoying and
- B{\"u}y{\"u}kg{\"u}ng{\"o}r, Orhan and {\"O}zkal, Erhan},
- title = {Effect of immobilization on catalytic characteristics of
- saturated {Pd-N}-heterocyclic carbenes in {Mizoroki-Heck}
- reactions},
- journaltitle = jomch,
- date = 2006,
- volume = 691,
- number = 13,
- pages = {3027-3036},
- indextitle = {Effect of immobilization on catalytic characteristics},
-} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/bibtex/samples/almendro_1998.txt b/support/texlab/crates/parser/src/test_data/bibtex/samples/almendro_1998.txt
deleted file mode 100644
index ed16d33c67..0000000000
--- a/support/texlab/crates/parser/src/test_data/bibtex/samples/almendro_1998.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-@patent{almendro,
- author = {Almendro, Jos{\'e} L. and Mart{\'i}n, Jacinto and S{\'a}nchez,
- Alberto and Nozal, Fernando},
- title = {Elektromagnetisches Signalhorn},
- number = {EU-29702195U},
- date = 1998,
- location = {countryfr and countryuk and countryde},
- langid = {german},
- annotation = {This is a \texttt{patent} entry with a \texttt{location}
- field. The number is given in the \texttt{number} field. Note
- the format of the \texttt{location} field in the database
- file. Compare \texttt{laufenberg}, \texttt{sorace}, and
- \texttt{kowalik}},
-} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/bibtex/samples/averroes_1998.txt b/support/texlab/crates/parser/src/test_data/bibtex/samples/averroes_1998.txt
deleted file mode 100644
index 9f224353cc..0000000000
--- a/support/texlab/crates/parser/src/test_data/bibtex/samples/averroes_1998.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-@book{averroes/bland,
- author = {Averroes},
- title = {The Epistle on the Possibility of Conjunction with the Active
- Intellect by {Ibn Rushd} with the Commentary of {Moses Narboni}},
- date = 1982,
- editor = {Bland, Kalman P.},
- translator = {Bland, Kalman P.},
- series = {Moreshet: Studies in {Jewish} History, Literature and Thought},
- number = 7,
- publisher = {Jewish Theological Seminary of America},
- location = {New York},
- keywords = {primary},
- langid = {english},
- langidopts = {variant=american},
- indextitle = {Epistle on the Possibility of Conjunction, The},
- shorttitle = {Possibility of Conjunction},
- annotation = {A \texttt{book} entry with a \texttt{series} and a
- \texttt{number}. Note the concatenation of the \texttt{editor}
- and \texttt{translator} fields as well as the
- \texttt{indextitle} field},
-} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/bibtex/samples/betram_1996.txt b/support/texlab/crates/parser/src/test_data/bibtex/samples/betram_1996.txt
deleted file mode 100644
index b2d77e216f..0000000000
--- a/support/texlab/crates/parser/src/test_data/bibtex/samples/betram_1996.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-@string{jams = {J.~Amer. Math. Soc.}}
-
-@article{bertram,
- author = {Bertram, Aaron and Wentworth, Richard},
- title = {Gromov invariants for holomorphic maps on {Riemann} surfaces},
- journaltitle = jams,
- date = 1996,
- volume = 9,
- number = 2,
- pages = {529-571},
- langid = {english},
- langidopts = {variant=american},
- shorttitle = {Gromov invariants},
- annotation = {An \texttt{article} entry with a \texttt{volume} and a
- \texttt{number} field},
-} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/bibtex/samples/blom_2021.txt b/support/texlab/crates/parser/src/test_data/bibtex/samples/blom_2021.txt
deleted file mode 100644
index a502e53e03..0000000000
--- a/support/texlab/crates/parser/src/test_data/bibtex/samples/blom_2021.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-@article{DBLP:journals/corr/abs-2107-11903,
- author = {Michelle L. Blom and
- Jurlind Budurushi and
- Ronald L. Rivest and
- Philip B. Stark and
- Peter J. Stuckey and
- Vanessa Teague and
- Damjan Vukcevic},
- title = {Assertion-based Approaches to Auditing Complex Elections, with application
- to party-list proportional elections},
- journal = {CoRR},
- volume = {abs/2107.11903},
- year = {2021},
- url = {https://arxiv.org/abs/2107.11903},
- eprinttype = {arXiv},
- eprint = {2107.11903},
- timestamp = {Thu, 29 Jul 2021 16:14:15 +0200},
- biburl = {https://dblp.org/rec/journals/corr/abs-2107-11903.bib},
- bibsource = {dblp computer science bibliography, https://dblp.org}
-} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/bibtex/samples/combi_2004.txt b/support/texlab/crates/parser/src/test_data/bibtex/samples/combi_2004.txt
deleted file mode 100644
index 7d8545577d..0000000000
--- a/support/texlab/crates/parser/src/test_data/bibtex/samples/combi_2004.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-@inproceedings{10.1145/967900.968040,
- author = {Combi, Carlo and Pozzi, Giuseppe},
- title = {Architectures for a Temporal Workflow Management System},
- year = {2004},
- isbn = {1581138121},
- publisher = {Association for Computing Machinery},
- address = {New York, NY, USA},
- url = {https://doi.org/10.1145/967900.968040},
- doi = {10.1145/967900.968040},
- booktitle = {Proceedings of the 2004 ACM Symposium on Applied Computing},
- pages = {659-666},
- numpages = {8},
- keywords = {active DBMS, temporal DBMS, workflow management system - WfMS, temporal workflow management system},
- location = {Nicosia, Cyprus},
- series = {SAC '04}
-} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/bibtex/samples/erwin_2007.txt b/support/texlab/crates/parser/src/test_data/bibtex/samples/erwin_2007.txt
deleted file mode 100644
index 116f5e7098..0000000000
--- a/support/texlab/crates/parser/src/test_data/bibtex/samples/erwin_2007.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-@inproceedings{10.5555/1386993.1386994,
- author = {Erwin, Alva and Gopalan, Raj P. and Achuthan, N. R.},
- title = {A Bottom-up Projection Based Algorithm for Mining High Utility Itemsets},
- year = {2007},
- isbn = {9781920682651},
- publisher = {Australian Computer Society, Inc.},
- address = {AUS},
- booktitle = {Proceedings of the 2nd International Workshop on Integrating Artificial Intelligence and Data Mining - Volume 84},
- pages = {3-11},
- numpages = {9},
- keywords = {pattern growth, high utility itemset mining},
- location = {Gold Coast, Australia},
- series = {AIDM '07}
-} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/bibtex/samples/jain_1999.txt b/support/texlab/crates/parser/src/test_data/bibtex/samples/jain_1999.txt
deleted file mode 100644
index c367ef12ee..0000000000
--- a/support/texlab/crates/parser/src/test_data/bibtex/samples/jain_1999.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-@article{10.1145/331499.331504,
- author = {Jain, A. K. and Murty, M. N. and Flynn, P. J.},
- title = {Data Clustering: A Review},
- year = {1999},
- issue_date = {Sept. 1999},
- publisher = {Association for Computing Machinery},
- address = {New York, NY, USA},
- volume = {31},
- number = {3},
- issn = {0360-0300},
- url = {https://doi.org/10.1145/331499.331504},
- doi = {10.1145/331499.331504},
- journal = {ACM Comput. Surv.},
- month = {sep},
- pages = {264-323},
- numpages = {60},
- keywords = {incremental clustering, clustering applications, exploratory data analysis, cluster analysis, similarity indices, unsupervised learning}
-} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/bibtex/samples/kastenholz_2006.txt b/support/texlab/crates/parser/src/test_data/bibtex/samples/kastenholz_2006.txt
deleted file mode 100644
index 457f871491..0000000000
--- a/support/texlab/crates/parser/src/test_data/bibtex/samples/kastenholz_2006.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-@string{jchph = {J.~Chem. Phys.}}
-
-@article{kastenholz,
- author = {Kastenholz, M. A. and H{\"u}nenberger, Philippe H.},
- title = {Computation of methodology\hyphen independent ionic solvation
- free energies from molecular simulations},
- journaltitle = jchph,
- date = 2006,
- subtitle = {{I}. {The} electrostatic potential in molecular liquids},
- volume = 124,
- eid = 124106,
- doi = {10.1063/1.2172593},
- langid = {english},
- langidopts = {variant=american},
- indextitle = {Computation of ionic solvation free energies},
- annotation = {An \texttt{article} entry with an \texttt{eid} and a
- \texttt{doi} field. Note that the \textsc{doi} is transformed
- into a clickable link if \texttt{hyperref} support has been
- enabled},
-} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/bibtex/samples/knuth_1984.txt b/support/texlab/crates/parser/src/test_data/bibtex/samples/knuth_1984.txt
deleted file mode 100644
index 98c595e35c..0000000000
--- a/support/texlab/crates/parser/src/test_data/bibtex/samples/knuth_1984.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-@book{knuth:ct:a,
- author = {Knuth, Donald E.},
- title = {The {\TeX book}},
- date = 1984,
- maintitle = {Computers \& Typesetting},
- volume = {A},
- publisher = {Addison-Wesley},
- location = {Reading, Mass.},
- langid = {english},
- langidopts = {variant=american},
- sorttitle = {Computers & Typesetting A},
- indexsorttitle= {The TeXbook},
- indextitle = {\protect\TeX book, The},
- shorttitle = {\TeX book},
- annotation = {The first volume of a five-volume book. Note the
- \texttt{sorttitle} field. We want this
- volume to be listed after the entry referring to the entire
- five-volume set. Also note the \texttt{indextitle} and
- \texttt{indexsorttitle} fields. Indexing packages that don't
- generate robust index entries require some control sequences
- to be protected from expansion},
-} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/bibtex/samples/matuz_1990.txt b/support/texlab/crates/parser/src/test_data/bibtex/samples/matuz_1990.txt
deleted file mode 100644
index cb803aab51..0000000000
--- a/support/texlab/crates/parser/src/test_data/bibtex/samples/matuz_1990.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-@collection{matuz:doody,
- editor = {Matuz, Roger},
- title = {Contemporary Literary Criticism},
- year = 1990,
- volume = 61,
- publisher = {Gale},
- location = {Detroit},
- pages = {204-208},
- langid = {english},
- langidopts = {variant=american},
- annotation = {A \texttt{collection} entry providing the excerpt information
- for the \texttt{doody} entry. Note the format of the
- \texttt{pages} field},
-} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/bibtex/samples/nietzsche_1998.txt b/support/texlab/crates/parser/src/test_data/bibtex/samples/nietzsche_1998.txt
deleted file mode 100644
index e245be39bb..0000000000
--- a/support/texlab/crates/parser/src/test_data/bibtex/samples/nietzsche_1998.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-@string{dtv = {Deutscher Taschenbuch-Verlag}}
-
-@mvbook{nietzsche:ksa,
- author = {Nietzsche, Friedrich},
- title = {S{\"a}mtliche Werke},
- date = 1988,
- editor = {Colli, Giorgio and Montinari, Mazzino},
- edition = 2,
- volumes = 15,
- publisher = dtv # { and Walter de Gruyter},
- location = {M{\"u}nchen and Berlin and New York},
- langid = {german},
- sorttitle = {Werke-00-000},
- indexsorttitle= {Samtliche Werke},
- subtitle = {Kritische Studienausgabe},
- annotation = {The critical edition of Nietzsche's works. This is a
- \texttt{mvbook} entry referring to a 15-volume work as a
- whole. Note the \texttt{volumes} field and the format of the
- \texttt{publisher} and \texttt{location} fields in the
- database file. Also note the \texttt{sorttitle} and
- field which is used to fine-tune the
- sorting order of the bibliography. We want this item listed
- first in the bibliography},
-} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/bibtex/samples/rivest_1978.txt b/support/texlab/crates/parser/src/test_data/bibtex/samples/rivest_1978.txt
deleted file mode 100644
index e1076145ea..0000000000
--- a/support/texlab/crates/parser/src/test_data/bibtex/samples/rivest_1978.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-@article{10.1145/359340.359342,
- author = {Rivest, R. L. and Shamir, A. and Adleman, L.},
- title = {A Method for Obtaining Digital Signatures and Public-Key Cryptosystems},
- year = {1978},
- issue_date = {Feb. 1978},
- publisher = {Association for Computing Machinery},
- address = {New York, NY, USA},
- volume = {21},
- number = {2},
- issn = {0001-0782},
- url = {https://doi.org/10.1145/359340.359342},
- doi = {10.1145/359340.359342},
- journal = {Commun. ACM},
- month = {feb},
- pages = {120-126},
- numpages = {7},
-} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/build_log/001.txt b/support/texlab/crates/parser/src/test_data/build_log/001.txt
deleted file mode 100644
index fc9968af0f..0000000000
--- a/support/texlab/crates/parser/src/test_data/build_log/001.txt
+++ /dev/null
@@ -1,83 +0,0 @@
-This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/W32TeX) (preloaded format=pdflatex 2018.3.30) 26 DEC 2018 16:50
-entering extended mode
-restricted \write18 enabled.
-%&-line parsing enabled.
-**./parent.tex
-(./parent.tex
-LaTeX2e <2017-04-15>
-Babel <3.10> and hyphenation patterns for 84 language(s) loaded.
-(/TexLive/texmf-dist/tex/latex/base/article.cls
-Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
-(/TexLive/texmf-dist/tex/latex/base/size10.clo
-File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option)
-)
-\c@part=\count79
-\c@section=\count80
-\c@subsection=\count81
-\c@subsubsection=\count82
-\c@paragraph=\count83
-\c@subparagraph=\count84
-\c@figure=\count85
-\c@table=\count86
-\abovecaptionskip=\skip41
-\belowcaptionskip=\skip42
-\bibindent=\dimen102
-)
-(/TexLive/texmf-dist/tex/latex/multirow/bigstrut.sty
-Package: bigstrut 2016/11/25 v2.2 Provide larger struts in tabulars
-\bigstrutjot=\dimen103
-)
-(/TexLive/texmf-dist/tex/latex/multirow/multirow.sty
-Package: multirow 2016/11/25 v2.2 Span multiple rows of a table
-\multirow@colwidth=\skip43
-\multirow@cntb=\count87
-\multirow@dima=\skip44
-) (./parent.aux)
-\openout1 = `parent.aux'.
-
-LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 6.
-LaTeX Font Info: ... okay on input line 6.
-LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 6.
-LaTeX Font Info: ... okay on input line 6.
-LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 6.
-LaTeX Font Info: ... okay on input line 6.
-LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 6.
-LaTeX Font Info: ... okay on input line 6.
-LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 6.
-LaTeX Font Info: ... okay on input line 6.
-LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 6.
-LaTeX Font Info: ... okay on input line 6.
-
-Overfull \hbox (200.00162pt too wide) in paragraph at lines 8--9
-[]\OT1/cmr/m/n/10 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-[]
-
-LaTeX Font Info: External font `cmex10' loaded for size
-(Font) <7> on input line 11.
-LaTeX Font Info: External font `cmex10' loaded for size
-(Font) <5> on input line 11.
-
-Overfull \vbox (3.19998pt too high) detected at line 23
-[]
-
-[1
-
-{/TexLive/texmf-var/fonts/map/pdftex/updmap/pdftex.map}] (./parent.aux) )
-Here is how much of TeX's memory you used:
-265 strings out of 492995
-3121 string characters out of 6138727
-55074 words of memory out of 5000000
-3896 multiletter control sequences out of 15000+600000
-3640 words of font info for 14 fonts, out of 8000000 for 9000
-1141 hyphenation exceptions out of 8191
-23i,20n,20p,124b,282s stack positions out of 5000i,500n,10000p,200000b,80000s
-</
-TexLive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb></TexLive/texmf-d
-ist/fonts/type1/public/amsfonts/cm/cmr7.pfb>
-Output written on parent.pdf (1 page, 17505 bytes).
-PDF statistics:
-16 PDF objects out of 1000 (max. 8388607)
-10 compressed objects within 1 object stream
-0 named destinations out of 1000 (max. 500000)
-1 words of extra memory for PDF output out of 10000 (max. 10000000) \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/build_log/002.txt b/support/texlab/crates/parser/src/test_data/build_log/002.txt
deleted file mode 100644
index 8d438d1f12..0000000000
--- a/support/texlab/crates/parser/src/test_data/build_log/002.txt
+++ /dev/null
@@ -1,64 +0,0 @@
-This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/W32TeX) (preloaded format=pdflatex 2018.3.30) 26 DEC 2018 16:52
-entering extended mode
-restricted \write18 enabled.
-%&-line parsing enabled.
-**./parent.tex
-(./parent.tex
-LaTeX2e <2017-04-15>
-Babel <3.10> and hyphenation patterns for 84 language(s) loaded.
-(/TexLive/texmf-dist/tex/latex/base/article.cls
-Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
-(/TexLive/texmf-dist/tex/latex/base/size10.clo
-File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option)
-)
-\c@part=\count79
-\c@section=\count80
-\c@subsection=\count81
-\c@subsubsection=\count82
-\c@paragraph=\count83
-\c@subparagraph=\count84
-\c@figure=\count85
-\c@table=\count86
-\abovecaptionskip=\skip41
-\belowcaptionskip=\skip42
-\bibindent=\dimen102
-) (./parent.aux (./child.aux))
-\openout1 = `parent.aux'.
-
-LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 4.
-LaTeX Font Info: ... okay on input line 4.
-LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 4.
-LaTeX Font Info: ... okay on input line 4.
-LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 4.
-LaTeX Font Info: ... okay on input line 4.
-LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 4.
-LaTeX Font Info: ... okay on input line 4.
-LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 4.
-LaTeX Font Info: ... okay on input line 4.
-LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 4.
-LaTeX Font Info: ... okay on input line 4.
-(./child.tex
-! Undefined control sequence.
-l.1 \foo
-
-The control sequence at the end of the top line
-of your error message was never \def'ed. If you have
-misspelled it (e.g., `\hobx'), type `I' and the correct
-spelling (e.g., `I\hbox'). Otherwise just continue,
-and I'll forget about whatever was undefined.
-
-) (./parent.aux) )
-Here is how much of TeX's memory you used:
-205 strings out of 492995
-2149 string characters out of 6138727
-54074 words of memory out of 5000000
-3841 multiletter control sequences out of 15000+600000
-3640 words of font info for 14 fonts, out of 8000000 for 9000
-1141 hyphenation exceptions out of 8191
-23i,1n,17p,116b,36s stack positions out of 5000i,500n,10000p,200000b,80000s
-
-No pages of output.
-PDF statistics:
-0 PDF objects out of 1000 (max. 8388607)
-0 named destinations out of 1000 (max. 500000)
-1 words of extra memory for PDF output out of 10000 (max. 10000000) \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/build_log/003.txt b/support/texlab/crates/parser/src/test_data/build_log/003.txt
deleted file mode 100644
index 220614b91c..0000000000
--- a/support/texlab/crates/parser/src/test_data/build_log/003.txt
+++ /dev/null
@@ -1,65 +0,0 @@
-This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/W32TeX) (preloaded format=pdflatex 2018.3.30) 26 DEC 2018 16:51
-entering extended mode
-restricted \write18 enabled.
-%&-line parsing enabled.
-**./parent.tex
-(./parent.tex
-LaTeX2e <2017-04-15>
-Babel <3.10> and hyphenation patterns for 84 language(s) loaded.
-(/TexLive/texmf-dist/tex/latex/base/article.cls
-Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
-(/TexLive/texmf-dist/tex/latex/base/size10.clo
-File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option)
-)
-\c@part=\count79
-\c@section=\count80
-\c@subsection=\count81
-\c@subsubsection=\count82
-\c@paragraph=\count83
-\c@subparagraph=\count84
-\c@figure=\count85
-\c@table=\count86
-\abovecaptionskip=\skip41
-\belowcaptionskip=\skip42
-\bibindent=\dimen102
-) (./parent.aux)
-\openout1 = `parent.aux'.
-
-LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 4.
-LaTeX Font Info: ... okay on input line 4.
-LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 4.
-LaTeX Font Info: ... okay on input line 4.
-LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 4.
-LaTeX Font Info: ... okay on input line 4.
-LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 4.
-LaTeX Font Info: ... okay on input line 4.
-LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 4.
-LaTeX Font Info: ... okay on input line 4.
-LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 4.
-LaTeX Font Info: ... okay on input line 4.
-
-LaTeX Warning: Citation `foo' on page 1 undefined on input line 6.
-
-[1
-
-{/TexLive/texmf-var/fonts/map/pdftex/updmap/pdftex.map}] (./parent.aux)
-
-LaTeX Warning: There were undefined references.
-
-)
-Here is how much of TeX's memory you used:
-204 strings out of 492995
-2142 string characters out of 6138727
-54074 words of memory out of 5000000
-3842 multiletter control sequences out of 15000+600000
-3948 words of font info for 15 fonts, out of 8000000 for 9000
-1141 hyphenation exceptions out of 8191
-23i,4n,21p,116b,107s stack positions out of 5000i,500n,10000p,200000b,80000s
-</TexLive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb></TexLive/
-texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb>
-Output written on parent.pdf (1 page, 17339 bytes).
-PDF statistics:
-16 PDF objects out of 1000 (max. 8388607)
-10 compressed objects within 1 object stream
-0 named destinations out of 1000 (max. 500000)
-1 words of extra memory for PDF output out of 10000 (max. 10000000) \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/build_log/004.txt b/support/texlab/crates/parser/src/test_data/build_log/004.txt
deleted file mode 100644
index 4ab379cd53..0000000000
--- a/support/texlab/crates/parser/src/test_data/build_log/004.txt
+++ /dev/null
@@ -1,83 +0,0 @@
-This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/W32TeX) (preloaded format=pdflatex 2018.3.30) 26 DEC 2018 16:40
-entering extended mode
-restricted \write18 enabled.
-%&-line parsing enabled.
-**./parent.tex
-(./parent.tex
-LaTeX2e <2017-04-15>
-Babel <3.10> and hyphenation patterns for 84 language(s) loaded.
-(/TexLive/texmf-dist/tex/latex/base/article.cls
-Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
-(/TexLive/texmf-dist/tex/latex/base/size10.clo
-File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option)
-)
-\c@part=\count79
-\c@section=\count80
-\c@subsection=\count81
-\c@subsubsection=\count82
-\c@paragraph=\count83
-\c@subparagraph=\count84
-\c@figure=\count85
-\c@table=\count86
-\abovecaptionskip=\skip41
-\belowcaptionskip=\skip42
-\bibindent=\dimen102
-)
-(/TexLive/texmf-dist/tex/generic/babel/babel.sty
-Package: babel 2017/05/19 3.10 The Babel package
-
-! Package babel Error: Unknown option `foo'. Either you misspelled it
-(babel) or the language definition file foo.ldf was not found.
-
-See the babel package documentation for explanation.
-Type H <return> for immediate help.
-...
-
-l.393 \ProcessOptions*
-
-Valid options are: shorthands=, KeepShorthandsActive,
-activeacute, activegrave, noconfigs, safe=, main=, math=
-headfoot=, strings=, config=, hyphenmap=, or a language name.
-
-! Package babel Error: You haven't specified a language option.
-
-See the babel package documentation for explanation.
-Type H <return> for immediate help.
-...
-
-l.426 ...ry to proceed from here, type x to quit.}
-
-You need to specify a language, either as a global option
-or as an optional argument to the \usepackage command;
-You shouldn't try to proceed from here, type x to quit.
-
-) (./parent.aux)
-\openout1 = `parent.aux'.
-
-LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 5.
-LaTeX Font Info: ... okay on input line 5.
-LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 5.
-LaTeX Font Info: ... okay on input line 5.
-LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 5.
-LaTeX Font Info: ... okay on input line 5.
-LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 5.
-LaTeX Font Info: ... okay on input line 5.
-LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 5.
-LaTeX Font Info: ... okay on input line 5.
-LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 5.
-LaTeX Font Info: ... okay on input line 5.
-(./parent.aux) )
-Here is how much of TeX's memory you used:
-304 strings out of 492995
-3421 string characters out of 6138727
-56035 words of memory out of 5000000
-3938 multiletter control sequences out of 15000+600000
-3640 words of font info for 14 fonts, out of 8000000 for 9000
-1141 hyphenation exceptions out of 8191
-23i,1n,17p,116b,36s stack positions out of 5000i,500n,10000p,200000b,80000s
-
-No pages of output.
-PDF statistics:
-0 PDF objects out of 1000 (max. 8388607)
-0 named destinations out of 1000 (max. 500000)
-1 words of extra memory for PDF output out of 10000 (max. 10000000) \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/build_log/005.txt b/support/texlab/crates/parser/src/test_data/build_log/005.txt
deleted file mode 100644
index 07c95bfc6b..0000000000
--- a/support/texlab/crates/parser/src/test_data/build_log/005.txt
+++ /dev/null
@@ -1,385 +0,0 @@
-This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/W32TeX) (preloaded format=pdflatex 2018.3.30) 26 DEC 2018 16:45
-entering extended mode
-restricted \write18 enabled.
-%&-line parsing enabled.
-**./parent.tex
-(./parent.tex
-LaTeX2e <2017-04-15>
-Babel <3.10> and hyphenation patterns for 84 language(s) loaded.
-(/TexLive/texmf-dist/tex/latex/base/article.cls
-Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
-(/TexLive/texmf-dist/tex/latex/base/size10.clo
-File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option)
-)
-\c@part=\count79
-\c@section=\count80
-\c@subsection=\count81
-\c@subsubsection=\count82
-\c@paragraph=\count83
-\c@subparagraph=\count84
-\c@figure=\count85
-\c@table=\count86
-\abovecaptionskip=\skip41
-\belowcaptionskip=\skip42
-\bibindent=\dimen102
-)
-(/TexLive/texmf-dist/tex/generic/babel/babel.sty
-Package: babel 2017/05/19 3.10 The Babel package
-
-(/TexLive/texmf-dist/tex/generic/babel-spanish/spanish.ldf
-Language: spanish.ldf 2016/03/03 v5.0p Spanish support from the babel system
-
-(/TexLive/texmf-dist/tex/generic/babel/babel.def
-File: babel.def 2017/05/19 3.10 Babel common definitions
-\babel@savecnt=\count87
-\U@D=\dimen103
-)
-\es@quottoks=\toks14
-\es@quotdepth=\count88
-Package babel Info: Making " an active character on input line 561.
-Package babel Info: Making . an active character on input line 662.
-Package babel Info: Making < an active character on input line 707.
-Package babel Info: Making > an active character on input line 707.
-))
-(/TexLive/texmf-dist/tex/latex/biblatex/biblatex.sty
-Package: biblatex 2016/12/05 v3.7 programmable bibliographies (PK/JW/AB)
-
-(/TexLive/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty
-Package: pdftexcmds 2017/03/19 v0.25 Utility functions of pdfTeX for LuaTeX (HO
-)
-
-(/TexLive/texmf-dist/tex/generic/oberdiek/infwarerr.sty
-Package: infwarerr 2016/05/16 v1.4 Providing info/warning/error messages (HO)
-)
-(/TexLive/texmf-dist/tex/generic/oberdiek/ifluatex.sty
-Package: ifluatex 2016/05/16 v1.4 Provides the ifluatex switch (HO)
-Package ifluatex Info: LuaTeX not detected.
-)
-(/TexLive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty
-Package: ltxcmds 2016/05/16 v1.23 LaTeX kernel commands for general use (HO)
-)
-(/TexLive/texmf-dist/tex/generic/oberdiek/ifpdf.sty
-Package: ifpdf 2017/03/15 v3.2 Provides the ifpdf switch
-)
-Package pdftexcmds Info: LuaTeX not detected.
-Package pdftexcmds Info: \pdf@primitive is available.
-Package pdftexcmds Info: \pdf@ifprimitive is available.
-Package pdftexcmds Info: \pdfdraftmode found.
-)
-(/TexLive/texmf-dist/tex/latex/etoolbox/etoolbox.sty
-Package: etoolbox 2017/01/02 v2.4 e-TeX tools for LaTeX (JAW)
-\etb@tempcnta=\count89
-)
-(/TexLive/texmf-dist/tex/latex/graphics/keyval.sty
-Package: keyval 2014/10/28 v1.15 key=value parser (DPC)
-\KV@toks@=\toks15
-)
-(/TexLive/texmf-dist/tex/latex/oberdiek/kvoptions.sty
-Package: kvoptions 2016/05/16 v3.12 Key value format for package options (HO)
-
-(/TexLive/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty
-Package: kvsetkeys 2016/05/16 v1.17 Key value parser (HO)
-
-(/TexLive/texmf-dist/tex/generic/oberdiek/etexcmds.sty
-Package: etexcmds 2016/05/16 v1.6 Avoid name clashes with e-TeX commands (HO)
-Package etexcmds Info: Could not find \expanded.
-(etexcmds) That can mean that you are not using pdfTeX 1.50 or
-(etexcmds) that some package has redefined \expanded.
-(etexcmds) In the latter case, load this package earlier.
-)))
-(/TexLive/texmf-dist/tex/latex/logreq/logreq.sty
-Package: logreq 2010/08/04 v1.0 xml request logger
-\lrq@indent=\count90
-
-(/TexLive/texmf-dist/tex/latex/logreq/logreq.def
-File: logreq.def 2010/08/04 v1.0 logreq spec v1.0
-))
-(/TexLive/texmf-dist/tex/latex/base/ifthen.sty
-Package: ifthen 2014/09/29 v1.1c Standard LaTeX ifthen package (DPC)
-)
-(/TexLive/texmf-dist/tex/latex/url/url.sty
-\Urlmuskip=\muskip10
-Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc.
-)
-(/TexLive/texmf-dist/tex/generic/xstring/xstring.sty
-(/TexLive/texmf-dist/tex/generic/xstring/xstring.tex
-\@xs@message=\write3
-\integerpart=\count91
-\decimalpart=\count92
-)
-Package: xstring 2013/10/13 v1.7c String manipulations (C Tellechea)
-)
-\c@tabx@nest=\count93
-\c@listtotal=\count94
-\c@listcount=\count95
-\c@liststart=\count96
-\c@liststop=\count97
-\c@citecount=\count98
-\c@citetotal=\count99
-\c@multicitecount=\count100
-\c@multicitetotal=\count101
-\c@instcount=\count102
-\c@maxnames=\count103
-\c@minnames=\count104
-\c@maxitems=\count105
-\c@minitems=\count106
-\c@citecounter=\count107
-\c@savedcitecounter=\count108
-\c@uniquelist=\count109
-\c@uniquename=\count110
-\c@refsection=\count111
-\c@refsegment=\count112
-\c@maxextratitle=\count113
-\c@maxextratitleyear=\count114
-\c@maxextrayear=\count115
-\c@maxextraalpha=\count116
-\c@abbrvpenalty=\count117
-\c@highnamepenalty=\count118
-\c@lownamepenalty=\count119
-\c@maxparens=\count120
-\c@parenlevel=\count121
-\blx@tempcnta=\count122
-\blx@tempcntb=\count123
-\blx@tempcntc=\count124
-\blx@maxsection=\count125
-\blx@maxsegment@0=\count126
-\blx@notetype=\count127
-\blx@parenlevel@text=\count128
-\blx@parenlevel@foot=\count129
-\blx@sectionciteorder@0=\count130
-\labelnumberwidth=\skip43
-\labelalphawidth=\skip44
-\biblabelsep=\skip45
-\bibitemsep=\skip46
-\bibnamesep=\skip47
-\bibinitsep=\skip48
-\bibparsep=\skip49
-\bibhang=\skip50
-\blx@bcfin=\read1
-\blx@bcfout=\write4
-\c@mincomprange=\count131
-\c@maxcomprange=\count132
-\c@mincompwidth=\count133
-Package biblatex Info: Trying to load biblatex default data model...
-Package biblatex Info: ... file 'blx-dm.def' found.
-
-(/TexLive/texmf-dist/tex/latex/biblatex/blx-dm.def)
-Package biblatex Info: Trying to load biblatex style data model...
-Package biblatex Info: ... file 'ieee.dbx' not found.
-Package biblatex Info: Trying to load biblatex custom data model...
-Package biblatex Info: ... file 'biblatex-dm.cfg' not found.
-\c@afterword=\count134
-\c@savedafterword=\count135
-\c@annotator=\count136
-\c@savedannotator=\count137
-\c@author=\count138
-\c@savedauthor=\count139
-\c@bookauthor=\count140
-\c@savedbookauthor=\count141
-\c@commentator=\count142
-\c@savedcommentator=\count143
-\c@editor=\count144
-\c@savededitor=\count145
-\c@editora=\count146
-\c@savededitora=\count147
-\c@editorb=\count148
-\c@savededitorb=\count149
-\c@editorc=\count150
-\c@savededitorc=\count151
-\c@foreword=\count152
-\c@savedforeword=\count153
-\c@holder=\count154
-\c@savedholder=\count155
-\c@introduction=\count156
-\c@savedintroduction=\count157
-\c@namea=\count158
-\c@savednamea=\count159
-\c@nameb=\count160
-\c@savednameb=\count161
-\c@namec=\count162
-\c@savednamec=\count163
-\c@translator=\count164
-\c@savedtranslator=\count165
-\c@shortauthor=\count166
-\c@savedshortauthor=\count167
-\c@shorteditor=\count168
-\c@savedshorteditor=\count169
-\c@labelname=\count170
-\c@savedlabelname=\count171
-\c@institution=\count172
-\c@savedinstitution=\count173
-\c@lista=\count174
-\c@savedlista=\count175
-\c@listb=\count176
-\c@savedlistb=\count177
-\c@listc=\count178
-\c@savedlistc=\count179
-\c@listd=\count180
-\c@savedlistd=\count181
-\c@liste=\count182
-\c@savedliste=\count183
-\c@listf=\count184
-\c@savedlistf=\count185
-\c@location=\count186
-\c@savedlocation=\count187
-\c@organization=\count188
-\c@savedorganization=\count189
-\c@origlocation=\count190
-\c@savedoriglocation=\count191
-\c@origpublisher=\count192
-\c@savedorigpublisher=\count193
-\c@publisher=\count194
-\c@savedpublisher=\count195
-\c@language=\count196
-\c@savedlanguage=\count197
-\c@pageref=\count198
-\c@savedpageref=\count199
-\shorthandwidth=\skip51
-\shortjournalwidth=\skip52
-\shortserieswidth=\skip53
-\shorttitlewidth=\skip54
-\shortauthorwidth=\skip55
-\shorteditorwidth=\skip56
-Package biblatex Info: Trying to load compatibility code...
-Package biblatex Info: ... file 'blx-compat.def' found.
-
-(/TexLive/texmf-dist/tex/latex/biblatex/blx-compat.def
-File: blx-compat.def 2016/12/05 v3.7 biblatex compatibility (PK/JW/AB)
-)
-Package biblatex Info: Trying to load generic definitions...
-Package biblatex Info: ... file 'biblatex.def' found.
-
-(/TexLive/texmf-dist/tex/latex/biblatex/biblatex.def
-File: biblatex.def 2016/12/05 v3.7 biblatex compatibility (PK/JW/AB)
-\c@textcitecount=\count266
-\c@textcitetotal=\count267
-\c@textcitemaxnames=\count268
-\c@biburlnumpenalty=\count269
-\c@biburlucpenalty=\count270
-\c@biburllcpenalty=\count271
-\c@smartand=\count272
-)
-Package biblatex Info: Trying to load bibliography style 'ieee'...
-Package biblatex Info: ... file 'ieee.bbx' found.
-
-(/TexLive/texmf-dist/tex/latex/biblatex-ieee/ieee.bbx
-File: ieee.bbx 2017/03/27 v1.2d biblatex bibliography style
-Package biblatex Info: Trying to load bibliography style 'numeric-comp'...
-Package biblatex Info: ... file 'numeric-comp.bbx' found.
-
-(/TexLive/texmf-dist/tex/latex/biblatex/bbx/numeric-comp.bbx
-File: numeric-comp.bbx 2016/12/05 v3.7 biblatex bibliography style (PK/JW/AB)
-Package biblatex Info: Trying to load bibliography style 'numeric'...
-Package biblatex Info: ... file 'numeric.bbx' found.
-
-(/TexLive/texmf-dist/tex/latex/biblatex/bbx/numeric.bbx
-File: numeric.bbx 2016/12/05 v3.7 biblatex bibliography style (PK/JW/AB)
-Package biblatex Info: Trying to load bibliography style 'standard'...
-Package biblatex Info: ... file 'standard.bbx' found.
-
-(/TexLive/texmf-dist/tex/latex/biblatex/bbx/standard.bbx
-File: standard.bbx 2016/12/05 v3.7 biblatex bibliography style (PK/JW/AB)
-\c@bbx:relatedcount=\count273
-\c@bbx:relatedtotal=\count274
-))))
-Package biblatex Info: Trying to load citation style 'ieee'...
-Package biblatex Info: ... file 'ieee.cbx' found.
-
-(/TexLive/texmf-dist/tex/latex/biblatex-ieee/ieee.cbx
-File: ieee.cbx 2017/03/27 v1.2d biblatex citation style
-Package biblatex Info: Trying to load citation style 'numeric-comp'...
-Package biblatex Info: ... file 'numeric-comp.cbx' found.
-
-(/TexLive/texmf-dist/tex/latex/biblatex/cbx/numeric-comp.cbx
-File: numeric-comp.cbx 2016/12/05 v3.7 biblatex citation style (PK/JW/AB)
-\c@cbx@tempcnta=\count275
-\c@cbx@tempcntb=\count276
-Package biblatex Info: Redefining '\cite'.
-Package biblatex Info: Redefining '\parencite'.
-Package biblatex Info: Redefining '\footcite'.
-Package biblatex Info: Redefining '\footcitetext'.
-Package biblatex Info: Redefining '\smartcite'.
-Package biblatex Info: Redefining '\supercite'.
-Package biblatex Info: Redefining '\textcite'.
-Package biblatex Info: Redefining '\textcites'.
-Package biblatex Info: Redefining '\cites'.
-Package biblatex Info: Redefining '\parencites'.
-Package biblatex Info: Redefining '\smartcites'.
-)
-Package biblatex Info: Redefining '\cite'.
-Package biblatex Info: Redefining '\cites'.
-)
-Package biblatex Info: Trying to load configuration file...
-Package biblatex Info: ... file 'biblatex.cfg' found.
-
-(/TexLive/texmf-dist/tex/latex/biblatex/biblatex.cfg
-File: biblatex.cfg
-))
-Package biblatex Info: Trying to load language 'spanish'...
-Package biblatex Info: ... file 'spanish.lbx' found.
-
-(/TexLive/texmf-dist/tex/latex/biblatex/lbx/spanish.lbx
-File: spanish.lbx 2016/12/05 v3.7 biblatex localization (PK/JW/AB)
-)
-
-Package biblatex Warning: 'babel/polyglossia' detected but 'csquotes' missing.
-(biblatex) Loading 'csquotes' recommended.
-
-\@quotelevel=\count277
-\@quotereset=\count278
-(./parent.aux)
-\openout1 = `parent.aux'.
-
-LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 6.
-LaTeX Font Info: ... okay on input line 6.
-LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 6.
-LaTeX Font Info: ... okay on input line 6.
-LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 6.
-LaTeX Font Info: ... okay on input line 6.
-LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 6.
-LaTeX Font Info: ... okay on input line 6.
-LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 6.
-LaTeX Font Info: ... okay on input line 6.
-LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 6.
-LaTeX Font Info: ... okay on input line 6.
-LaTeX Info: Redefining \sptext on input line 6.
-LaTeX Info: Redefining \. on input line 6.
-LaTeX Info: Redefining \% on input line 6.
-Package biblatex Info: No input encoding detected.
-(biblatex) Assuming 'ascii'.
-Package biblatex Info: Automatic encoding selection.
-(biblatex) Assuming data encoding 'ascii'.
-\openout4 = `parent.bcf'.
-
-Package biblatex Info: Trying to load bibliographic data...
-Package biblatex Info: ... file 'parent.bbl' not found.
-
-No file parent.bbl.
-Package biblatex Info: Reference section=0 on input line 6.
-Package biblatex Info: Reference segment=0 on input line 6.
-(./parent.aux)
-
-LaTeX Warning: There were undefined references.
-
-Package biblatex Warning: Please (re)run Biber on the file:
-(biblatex) parent
-(biblatex) and rerun LaTeX afterwards.
-
-Package logreq Info: Writing requests to 'parent.run.xml'.
-\openout1 = `parent.run.xml'.
-
-)
-Here is how much of TeX's memory you used:
-7717 strings out of 492995
-133301 string characters out of 6138727
-557258 words of memory out of 5000000
-11248 multiletter control sequences out of 15000+600000
-3640 words of font info for 14 fonts, out of 8000000 for 9000
-1141 hyphenation exceptions out of 8191
-35i,1n,30p,856b,700s stack positions out of 5000i,500n,10000p,200000b,80000s
-
-No pages of output.
-PDF statistics:
-0 PDF objects out of 1000 (max. 8388607)
-0 named destinations out of 1000 (max. 500000)
-1 words of extra memory for PDF output out of 10000 (max. 10000000) \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/build_log/006.txt b/support/texlab/crates/parser/src/test_data/build_log/006.txt
deleted file mode 100644
index 3edb18b8c7..0000000000
--- a/support/texlab/crates/parser/src/test_data/build_log/006.txt
+++ /dev/null
@@ -1,122 +0,0 @@
-This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/W32TeX) (preloaded format=pdflatex 2018.3.30) 26 DEC 2018 16:33
-entering extended mode
-restricted \write18 enabled.
-%&-line parsing enabled.
-**./parent.tex
-(./parent.tex
-LaTeX2e <2017-04-15>
-Babel <3.10> and hyphenation patterns for 84 language(s) loaded.
-(/TexLive/texmf-dist/tex/latex/base/article.cls
-Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
-(/TexLive/texmf-dist/tex/latex/base/size10.clo
-File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option)
-)
-\c@part=\count79
-\c@section=\count80
-\c@subsection=\count81
-\c@subsubsection=\count82
-\c@paragraph=\count83
-\c@subparagraph=\count84
-\c@figure=\count85
-\c@table=\count86
-\abovecaptionskip=\skip41
-\belowcaptionskip=\skip42
-\bibindent=\dimen102
-) (./parent.aux
-(./child.tex.aux))
-\openout1 = `parent.aux'.
-
-LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 3.
-LaTeX Font Info: ... okay on input line 3.
-LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 3.
-LaTeX Font Info: ... okay on input line 3.
-LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 3.
-LaTeX Font Info: ... okay on input line 3.
-LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 3.
-LaTeX Font Info: ... okay on input line 3.
-LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 3.
-LaTeX Font Info: ... okay on input line 3.
-LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 3.
-LaTeX Font Info: ... okay on input line 3.
-\openout2 = `child.aux'.
-
-(./child.tex)
-! Undefined control sequence.
-l.7 \foo
-
-The control sequence at the end of the top line
-of your error message was never \def'ed. If you have
-misspelled it (e.g., `\hobx'), type `I' and the correct
-spelling (e.g., `I\hbox'). Otherwise just continue,
-and I'll forget about whatever was undefined.
-
-! Missing $ inserted.
-<inserted text>
- $
-l.8 \bar
-
-I've inserted a begin-math/end-math symbol since I think
-you left one out. Proceed, with fingers crossed.
-
-LaTeX Font Info: External font `cmex10' loaded for size
-(Font) <7> on input line 8.
-LaTeX Font Info: External font `cmex10' loaded for size
-(Font) <5> on input line 8.
-! Undefined control sequence.
-l.9 \baz
-
-The control sequence at the end of the top line
-of your error message was never \def'ed. If you have
-misspelled it (e.g., `\hobx'), type `I' and the correct
-spelling (e.g., `I\hbox'). Otherwise just continue,
-and I'll forget about whatever was undefined.
-
-! Missing { inserted.
-<to be read again>
- \par
-l.10
-
-A left brace was mandatory here, so I've put one in.
-You might want to delete and/or insert some corrections
-so that I will find a matching right brace soon.
-(If you're confused by all this, try typing `I}' now.)
-
-! Missing $ inserted.
-<inserted text>
- $
-l.10
-
-I've inserted a begin-math/end-math symbol since I think
-you left one out. Proceed, with fingers crossed.
-
-! Missing } inserted.
-<inserted text>
- }
-l.10
-
-I've inserted something that you may have forgotten.
-(See the <inserted text> above.)
-With luck, this will get me unwedged. But if you
-really didn't forget anything, try typing `2' now; then
-my insertion and my current dilemma will both disappear.
-
-[1
-
-{/TexLive/texmf-var/fonts/map/pdftex/updmap/pdftex.map}] (./parent.aux
-(./child.aux)) )
-Here is how much of TeX's memory you used:
-212 strings out of 492995
-2238 string characters out of 6138727
-54074 words of memory out of 5000000
-3843 multiletter control sequences out of 15000+600000
-3640 words of font info for 14 fonts, out of 8000000 for 9000
-1141 hyphenation exceptions out of 8191
-23i,4n,17p,116b,107s stack positions out of 5000i,500n,10000p,200000b,80000s
-</TexLive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb
->
-Output written on parent.pdf (1 page, 8329 bytes).
-PDF statistics:
-12 PDF objects out of 1000 (max. 8388607)
-7 compressed objects within 1 object stream
-0 named destinations out of 1000 (max. 500000)
-1 words of extra memory for PDF output out of 10000 (max. 10000000) \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/build_log/007.txt b/support/texlab/crates/parser/src/test_data/build_log/007.txt
deleted file mode 100644
index 4c86405c0d..0000000000
--- a/support/texlab/crates/parser/src/test_data/build_log/007.txt
+++ /dev/null
@@ -1,176 +0,0 @@
-This is pdfTeX, Version 3.141592653-2.6-1.40.22 (TeX Live 2021/W32TeX) (preloaded format=pdflatex 2021.6.19) 5 NOV 2021 19:10
-entering extended mode
-restricted \write18 enabled.
-%&-line parsing enabled.
-**/some/folder/a.tex
-(/some/folder/a.tex
-LaTeX2e <2021-06-01> patch level 1
-L3 programming layer <2021-06-18>
-(/texlive/2021/texmf-dist/tex/latex/koma-script/scrartcl.cls
-Document Class: scrartcl 2021/03/17 v3.33 KOMA-Script document class (article)
-(/texlive/2021/texmf-dist/tex/latex/koma-script/scrkbase.sty
-Package: scrkbase 2021/03/17 v3.33 KOMA-Script package (KOMA-Script-dependent b
-asics and keyval usage)
-
-(/texlive/2021/texmf-dist/tex/latex/koma-script/scrbase.sty
-Package: scrbase 2021/03/17 v3.33 KOMA-Script package (KOMA-Script-independent
-basics and keyval usage)
-
-(/texlive/2021/texmf-dist/tex/latex/koma-script/scrlfile.sty
-Package: scrlfile 2021/03/17 v3.33 KOMA-Script package (file load hooks)
-
-(/texlive/2021/texmf-dist/tex/latex/koma-script/scrlfile-hook.sty
-Package: scrlfile-hook 2021/03/17 v3.33 KOMA-Script package (using LaTeX hooks)
-
-
-(/texlive/2021/texmf-dist/tex/latex/koma-script/scrlogo.sty
-Package: scrlogo 2021/03/17 v3.33 KOMA-Script package (logo)
-)))
-(/texlive/2021/texmf-dist/tex/latex/graphics/keyval.sty
-Package: keyval 2014/10/28 v1.15 key=value parser (DPC)
-\KV@toks@=\toks16
-)
-Applying: [2021/05/01] Usage of raw option list on input line 252.
-Already applied: [0000/00/00] compatibility for LaTeX before 2021/05/01 on inpu
-t line 337.
-))
-==> First Aid for scrkbase.sty no longer applied!
-(/texlive/2021/texmf-dist/tex/latex/koma-script/tocbasic.sty
-Package: tocbasic 2021/03/17 v3.33 KOMA-Script package (handling toc-files)
-\scr@dte@tocline@numberwidth=\skip47
-\scr@dte@tocline@numbox=\box50
-)
-Package tocbasic Info: babel extension for `toc' omitted
-(tocbasic) because of missing \bbl@set@language on input line 135.
-Class scrartcl Info: File `scrsize11pt.clo' used instead of
-(scrartcl) file `scrsize11.clo' to setup font sizes on input line 223
-9.
-
-(/texlive/2021/texmf-dist/tex/latex/koma-script/scrsize11pt.clo
-File: scrsize11pt.clo 2021/03/17 v3.33 KOMA-Script font size class option (11pt
-)
-)
-(/texlive/2021/texmf-dist/tex/latex/koma-script/typearea.sty
-Package: typearea 2021/03/17 v3.33 KOMA-Script package (type area)
-\ta@bcor=\skip48
-\ta@div=\count182
-\ta@hblk=\skip49
-\ta@vblk=\skip50
-\ta@temp=\skip51
-\footheight=\skip52
-Package typearea Info: These are the values describing the layout:
-(typearea) DIV = 10
-(typearea) BCOR = 0.0pt
-(typearea) \paperwidth = 597.50793pt
-(typearea) \textwidth = 418.25555pt
-(typearea) DIV departure = -6%
-(typearea) \evensidemargin = 17.3562pt
-(typearea) \oddsidemargin = 17.3562pt
-(typearea) \paperheight = 845.04694pt
-(typearea) \textheight = 595.80026pt
-(typearea) \topmargin = -25.16531pt
-(typearea) \headheight = 17.0pt
-(typearea) \headsep = 20.40001pt
-(typearea) \topskip = 11.0pt
-(typearea) \footskip = 47.6pt
-(typearea) \baselineskip = 13.6pt
-(typearea) on input line 1741.
-)
-\c@part=\count183
-\c@section=\count184
-\c@subsection=\count185
-\c@subsubsection=\count186
-\c@paragraph=\count187
-\c@subparagraph=\count188
-\scr@dte@section@maxnumwidth=\skip53
-Class scrartcl Info: using compatibility default `runin=bysign'
-(scrartcl) for `\section on input line 4846.
-Class scrartcl Info: using compatibility default `afterindent=bysign'
-(scrartcl) for `\section on input line 4846.
-\scr@dte@part@maxnumwidth=\skip54
-Class scrartcl Info: using compatibility default `afterindent=false'
-(scrartcl) for `\part on input line 4854.
-\scr@dte@subsection@maxnumwidth=\skip55
-Class scrartcl Info: using compatibility default `runin=bysign'
-(scrartcl) for `\subsection on input line 4864.
-Class scrartcl Info: using compatibility default `afterindent=bysign'
-(scrartcl) for `\subsection on input line 4864.
-\scr@dte@subsubsection@maxnumwidth=\skip56
-Class scrartcl Info: using compatibility default `runin=bysign'
-(scrartcl) for `\subsubsection on input line 4874.
-Class scrartcl Info: using compatibility default `afterindent=bysign'
-(scrartcl) for `\subsubsection on input line 4874.
-\scr@dte@paragraph@maxnumwidth=\skip57
-Class scrartcl Info: using compatibility default `runin=bysign'
-(scrartcl) for `\paragraph on input line 4885.
-Class scrartcl Info: using compatibility default `afterindent=bysign'
-(scrartcl) for `\paragraph on input line 4885.
-\scr@dte@subparagraph@maxnumwidth=\skip58
-Class scrartcl Info: using compatibility default `runin=bysign'
-(scrartcl) for `\subparagraph on input line 4895.
-Class scrartcl Info: using compatibility default `afterindent=bysign'
-(scrartcl) for `\subparagraph on input line 4895.
-\abovecaptionskip=\skip59
-\belowcaptionskip=\skip60
-\c@pti@nb@sid@b@x=\box51
-Package tocbasic Info: babel extension for `lof' omitted
-(tocbasic) because of missing \bbl@set@language on input line 6127.
-
-\scr@dte@figure@maxnumwidth=\skip61
-\c@figure=\count189
-Package tocbasic Info: babel extension for `lot' omitted
-(tocbasic) because of missing \bbl@set@language on input line 6139.
-
-\scr@dte@table@maxnumwidth=\skip62
-\c@table=\count190
-Class scrartcl Info: Redefining `\numberline' on input line 6303.
-\bibindent=\dimen138
-)
-(/texlive/2021/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
-File: l3backend-pdftex.def 2021-05-07 L3 backend support: PDF output (pdfTeX)
-\l__color_backend_stack_int=\count191
-\l__pdf_internal_box=\box52
-) (./a.aux)
-\openout1 = `a.aux'.
-
-LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 3.
-LaTeX Font Info: ... okay on input line 3.
-LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 3.
-LaTeX Font Info: ... okay on input line 3.
-LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 3.
-LaTeX Font Info: ... okay on input line 3.
-LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 3.
-LaTeX Font Info: ... okay on input line 3.
-LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 3.
-LaTeX Font Info: ... okay on input line 3.
-LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 3.
-LaTeX Font Info: ... okay on input line 3.
-LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 3.
-LaTeX Font Info: ... okay on input line 3.
-Package scrbase Info: activating english \contentsname on input line 3.
-Package scrbase Info: activating english \listfigurename on input line 3.
-Package scrbase Info: activating english \listtablename on input line 3.
-! Undefined control sequence.
-l.4 \lsdkfjlskdfj
-
-The control sequence at the end of the top line
-of your error message was never \def'ed. If you have
-misspelled it (e.g., `\hobx'), type `I' and the correct
-spelling (e.g., `I\hbox'). Otherwise just continue,
-and I'll forget about whatever was undefined.
-
-(./a.aux) )
-Here is how much of TeX's memory you used:
-3199 strings out of 478510
-74549 string characters out of 5853586
-510929 words of memory out of 5000000
-21227 multiletter control sequences out of 15000+600000
-403730 words of font info for 28 fonts, out of 8000000 for 9000
-1141 hyphenation exceptions out of 8191
-108i,1n,108p,10625b,270s stack positions out of 5000i,500n,10000p,200000b,80000s
-
-No pages of output.
-PDF statistics:
-0 PDF objects out of 1000 (max. 8388607)
-0 named destinations out of 1000 (max. 500000)
-1 words of extra memory for PDF output out of 10000 (max. 10000000) \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/block_comments.txt b/support/texlab/crates/parser/src/test_data/latex/block_comments.txt
deleted file mode 100644
index d4e63ab1c8..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/block_comments.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-Foo
-\iffalse
-Test1
-\fi
-Bar
-\iffalse
-\fii
-\fi
-Baz \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/caption/caption_default.txt b/support/texlab/crates/parser/src/test_data/latex/caption/caption_default.txt
deleted file mode 100644
index 9084f143bf..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/caption/caption_default.txt
+++ /dev/null
@@ -1 +0,0 @@
-\caption[qux]{Foo \Bar Baz} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/caption/caption_default_error.txt b/support/texlab/crates/parser/src/test_data/latex/caption/caption_default_error.txt
deleted file mode 100644
index 62e5962816..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/caption/caption_default_error.txt
+++ /dev/null
@@ -1 +0,0 @@
-\caption[qux]{Foo \Bar Baz \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/caption/caption_figure.txt b/support/texlab/crates/parser/src/test_data/latex/caption/caption_figure.txt
deleted file mode 100644
index 8a1d3067d8..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/caption/caption_figure.txt
+++ /dev/null
@@ -1 +0,0 @@
-\begin{figure}\caption{Foo}\end{figure} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/caption/caption_minimal.txt b/support/texlab/crates/parser/src/test_data/latex/caption/caption_minimal.txt
deleted file mode 100644
index 07af0af8ca..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/caption/caption_minimal.txt
+++ /dev/null
@@ -1 +0,0 @@
-\caption{Foo \Bar Baz} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/caption/caption_minimal_error.txt b/support/texlab/crates/parser/src/test_data/latex/caption/caption_minimal_error.txt
deleted file mode 100644
index 747db731c1..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/caption/caption_minimal_error.txt
+++ /dev/null
@@ -1 +0,0 @@
-\caption{Foo \Bar Baz \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/citation/citation_empty.txt b/support/texlab/crates/parser/src/test_data/latex/citation/citation_empty.txt
deleted file mode 100644
index 06704b89a4..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/citation/citation_empty.txt
+++ /dev/null
@@ -1 +0,0 @@
-\cite{} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/citation/citation_missing_brace.txt b/support/texlab/crates/parser/src/test_data/latex/citation/citation_missing_brace.txt
deleted file mode 100644
index 1f8e4c9310..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/citation/citation_missing_brace.txt
+++ /dev/null
@@ -1 +0,0 @@
-\cite{foo \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/citation/citation_multiple_keys.txt b/support/texlab/crates/parser/src/test_data/latex/citation/citation_multiple_keys.txt
deleted file mode 100644
index be5da02c62..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/citation/citation_multiple_keys.txt
+++ /dev/null
@@ -1 +0,0 @@
-\cite{foo, bar} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/citation/citation_prenote.txt b/support/texlab/crates/parser/src/test_data/latex/citation/citation_prenote.txt
deleted file mode 100644
index 5ae28c28ec..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/citation/citation_prenote.txt
+++ /dev/null
@@ -1 +0,0 @@
-\cite[foo]{bar} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/citation/citation_prenote_postnote.txt b/support/texlab/crates/parser/src/test_data/latex/citation/citation_prenote_postnote.txt
deleted file mode 100644
index 23103b2476..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/citation/citation_prenote_postnote.txt
+++ /dev/null
@@ -1 +0,0 @@
-\cite[foo][bar]{baz} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/citation/citation_redundant_comma.txt b/support/texlab/crates/parser/src/test_data/latex/citation/citation_redundant_comma.txt
deleted file mode 100644
index 68e3c2d36e..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/citation/citation_redundant_comma.txt
+++ /dev/null
@@ -1 +0,0 @@
-\cite{,foo,} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/citation/citation_simple.txt b/support/texlab/crates/parser/src/test_data/latex/citation/citation_simple.txt
deleted file mode 100644
index cd5809ef25..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/citation/citation_simple.txt
+++ /dev/null
@@ -1 +0,0 @@
-\cite{foo} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/citation/citation_star.txt b/support/texlab/crates/parser/src/test_data/latex/citation/citation_star.txt
deleted file mode 100644
index d1a2677021..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/citation/citation_star.txt
+++ /dev/null
@@ -1 +0,0 @@
-\nocite{*} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/color/color_definition_simple.txt b/support/texlab/crates/parser/src/test_data/latex/color/color_definition_simple.txt
deleted file mode 100644
index e8b58c8162..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/color/color_definition_simple.txt
+++ /dev/null
@@ -1 +0,0 @@
-\definecolor{foo}{rgb}{255,168,0} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/color/color_reference_simple.txt b/support/texlab/crates/parser/src/test_data/latex/color/color_reference_simple.txt
deleted file mode 100644
index 4fea2b24ec..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/color/color_reference_simple.txt
+++ /dev/null
@@ -1 +0,0 @@
-\color{black} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/color/color_set_definition_error1.txt b/support/texlab/crates/parser/src/test_data/latex/color/color_set_definition_error1.txt
deleted file mode 100644
index f377ffcf2f..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/color/color_set_definition_error1.txt
+++ /dev/null
@@ -1 +0,0 @@
-\definecolorset[ty]{rgb,HTML}{foo}{bar} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/color/color_set_definition_error2.txt b/support/texlab/crates/parser/src/test_data/latex/color/color_set_definition_error2.txt
deleted file mode 100644
index 0b5fa35868..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/color/color_set_definition_error2.txt
+++ /dev/null
@@ -1 +0,0 @@
-\definecolorset{rgb,HTML}{foo} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/color/color_set_definition_error3.txt b/support/texlab/crates/parser/src/test_data/latex/color/color_set_definition_error3.txt
deleted file mode 100644
index fb695b4530..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/color/color_set_definition_error3.txt
+++ /dev/null
@@ -1 +0,0 @@
-\definecolorset{rgb,HTML} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/color/color_set_definition_error4.txt b/support/texlab/crates/parser/src/test_data/latex/color/color_set_definition_error4.txt
deleted file mode 100644
index 7c494133bf..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/color/color_set_definition_error4.txt
+++ /dev/null
@@ -1 +0,0 @@
-\definecolorset \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/color/color_set_definition_simple.txt b/support/texlab/crates/parser/src/test_data/latex/color/color_set_definition_simple.txt
deleted file mode 100644
index c812e61041..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/color/color_set_definition_simple.txt
+++ /dev/null
@@ -1 +0,0 @@
-\definecolorset[ty]{rgb,HTML}{foo}{bar}{baz} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_no_argc.txt b/support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_no_argc.txt
deleted file mode 100644
index ef63ef62cb..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_no_argc.txt
+++ /dev/null
@@ -1 +0,0 @@
-\newcommand{\foo}{foo} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_no_impl.txt b/support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_no_impl.txt
deleted file mode 100644
index 5ffc7e97c2..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_no_impl.txt
+++ /dev/null
@@ -1 +0,0 @@
-\newcommand{\foo} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_no_impl_error.txt b/support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_no_impl_error.txt
deleted file mode 100644
index 9323f5a313..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_no_impl_error.txt
+++ /dev/null
@@ -1 +0,0 @@
-\newcommand{\foo \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_optional.txt b/support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_optional.txt
deleted file mode 100644
index c3fb7225f3..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_optional.txt
+++ /dev/null
@@ -1 +0,0 @@
-\newcommand{\foo}[1][def]{#1} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_simple.txt b/support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_simple.txt
deleted file mode 100644
index ffce86f21c..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_simple.txt
+++ /dev/null
@@ -1 +0,0 @@
-\newcommand[1]{\id}{#1} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_with_begin.txt b/support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_with_begin.txt
deleted file mode 100644
index e7ce7984cb..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_with_begin.txt
+++ /dev/null
@@ -1 +0,0 @@
-\newcommand{\CVSubHeadingListStart}{\begin{itemize}[leftmargin=0.5cm, label={}]} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/command_definition/math_operator_no_impl.txt b/support/texlab/crates/parser/src/test_data/latex/command_definition/math_operator_no_impl.txt
deleted file mode 100644
index 685be22ce6..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/command_definition/math_operator_no_impl.txt
+++ /dev/null
@@ -1 +0,0 @@
-\DeclareMathOperator{\foo} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/command_definition/math_operator_simple.txt b/support/texlab/crates/parser/src/test_data/latex/command_definition/math_operator_simple.txt
deleted file mode 100644
index ffbf671f74..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/command_definition/math_operator_simple.txt
+++ /dev/null
@@ -1 +0,0 @@
-\DeclareMathOperator{\foo}{foo} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/environment/environment_asymptote.txt b/support/texlab/crates/parser/src/test_data/latex/environment/environment_asymptote.txt
deleted file mode 100644
index 76646075ea..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/environment/environment_asymptote.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-\begin{asy}
- printf("Hello World\n");
-\end{asy} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/environment/environment_definition.txt b/support/texlab/crates/parser/src/test_data/latex/environment/environment_definition.txt
deleted file mode 100644
index d3a5291dca..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/environment/environment_definition.txt
+++ /dev/null
@@ -1 +0,0 @@
-\newenvironment{bar}[1]{\begin{foo}}{\end{foo}} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/environment/environment_definition_optional_arg.txt b/support/texlab/crates/parser/src/test_data/latex/environment/environment_definition_optional_arg.txt
deleted file mode 100644
index bead3228a4..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/environment/environment_definition_optional_arg.txt
+++ /dev/null
@@ -1 +0,0 @@
-\newenvironment{foo}[1][default]{begin}{end} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/environment/environment_nested.txt b/support/texlab/crates/parser/src/test_data/latex/environment/environment_nested.txt
deleted file mode 100644
index 8d84019ac7..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/environment/environment_nested.txt
+++ /dev/null
@@ -1 +0,0 @@
-\begin{foo} \begin{qux} \end{baz} \end{bar} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/environment/environment_nested_missing_braces.txt b/support/texlab/crates/parser/src/test_data/latex/environment/environment_nested_missing_braces.txt
deleted file mode 100644
index 35ce901a83..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/environment/environment_nested_missing_braces.txt
+++ /dev/null
@@ -1 +0,0 @@
-\begin{foo \begin{qux Hello World \end{baz} \end{bar \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/environment/environment_simple.txt b/support/texlab/crates/parser/src/test_data/latex/environment/environment_simple.txt
deleted file mode 100644
index 309b559957..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/environment/environment_simple.txt
+++ /dev/null
@@ -1 +0,0 @@
-\begin{foo} Hello World \end{bar} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/equation.txt b/support/texlab/crates/parser/src/test_data/latex/equation.txt
deleted file mode 100644
index 7f85196961..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/equation.txt
+++ /dev/null
@@ -1 +0,0 @@
-\[ foo bar \] \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/equation_missing_begin.txt b/support/texlab/crates/parser/src/test_data/latex/equation_missing_begin.txt
deleted file mode 100644
index 9e5707b196..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/equation_missing_begin.txt
+++ /dev/null
@@ -1 +0,0 @@
-\begin{a} foo bar \] \end{b} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/generic_command_args.txt b/support/texlab/crates/parser/src/test_data/latex/generic_command_args.txt
deleted file mode 100644
index 2d62314c5c..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/generic_command_args.txt
+++ /dev/null
@@ -1 +0,0 @@
-\foo{bar}[qux] \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/generic_command_empty.txt b/support/texlab/crates/parser/src/test_data/latex/generic_command_empty.txt
deleted file mode 100644
index eeb4a48255..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/generic_command_empty.txt
+++ /dev/null
@@ -1 +0,0 @@
-\foo \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/generic_command_escape.txt b/support/texlab/crates/parser/src/test_data/latex/generic_command_escape.txt
deleted file mode 100644
index 133d674d1e..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/generic_command_escape.txt
+++ /dev/null
@@ -1 +0,0 @@
-\# \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/glossary/acronym_declaration.txt b/support/texlab/crates/parser/src/test_data/latex/glossary/acronym_declaration.txt
deleted file mode 100644
index abf12b6cae..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/glossary/acronym_declaration.txt
+++ /dev/null
@@ -1 +0,0 @@
-\DeclareAcronym{eg}{short = e.g,long = for example,tag = abbrev} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/glossary/acronym_definition_options.txt b/support/texlab/crates/parser/src/test_data/latex/glossary/acronym_definition_options.txt
deleted file mode 100644
index 47a69067ca..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/glossary/acronym_definition_options.txt
+++ /dev/null
@@ -1 +0,0 @@
-\newacronym[longplural={Frames per Second}]{fpsLabel}{FPS}{Frame per Second} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/glossary/acronym_definition_simple.txt b/support/texlab/crates/parser/src/test_data/latex/glossary/acronym_definition_simple.txt
deleted file mode 100644
index 4fbf285927..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/glossary/acronym_definition_simple.txt
+++ /dev/null
@@ -1 +0,0 @@
-\newacronym{fpsLabel}{FPS}{Frame per Second} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/glossary/acronym_package.txt b/support/texlab/crates/parser/src/test_data/latex/glossary/acronym_package.txt
deleted file mode 100644
index 86e60c4584..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/glossary/acronym_package.txt
+++ /dev/null
@@ -1 +0,0 @@
-\acro{fps}[FPS]{Frames per Second}
diff --git a/support/texlab/crates/parser/src/test_data/latex/glossary/acronym_reference_options.txt b/support/texlab/crates/parser/src/test_data/latex/glossary/acronym_reference_options.txt
deleted file mode 100644
index 43fd03f12b..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/glossary/acronym_reference_options.txt
+++ /dev/null
@@ -1 +0,0 @@
-\acrshort[foo=bar,baz]{fpsLabel} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/glossary/acronym_reference_simple.txt b/support/texlab/crates/parser/src/test_data/latex/glossary/acronym_reference_simple.txt
deleted file mode 100644
index d9fb5b9a25..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/glossary/acronym_reference_simple.txt
+++ /dev/null
@@ -1 +0,0 @@
-\acrshort{fpsLabel} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/glossary/glossary_entry_definition_simple.txt b/support/texlab/crates/parser/src/test_data/latex/glossary/glossary_entry_definition_simple.txt
deleted file mode 100644
index fb1e12899a..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/glossary/glossary_entry_definition_simple.txt
+++ /dev/null
@@ -1 +0,0 @@
-\newglossaryentry{foo}{bar = baz, qux,} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/glossary/glossary_entry_reference_options.txt b/support/texlab/crates/parser/src/test_data/latex/glossary/glossary_entry_reference_options.txt
deleted file mode 100644
index fbae075e1d..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/glossary/glossary_entry_reference_options.txt
+++ /dev/null
@@ -1 +0,0 @@
-\gls[foo = bar, qux]{baz} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/glossary/glossary_entry_reference_simple.txt b/support/texlab/crates/parser/src/test_data/latex/glossary/glossary_entry_reference_simple.txt
deleted file mode 100644
index a603355f0f..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/glossary/glossary_entry_reference_simple.txt
+++ /dev/null
@@ -1 +0,0 @@
-\gls{foo} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/graphics_path.txt b/support/texlab/crates/parser/src/test_data/latex/graphics_path.txt
deleted file mode 100644
index 0e9f431c36..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/graphics_path.txt
+++ /dev/null
@@ -1 +0,0 @@
-\graphicspath{{../figures/}} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/graphics_path_command.txt b/support/texlab/crates/parser/src/test_data/latex/graphics_path_command.txt
deleted file mode 100644
index 729ee51690..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/graphics_path_command.txt
+++ /dev/null
@@ -1 +0,0 @@
-\graphicspath{{\subfix{./img/}}} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/graphics_path_options.txt b/support/texlab/crates/parser/src/test_data/latex/graphics_path_options.txt
deleted file mode 100644
index ae8aa84d86..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/graphics_path_options.txt
+++ /dev/null
@@ -1 +0,0 @@
-\graphicspath[foo]{{../figures/}} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/group/curly_group_missing_end.txt b/support/texlab/crates/parser/src/test_data/latex/group/curly_group_missing_end.txt
deleted file mode 100644
index 6c7b76c0f8..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/group/curly_group_missing_end.txt
+++ /dev/null
@@ -1 +0,0 @@
-{hello world \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/group/curly_group_simple.txt b/support/texlab/crates/parser/src/test_data/latex/group/curly_group_simple.txt
deleted file mode 100644
index 5084aae70a..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/group/curly_group_simple.txt
+++ /dev/null
@@ -1 +0,0 @@
-{hello world} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/group/equation_missing_end.txt b/support/texlab/crates/parser/src/test_data/latex/group/equation_missing_end.txt
deleted file mode 100644
index fcb715926a..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/group/equation_missing_end.txt
+++ /dev/null
@@ -1 +0,0 @@
-\begin{a} \[ foo bar \end{b} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/group/escaped_brackets.txt b/support/texlab/crates/parser/src/test_data/latex/group/escaped_brackets.txt
deleted file mode 100644
index 144a5fdd6d..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/group/escaped_brackets.txt
+++ /dev/null
@@ -1 +0,0 @@
-{[}{]} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/group/unmatched_braces.txt b/support/texlab/crates/parser/src/test_data/latex/group/unmatched_braces.txt
deleted file mode 100644
index 8f606b7dbe..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/group/unmatched_braces.txt
+++ /dev/null
@@ -1 +0,0 @@
-}{ \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/group/unmatched_brackets.txt b/support/texlab/crates/parser/src/test_data/latex/group/unmatched_brackets.txt
deleted file mode 100644
index 94ea4d5c96..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/group/unmatched_brackets.txt
+++ /dev/null
@@ -1 +0,0 @@
-][ \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/group/unmatched_brackets_with_group.txt b/support/texlab/crates/parser/src/test_data/latex/group/unmatched_brackets_with_group.txt
deleted file mode 100644
index ebf6229429..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/group/unmatched_brackets_with_group.txt
+++ /dev/null
@@ -1 +0,0 @@
-{][} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/hello_world.txt b/support/texlab/crates/parser/src/test_data/latex/hello_world.txt
deleted file mode 100644
index c57eff55eb..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/hello_world.txt
+++ /dev/null
@@ -1 +0,0 @@
-Hello World! \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/include/biblatex_include_options.txt b/support/texlab/crates/parser/src/test_data/latex/include/biblatex_include_options.txt
deleted file mode 100644
index 216e7ea165..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/include/biblatex_include_options.txt
+++ /dev/null
@@ -1 +0,0 @@
-\addbibresource[foo=bar, baz]{foo/bar.bib} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/include/biblatex_include_simple.txt b/support/texlab/crates/parser/src/test_data/latex/include/biblatex_include_simple.txt
deleted file mode 100644
index fe10ce257d..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/include/biblatex_include_simple.txt
+++ /dev/null
@@ -1 +0,0 @@
-\addbibresource{foo/bar.bib} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/include/bibtex_include_simple.txt b/support/texlab/crates/parser/src/test_data/latex/include/bibtex_include_simple.txt
deleted file mode 100644
index 955353f690..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/include/bibtex_include_simple.txt
+++ /dev/null
@@ -1 +0,0 @@
-\bibliography{foo/bar} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/include/class_include_empty.txt b/support/texlab/crates/parser/src/test_data/latex/include/class_include_empty.txt
deleted file mode 100644
index 144b418175..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/include/class_include_empty.txt
+++ /dev/null
@@ -1 +0,0 @@
-\documentclass{} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/include/class_include_options.txt b/support/texlab/crates/parser/src/test_data/latex/include/class_include_options.txt
deleted file mode 100644
index 32dc4279d7..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/include/class_include_options.txt
+++ /dev/null
@@ -1 +0,0 @@
-\documentclass[foo = bar, baz, qux]{article} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/include/class_include_simple.txt b/support/texlab/crates/parser/src/test_data/latex/include/class_include_simple.txt
deleted file mode 100644
index 15f3d6ea0a..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/include/class_include_simple.txt
+++ /dev/null
@@ -1 +0,0 @@
-\documentclass{article} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/include/graphics_include_command.txt b/support/texlab/crates/parser/src/test_data/latex/include/graphics_include_command.txt
deleted file mode 100644
index 14a4a96216..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/include/graphics_include_command.txt
+++ /dev/null
@@ -1 +0,0 @@
-\includegraphics[width=0.5\textwidth]{\foo.\bar.pdf} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/include/graphics_include_complicated_options.txt b/support/texlab/crates/parser/src/test_data/latex/include/graphics_include_complicated_options.txt
deleted file mode 100644
index d6b6910c14..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/include/graphics_include_complicated_options.txt
+++ /dev/null
@@ -1 +0,0 @@
-\includegraphics[width=0.5\textwidth]{} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/include/graphics_include_options.txt b/support/texlab/crates/parser/src/test_data/latex/include/graphics_include_options.txt
deleted file mode 100644
index 8d3c45f2a5..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/include/graphics_include_options.txt
+++ /dev/null
@@ -1 +0,0 @@
-\includegraphics[scale=.5]{foo/bar.pdf} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/include/graphics_include_simple.txt b/support/texlab/crates/parser/src/test_data/latex/include/graphics_include_simple.txt
deleted file mode 100644
index 629cf3e8a9..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/include/graphics_include_simple.txt
+++ /dev/null
@@ -1 +0,0 @@
-\includegraphics{foo/bar.pdf} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/include/import_incomplete.txt b/support/texlab/crates/parser/src/test_data/latex/include/import_incomplete.txt
deleted file mode 100644
index 3d6bc5f043..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/include/import_incomplete.txt
+++ /dev/null
@@ -1 +0,0 @@
-\import{foo \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/include/import_simple.txt b/support/texlab/crates/parser/src/test_data/latex/include/import_simple.txt
deleted file mode 100644
index f38059d6c1..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/include/import_simple.txt
+++ /dev/null
@@ -1 +0,0 @@
-\import{foo}{bar} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/include/inkscape_include_options.txt b/support/texlab/crates/parser/src/test_data/latex/include/inkscape_include_options.txt
deleted file mode 100644
index e6dd431c7c..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/include/inkscape_include_options.txt
+++ /dev/null
@@ -1 +0,0 @@
-\includesvg[scale=.5]{foo/bar} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/include/inkscape_include_simple.txt b/support/texlab/crates/parser/src/test_data/latex/include/inkscape_include_simple.txt
deleted file mode 100644
index 4e3a4ea9ba..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/include/inkscape_include_simple.txt
+++ /dev/null
@@ -1 +0,0 @@
-\includesvg{foo/bar} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/include/latex_include_equality_sign.txt b/support/texlab/crates/parser/src/test_data/latex/include/latex_include_equality_sign.txt
deleted file mode 100644
index 5a763b4e29..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/include/latex_include_equality_sign.txt
+++ /dev/null
@@ -1 +0,0 @@
-\include{foo=bar} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/include/latex_include_simple.txt b/support/texlab/crates/parser/src/test_data/latex/include/latex_include_simple.txt
deleted file mode 100644
index c0d3d390df..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/include/latex_include_simple.txt
+++ /dev/null
@@ -1 +0,0 @@
-\include{foo/bar} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/include/latex_input_path_brackets.txt b/support/texlab/crates/parser/src/test_data/latex/include/latex_input_path_brackets.txt
deleted file mode 100644
index 6585f50d52..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/include/latex_input_path_brackets.txt
+++ /dev/null
@@ -1 +0,0 @@
-\input{foo[bar].tex} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/include/package_include_empty.txt b/support/texlab/crates/parser/src/test_data/latex/include/package_include_empty.txt
deleted file mode 100644
index 09e02cc1cc..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/include/package_include_empty.txt
+++ /dev/null
@@ -1 +0,0 @@
-\usepackage{} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/include/package_include_multiple.txt b/support/texlab/crates/parser/src/test_data/latex/include/package_include_multiple.txt
deleted file mode 100644
index c1080aaf66..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/include/package_include_multiple.txt
+++ /dev/null
@@ -1 +0,0 @@
-\usepackage{amsmath, lipsum} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/include/package_include_options.txt b/support/texlab/crates/parser/src/test_data/latex/include/package_include_options.txt
deleted file mode 100644
index 83a50c12cf..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/include/package_include_options.txt
+++ /dev/null
@@ -1 +0,0 @@
-\usepackage[foo = bar, baz, qux]{amsmath} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/include/package_include_simple.txt b/support/texlab/crates/parser/src/test_data/latex/include/package_include_simple.txt
deleted file mode 100644
index 3cf1b4edc0..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/include/package_include_simple.txt
+++ /dev/null
@@ -1 +0,0 @@
-\usepackage{amsmath} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/include/pgf_library_import_simple.txt b/support/texlab/crates/parser/src/test_data/latex/include/pgf_library_import_simple.txt
deleted file mode 100644
index 25a2b24720..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/include/pgf_library_import_simple.txt
+++ /dev/null
@@ -1 +0,0 @@
-\usepgflibrary{foo} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/include/svg_include_options.txt b/support/texlab/crates/parser/src/test_data/latex/include/svg_include_options.txt
deleted file mode 100644
index 3eb90568ab..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/include/svg_include_options.txt
+++ /dev/null
@@ -1 +0,0 @@
-\includesvg[scale=.5]{foo/bar.svg} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/include/svg_include_simple.txt b/support/texlab/crates/parser/src/test_data/latex/include/svg_include_simple.txt
deleted file mode 100644
index 964a3adcd6..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/include/svg_include_simple.txt
+++ /dev/null
@@ -1 +0,0 @@
-\includesvg{foo/bar.svg} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/include/tikz_library_import_simple.txt b/support/texlab/crates/parser/src/test_data/latex/include/tikz_library_import_simple.txt
deleted file mode 100644
index ff616ebd11..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/include/tikz_library_import_simple.txt
+++ /dev/null
@@ -1 +0,0 @@
-\usetikzlibrary{foo} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/include/verbatim_include_simple.txt b/support/texlab/crates/parser/src/test_data/latex/include/verbatim_include_simple.txt
deleted file mode 100644
index a0b3fec843..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/include/verbatim_include_simple.txt
+++ /dev/null
@@ -1 +0,0 @@
-\verbatiminput{foo/bar.txt} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/inline.txt b/support/texlab/crates/parser/src/test_data/latex/inline.txt
deleted file mode 100644
index 81a429dc26..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/inline.txt
+++ /dev/null
@@ -1 +0,0 @@
-$x \in [0, \infty)$ \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/inline_double_dollar.txt b/support/texlab/crates/parser/src/test_data/latex/inline_double_dollar.txt
deleted file mode 100644
index c3a7fee9f6..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/inline_double_dollar.txt
+++ /dev/null
@@ -1 +0,0 @@
-$$x \in [0, \infty)$$ \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/issue_568.txt b/support/texlab/crates/parser/src/test_data/latex/issue_568.txt
deleted file mode 100644
index a01a16854d..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/issue_568.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-\input{|ipython scripts/test.ipynb}
-\label{fig:x=2} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/issue_745.txt b/support/texlab/crates/parser/src/test_data/latex/issue_745.txt
deleted file mode 100644
index 4cbebeb2d8..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/issue_745.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-\documentclass{article}
-\usepackage{tabularray}
-
-\ExplSyntaxOn
-\NewDocumentEnvironment{exptblr}{O{}m}
- {
- \use:x
- {
- \exp_not:N \begin{tblr}
- [\exp_not:n{#1}]
- {#2}
- }
- }
- {
- \end{tblr}
- }
-\ExplSyntaxOff
-
-\begin{document}
-
-\end{document} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/issue_789.txt b/support/texlab/crates/parser/src/test_data/latex/issue_789.txt
deleted file mode 100644
index 612c6de786..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/issue_789.txt
+++ /dev/null
@@ -1 +0,0 @@
-\graphicspath{test} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/issue_828.txt b/support/texlab/crates/parser/src/test_data/latex/issue_828.txt
deleted file mode 100644
index 76f973bdbd..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/issue_828.txt
+++ /dev/null
@@ -1 +0,0 @@
-\verb|<STATEMENT> if(<expr>){<body>else{<body>| \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/issue_853.txt b/support/texlab/crates/parser/src/test_data/latex/issue_853.txt
deleted file mode 100644
index 312889717c..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/issue_853.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-\documentclass{minimal}
-\begin{document}
-This is an asdf undefined command
-\iffalse
- \iffalse\fi
- \end{enumerate}
-\fi
-\end{document} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/issue_857.txt b/support/texlab/crates/parser/src/test_data/latex/issue_857.txt
deleted file mode 100644
index 0640263c84..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/issue_857.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-\newcommand\ö{}
-\newcommand{\öö}{}
-\newcommand\123{} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/issue_874.txt b/support/texlab/crates/parser/src/test_data/latex/issue_874.txt
deleted file mode 100644
index adb3e438a2..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/issue_874.txt
+++ /dev/null
@@ -1 +0,0 @@
-\includegraphics[scale=0.2]{7.4).jpg} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/issue_919.txt b/support/texlab/crates/parser/src/test_data/latex/issue_919.txt
deleted file mode 100644
index 40e1b16a03..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/issue_919.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-\documentclass{article}
-
-\usepackage{
- lipsum, % provides blindtext
- booktabs, % better rules for tables
- %xcolor % easily define colors with \definecolor{}{}{}
-}
-
-\begin{document}
- \lipsum
-\end{document}
diff --git a/support/texlab/crates/parser/src/test_data/latex/issue_931.txt b/support/texlab/crates/parser/src/test_data/latex/issue_931.txt
deleted file mode 100644
index 8d75cecfae..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/issue_931.txt
+++ /dev/null
@@ -1 +0,0 @@
-\bibliography{$HOME/Literature} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/label/label_definition_line_break.txt b/support/texlab/crates/parser/src/test_data/latex/label/label_definition_line_break.txt
deleted file mode 100644
index d567c6d25a..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/label/label_definition_line_break.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-\label{hello
-world} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/label/label_definition_simple.txt b/support/texlab/crates/parser/src/test_data/latex/label/label_definition_simple.txt
deleted file mode 100644
index 43ebaf1cec..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/label/label_definition_simple.txt
+++ /dev/null
@@ -1 +0,0 @@
-\label{foo} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/label/label_number.txt b/support/texlab/crates/parser/src/test_data/latex/label/label_number.txt
deleted file mode 100644
index 6e994af500..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/label/label_number.txt
+++ /dev/null
@@ -1 +0,0 @@
-\newlabel{foo}{{1.1}} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/label/label_reference_equation.txt b/support/texlab/crates/parser/src/test_data/latex/label/label_reference_equation.txt
deleted file mode 100644
index ab386645df..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/label/label_reference_equation.txt
+++ /dev/null
@@ -1 +0,0 @@
-\eqref{foo} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/label/label_reference_incomplete.txt b/support/texlab/crates/parser/src/test_data/latex/label/label_reference_incomplete.txt
deleted file mode 100644
index 1d0f79ec8e..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/label/label_reference_incomplete.txt
+++ /dev/null
@@ -1 +0,0 @@
-Equation \eqref{eq is a \emph{useful} identity. \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/label/label_reference_multiple.txt b/support/texlab/crates/parser/src/test_data/latex/label/label_reference_multiple.txt
deleted file mode 100644
index e8bb38ee9e..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/label/label_reference_multiple.txt
+++ /dev/null
@@ -1 +0,0 @@
-\ref{foo, bar} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/label/label_reference_range_error.txt b/support/texlab/crates/parser/src/test_data/latex/label/label_reference_range_error.txt
deleted file mode 100644
index 9213da0460..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/label/label_reference_range_error.txt
+++ /dev/null
@@ -1 +0,0 @@
-\crefrange{foo{bar} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/label/label_reference_range_incomplete.txt b/support/texlab/crates/parser/src/test_data/latex/label/label_reference_range_incomplete.txt
deleted file mode 100644
index 841133d73a..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/label/label_reference_range_incomplete.txt
+++ /dev/null
@@ -1 +0,0 @@
-\crefrange{foo} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/label/label_reference_range_simple.txt b/support/texlab/crates/parser/src/test_data/latex/label/label_reference_range_simple.txt
deleted file mode 100644
index a0e985ea88..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/label/label_reference_range_simple.txt
+++ /dev/null
@@ -1 +0,0 @@
-\crefrange{foo}{bar} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/label/label_reference_simple.txt b/support/texlab/crates/parser/src/test_data/latex/label/label_reference_simple.txt
deleted file mode 100644
index dde4f444f4..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/label/label_reference_simple.txt
+++ /dev/null
@@ -1 +0,0 @@
-\ref{foo} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/parameter.txt b/support/texlab/crates/parser/src/test_data/latex/parameter.txt
deleted file mode 100644
index d44ac7b947..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/parameter.txt
+++ /dev/null
@@ -1 +0,0 @@
-#1 \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/parameter_error.txt b/support/texlab/crates/parser/src/test_data/latex/parameter_error.txt
deleted file mode 100644
index 4287ca8617..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/parameter_error.txt
+++ /dev/null
@@ -1 +0,0 @@
-# \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/structure/paragraphs.txt b/support/texlab/crates/parser/src/test_data/latex/structure/paragraphs.txt
deleted file mode 100644
index a7e32353bb..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/structure/paragraphs.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-\section{Section 1}
-Section 1
-
-\paragraph{Paragraph 1}
-Paragraph 1
-
-\paragraph{Paragraph 2}
-Paragraph 2
-
-\section{Section 2}
-Section 2 \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/structure/structure_enum_item.txt b/support/texlab/crates/parser/src/test_data/latex/structure/structure_enum_item.txt
deleted file mode 100644
index 3288ec259b..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/structure/structure_enum_item.txt
+++ /dev/null
@@ -1 +0,0 @@
-\begin{enumerate} \item 1 \item[2] 2 \item 3 \end{enumerate} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/structure/structure_invalid_nesting.txt b/support/texlab/crates/parser/src/test_data/latex/structure/structure_invalid_nesting.txt
deleted file mode 100644
index 7203dd2d24..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/structure/structure_invalid_nesting.txt
+++ /dev/null
@@ -1 +0,0 @@
-\section{Foo} \chapter{Bar} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/structure/structure_nested.txt b/support/texlab/crates/parser/src/test_data/latex/structure/structure_nested.txt
deleted file mode 100644
index 082f10765b..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/structure/structure_nested.txt
+++ /dev/null
@@ -1 +0,0 @@
-\part{1}\chapter{2}\section{3}\subsection{4}\subsubsection{5}\paragraph{6}\subparagraph{7} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/structure/structure_siblings.txt b/support/texlab/crates/parser/src/test_data/latex/structure/structure_siblings.txt
deleted file mode 100644
index d8e347c429..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/structure/structure_siblings.txt
+++ /dev/null
@@ -1 +0,0 @@
-\section{Foo} Foo \section{Bar} Bar \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_full.txt b/support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_full.txt
deleted file mode 100644
index 286d111ad1..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_full.txt
+++ /dev/null
@@ -1 +0,0 @@
-\newtheorem{foo}[bar]{Foo}[baz] \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_name_with_counter.txt b/support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_name_with_counter.txt
deleted file mode 100644
index af1b6903a5..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_name_with_counter.txt
+++ /dev/null
@@ -1 +0,0 @@
-\newtheorem{foo}[bar] \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_name_with_description.txt b/support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_name_with_description.txt
deleted file mode 100644
index e5d6551666..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_name_with_description.txt
+++ /dev/null
@@ -1 +0,0 @@
-\newtheorem{foo}{Foo} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_name_with_description_and_counter.txt b/support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_name_with_description_and_counter.txt
deleted file mode 100644
index 89c37d9497..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_name_with_description_and_counter.txt
+++ /dev/null
@@ -1 +0,0 @@
-\newtheorem{foo}[bar]{Foo} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_only_name.txt b/support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_only_name.txt
deleted file mode 100644
index 62adb2c4b9..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_only_name.txt
+++ /dev/null
@@ -1 +0,0 @@
-\newtheorem{foo} \ No newline at end of file
diff --git a/support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_thmtools.txt b/support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_thmtools.txt
deleted file mode 100644
index 2662a5ca8c..0000000000
--- a/support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_thmtools.txt
+++ /dev/null
@@ -1 +0,0 @@
-\declaretheorem[style=foo, name=bar]{baz} \ No newline at end of file