diff --git a/editors/vscode/language-configuration.json b/editors/vscode/language-configuration.json index f4b3b77..fabe5ed 100644 --- a/editors/vscode/language-configuration.json +++ b/editors/vscode/language-configuration.json @@ -11,8 +11,8 @@ ], "folding": { "markers": { - "start": "^@(session|exercise|template)", - "end": "^@end" + "start": "^\\s*#", + "end": "^\\s*[^#\\s]" } } } diff --git a/editors/vscode/package.json b/editors/vscode/package.json index 38c4ea9..f89c779 100644 --- a/editors/vscode/package.json +++ b/editors/vscode/package.json @@ -60,7 +60,9 @@ { "scope": "constant.numeric.time.ox", "settings": { "foreground": "#DCDCAA" } }, { "scope": "constant.numeric.distance.ox", "settings": { "foreground": "#D4A5FF" } }, { "scope": "string.quoted.double.ox", "settings": { "foreground": "#E8B87A", "fontStyle": "italic" } }, - { "scope": "string.unquoted.ox", "settings": { "foreground": "#D4D4D4" } } + { "scope": "string.unquoted.ox", "settings": { "foreground": "#D4D4D4" } }, + { "scope": "keyword.control.include.ox", "settings": { "foreground": "#C586C0", "fontStyle": "bold" } }, + { "scope": "string.unquoted.include-path.ox", "settings": { "foreground": "#D4D4D4" } } ] } }, diff --git a/editors/vscode/syntaxes/ox.tmLanguage.json b/editors/vscode/syntaxes/ox.tmLanguage.json index 5db6c52..5912fd0 100644 --- a/editors/vscode/syntaxes/ox.tmLanguage.json +++ b/editors/vscode/syntaxes/ox.tmLanguage.json @@ -5,6 +5,8 @@ "patterns": [ { "include": "#comment" }, { "include": "#block-keyword" }, + { "include": "#include-directive" }, + { "include": "#query-entry" }, { "include": "#singleline-entry" }, { "include": "#note-entry" }, { "include": "#weigh-in-entry" }, @@ -21,6 +23,22 @@ "match": "^(@session|@exercise|@template|@end)\\b", "name": "keyword.control.block.ox" }, + "include-directive": { + "match": "^(@include)\\s+(\"[^\"]+\")", + "captures": { + "1": { "name": "keyword.control.include.ox" }, + "2": { "name": "string.quoted.double.ox" } + } + }, + "query-entry": { + "match": "^(\\d{4}-\\d{2}-\\d{2})\\s+(query)\\s+(\"[^\"]*\")\\s+(\"[^\"]*\")$", + "captures": { + "1": { "name": "constant.numeric.date.ox" }, + "2": { "name": "keyword.other.query.ox" }, + "3": { "name": "string.quoted.double.ox" }, + "4": { "name": "string.quoted.double.ox" } + } + }, "singleline-entry": { "match": "^(\\d{4}-\\d{2}-\\d{2})\\s+([*!])\\s+([^#@:\\s][^:]*):\\s*(.*)$", "captures": { diff --git a/editors/vscode/themes/ox-dark.json b/editors/vscode/themes/ox-dark.json index 2b2f8ff..9b868db 100644 --- a/editors/vscode/themes/ox-dark.json +++ b/editors/vscode/themes/ox-dark.json @@ -101,6 +101,22 @@ "settings": { "foreground": "#D4D4D4" } + }, + { + "name": "Include keyword", + "scope": "keyword.control.include.ox", + "settings": { + "foreground": "#C586C0", + "fontStyle": "bold" + } + }, + { + "name": "Query keyword", + "scope": "keyword.other.query.ox", + "settings": { + "foreground": "#C586C0", + "fontStyle": "bold" + } } ] } diff --git a/src/ox/cli.py b/src/ox/cli.py index 694158c..2166e5f 100644 --- a/src/ox/cli.py +++ b/src/ox/cli.py @@ -12,8 +12,8 @@ from prompt_toolkit import PromptSession from prompt_toolkit.completion import WordCompleter -from ox.parse import process_node -from ox.data import Note, StoredQuery, TrainingLog, TrainingSession, WeighIn +from ox.parse import process_include_directive, process_node +from ox.data import Diagnostic, Note, StoredQuery, TrainingLog, TrainingSession, WeighIn from ox.db import create_db from ox.lint import collect_diagnostics from ox.plugins import GENERATOR_PLUGINS, load_plugins @@ -24,18 +24,14 @@ DEFAULT_TABLE_BOX = box.SIMPLE -def parse_file(file_path: Path) -> TrainingLog: - """Parse a training log file and return TrainingLog object. - - Args: - file_path: Path to the training log file +def _parse_single_file( + file_path: Path, parser: Parser +) -> tuple[list, list, list, list, list, list[str]]: + """Parse a single .ox file without resolving includes. Returns: - TrainingLog object with parsed sessions + Tuple of (sessions, notes, queries, weigh_ins, diagnostics, include_paths) """ - language = Language(tree_sitter_ox.language()) - parser = Parser(language) - with open(file_path, "r") as f: data = bytes(f.read(), encoding="utf-8") @@ -46,7 +42,11 @@ def parse_file(file_path: Path) -> TrainingLog: log_notes = [] log_queries = [] log_weigh_ins = [] + include_paths = [] for child in root_node.children: + if child.type == "include_directive": + include_paths.append(process_include_directive(child)) + continue result = process_node(child) if isinstance(result, TrainingSession): entries.append(result) @@ -57,13 +57,88 @@ def parse_file(file_path: Path) -> TrainingLog: elif isinstance(result, WeighIn): log_weigh_ins.append(result) - diagnostics = collect_diagnostics(tree) + diagnostics = list(collect_diagnostics(tree)) + return entries, log_notes, log_queries, log_weigh_ins, diagnostics, include_paths + + +def _load_recursive( + file_path: Path, + parser: Parser, + visited: set[Path], +) -> tuple[list, list, list, list, list]: + """Recursively load a file and its includes with cycle detection. + + Returns: + Tuple of (sessions, notes, queries, weigh_ins, diagnostics) + """ + abs_path = file_path.resolve() + + if abs_path in visited: + diag = Diagnostic( + line=1, + col=0, + end_line=1, + end_col=0, + message=f"Circular include detected: {file_path}", + severity="warning", + ) + return [], [], [], [], [diag] + + visited.add(abs_path) + + if not abs_path.exists(): + diag = Diagnostic( + line=1, + col=0, + end_line=1, + end_col=0, + message=f"Included file not found: {file_path}", + severity="warning", + ) + return [], [], [], [], [diag] + + entries, notes, queries, weigh_ins, diagnostics, include_paths = _parse_single_file( + abs_path, parser + ) + + for inc_path in include_paths: + resolved = (abs_path.parent / inc_path).resolve() + inc_entries, inc_notes, inc_queries, inc_weigh_ins, inc_diagnostics = ( + _load_recursive(Path(resolved), parser, visited) + ) + entries.extend(inc_entries) + notes.extend(inc_notes) + queries.extend(inc_queries) + weigh_ins.extend(inc_weigh_ins) + diagnostics.extend(inc_diagnostics) + + return entries, notes, queries, weigh_ins, diagnostics + + +def parse_file(file_path: Path) -> TrainingLog: + """Parse a training log file and return TrainingLog object. + + Resolves @include directives recursively with cycle detection. + + Args: + file_path: Path to the training log file + + Returns: + TrainingLog object with parsed sessions + """ + language = Language(tree_sitter_ox.language()) + parser = Parser(language) + + entries, notes, queries, weigh_ins, diagnostics = _load_recursive( + file_path, parser, visited=set() + ) + return TrainingLog( tuple(entries), - tuple(log_notes), - diagnostics, - tuple(log_queries), - tuple(log_weigh_ins), + tuple(notes), + tuple(diagnostics), + tuple(queries), + tuple(weigh_ins), ) diff --git a/src/ox/lsp.py b/src/ox/lsp.py index 70d445f..745cd29 100644 --- a/src/ox/lsp.py +++ b/src/ox/lsp.py @@ -1,6 +1,7 @@ """Language Server Protocol implementation for ox.""" import re +from pathlib import Path from lsprotocol import types as lsp from pygls.lsp.server import LanguageServer @@ -34,6 +35,37 @@ def get_diagnostics(text: str) -> list[lsp.Diagnostic]: ] +def _validate_includes(tree, doc_uri: str) -> list[lsp.Diagnostic]: + """Check include_directive nodes for missing files.""" + diagnostics = [] + doc_path = Path(doc_uri.replace("file://", "")) + for node in tree.root_node.children: + if node.type == "include_directive": + path_node = node.child_by_field_name("path") + if path_node: + inc_path = path_node.text.decode("utf-8").strip('"') + resolved = (doc_path.parent / inc_path).resolve() + if not resolved.exists(): + diagnostics.append( + lsp.Diagnostic( + range=lsp.Range( + start=lsp.Position( + line=node.start_point[0], + character=path_node.start_point[1], + ), + end=lsp.Position( + line=node.end_point[0], + character=path_node.end_point[1], + ), + ), + message=f"Included file not found: {inc_path}", + severity=lsp.DiagnosticSeverity.Warning, + source="ox", + ) + ) + return diagnostics + + def publish_diagnostics(uri: str, diagnostics: list[lsp.Diagnostic]): """Publish diagnostics to the client.""" server.text_document_publish_diagnostics( @@ -41,11 +73,19 @@ def publish_diagnostics(uri: str, diagnostics: list[lsp.Diagnostic]): ) +def _get_all_diagnostics(text: str, uri: str) -> list[lsp.Diagnostic]: + """Get parse diagnostics and include validation diagnostics.""" + tree = _parser.parse(bytes(text, encoding="utf-8")) + diagnostics = get_diagnostics(text) + diagnostics.extend(_validate_includes(tree, uri)) + return diagnostics + + @server.feature(lsp.TEXT_DOCUMENT_DID_OPEN) def did_open(params: lsp.DidOpenTextDocumentParams): """Handle document open - publish initial diagnostics.""" text = params.text_document.text - diagnostics = get_diagnostics(text) + diagnostics = _get_all_diagnostics(text, params.text_document.uri) publish_diagnostics(params.text_document.uri, diagnostics) @@ -53,7 +93,7 @@ def did_open(params: lsp.DidOpenTextDocumentParams): def did_change(params: lsp.DidChangeTextDocumentParams): """Handle document change - update diagnostics.""" document = server.workspace.get_text_document(params.text_document.uri) - diagnostics = get_diagnostics(document.source) + diagnostics = _get_all_diagnostics(document.source, params.text_document.uri) publish_diagnostics(params.text_document.uri, diagnostics) @@ -61,7 +101,7 @@ def did_change(params: lsp.DidChangeTextDocumentParams): def did_save(params: lsp.DidSaveTextDocumentParams): """Handle document save - refresh diagnostics.""" document = server.workspace.get_text_document(params.text_document.uri) - diagnostics = get_diagnostics(document.source) + diagnostics = _get_all_diagnostics(document.source, params.text_document.uri) publish_diagnostics(params.text_document.uri, diagnostics) diff --git a/src/ox/parse.py b/src/ox/parse.py index 5d1d93a..0e00d97 100644 --- a/src/ox/parse.py +++ b/src/ox/parse.py @@ -239,6 +239,12 @@ def process_query_entry(node: Node) -> StoredQuery: return StoredQuery(name=name, sql=sql, date=date) +def process_include_directive(node: Node) -> str: + """Extract file path from an include_directive node.""" + raw = node.child_by_field_name("path").text.decode("utf-8") + return raw.strip('"') + + def process_node(node: Node) -> TrainingSession | Note | StoredQuery | None: """Process any node type and return appropriate data structure. diff --git a/tests/test_integration.py b/tests/test_integration.py index 641fef7..dfd847d 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -113,6 +113,84 @@ def test_parse_example_file(self): assert all(hasattr(s, "movements") for s in log.sessions) +class TestIncludeDirective: + """Test @include directive for splitting logs across files.""" + + def test_single_include_merges_sessions(self, tmp_path): + """Including another file merges its sessions into the result.""" + child = tmp_path / "child.ox" + child.write_text("2025-01-11 * bench-press: 135lb 5x5\n") + + main = tmp_path / "main.ox" + main.write_text('2025-01-10 * pullups: BW 5x10\n@include "child.ox"\n') + + log = parse_file(main) + assert len(log.sessions) == 2 + names = {s.movements[0].name for s in log.sessions} + assert names == {"pullups", "bench-press"} + + def test_nested_includes(self, tmp_path): + """Nested includes (a -> b -> c) all merge.""" + c = tmp_path / "c.ox" + c.write_text("2025-01-12 * squat: 185lb 3x5\n") + + b = tmp_path / "b.ox" + b.write_text('2025-01-11 * bench-press: 135lb 5x5\n@include "c.ox"\n') + + a = tmp_path / "a.ox" + a.write_text('2025-01-10 * pullups: BW 5x10\n@include "b.ox"\n') + + log = parse_file(a) + assert len(log.sessions) == 3 + + def test_cycle_detection(self, tmp_path): + """Circular includes emit diagnostic, no infinite loop.""" + a = tmp_path / "a.ox" + b = tmp_path / "b.ox" + a.write_text('2025-01-10 * pullups: BW 5x10\n@include "b.ox"\n') + b.write_text('2025-01-11 * bench-press: 135lb 5x5\n@include "a.ox"\n') + + log = parse_file(a) + # Both files' sessions should be present + assert len(log.sessions) == 2 + # Should have a circular include diagnostic + cycle_diags = [d for d in log.diagnostics if "Circular" in d.message] + assert len(cycle_diags) == 1 + + def test_self_include(self, tmp_path): + """Self-include detected and reported.""" + f = tmp_path / "self.ox" + f.write_text('2025-01-10 * pullups: BW 5x10\n@include "self.ox"\n') + + log = parse_file(f) + assert len(log.sessions) == 1 + cycle_diags = [d for d in log.diagnostics if "Circular" in d.message] + assert len(cycle_diags) == 1 + + def test_missing_include(self, tmp_path): + """Missing include file emits diagnostic, other entries still parse.""" + main = tmp_path / "main.ox" + main.write_text('2025-01-10 * pullups: BW 5x10\n@include "nonexistent.ox"\n') + + log = parse_file(main) + assert len(log.sessions) == 1 + missing_diags = [d for d in log.diagnostics if "not found" in d.message] + assert len(missing_diags) == 1 + + def test_relative_path_resolution(self, tmp_path): + """Include paths resolve relative to the including file's directory.""" + subdir = tmp_path / "sub" + subdir.mkdir() + child = subdir / "child.ox" + child.write_text("2025-01-11 * bench-press: 135lb 5x5\n") + + main = tmp_path / "main.ox" + main.write_text('@include "sub/child.ox"\n2025-01-10 * pullups: BW 5x10\n') + + log = parse_file(main) + assert len(log.sessions) == 2 + + class TestMixedBWWeightProgressive: """Test that mixed BW/weight progressive sequences parse without errors.""" diff --git a/tree-sitter-ox/grammar.js b/tree-sitter-ox/grammar.js index 0bcffaa..ad42985 100644 --- a/tree-sitter-ox/grammar.js +++ b/tree-sitter-ox/grammar.js @@ -13,7 +13,7 @@ module.exports = grammar({ extras: ($) => [/[ \t]/], // Only spaces and tabs, NOT newlines rules: { - source_file: ($) => repeat(choice($._entry, $.comment, "\n")), + source_file: ($) => repeat(choice($._entry, $.include_directive, $.comment, "\n")), _entry: ($) => choice( $.singleline_entry, @@ -25,6 +25,14 @@ module.exports = grammar({ $.weigh_in_entry, ), + include_directive: ($) => prec.right(seq( + "@include", + field("path", $.file_path), + optional("\n") + )), + + file_path: ($) => seq('"', /[^"\n]+/, '"'), + comment: ($) => /#[^\n]*/, // Single-line entry: date flag item: details diff --git a/tree-sitter-ox/src/grammar.json b/tree-sitter-ox/src/grammar.json index 3d3922d..666a587 100644 --- a/tree-sitter-ox/src/grammar.json +++ b/tree-sitter-ox/src/grammar.json @@ -11,6 +11,10 @@ "type": "SYMBOL", "name": "_entry" }, + { + "type": "SYMBOL", + "name": "include_directive" + }, { "type": "SYMBOL", "name": "comment" @@ -55,6 +59,56 @@ } ] }, + "include_directive": { + "type": "PREC_RIGHT", + "value": 0, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "@include" + }, + { + "type": "FIELD", + "name": "path", + "content": { + "type": "SYMBOL", + "name": "file_path" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "\n" + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + "file_path": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "\"" + }, + { + "type": "PATTERN", + "value": "[^\"\\n]+" + }, + { + "type": "STRING", + "value": "\"" + } + ] + }, "comment": { "type": "PATTERN", "value": "#[^\\n]*" diff --git a/tree-sitter-ox/src/node-types.json b/tree-sitter-ox/src/node-types.json index 6fa08b2..4cbba5a 100644 --- a/tree-sitter-ox/src/node-types.json +++ b/tree-sitter-ox/src/node-types.json @@ -81,6 +81,11 @@ ] } }, + { + "type": "file_path", + "named": true, + "fields": {} + }, { "type": "flag", "named": true, @@ -91,6 +96,22 @@ "named": true, "fields": {} }, + { + "type": "include_directive", + "named": true, + "fields": { + "path": { + "multiple": false, + "required": true, + "types": [ + { + "type": "file_path", + "named": true + } + ] + } + } + }, { "type": "item", "named": true, @@ -344,6 +365,10 @@ "type": "exercise_block", "named": true }, + { + "type": "include_directive", + "named": true + }, { "type": "note_entry", "named": true @@ -460,6 +485,10 @@ "type": "!", "named": false }, + { + "type": "\"", + "named": false + }, { "type": "*", "named": false @@ -476,6 +505,10 @@ "type": "@exercise", "named": false }, + { + "type": "@include", + "named": false + }, { "type": "@session", "named": false diff --git a/tree-sitter-ox/src/parser.c b/tree-sitter-ox/src/parser.c index 869d3e4..3b9d080 100644 --- a/tree-sitter-ox/src/parser.c +++ b/tree-sitter-ox/src/parser.c @@ -7,68 +7,76 @@ #endif #define LANGUAGE_VERSION 15 -#define STATE_COUNT 82 +#define STATE_COUNT 88 #define LARGE_STATE_COUNT 2 -#define SYMBOL_COUNT 45 +#define SYMBOL_COUNT 50 #define ALIAS_COUNT 0 -#define TOKEN_COUNT 23 +#define TOKEN_COUNT 26 #define EXTERNAL_TOKEN_COUNT 0 -#define FIELD_COUNT 16 +#define FIELD_COUNT 17 #define MAX_ALIAS_SEQUENCE_LENGTH 9 #define MAX_RESERVED_WORD_SET_SIZE 0 -#define PRODUCTION_ID_COUNT 22 +#define PRODUCTION_ID_COUNT 23 #define SUPERTYPE_COUNT 0 enum ts_symbol_identifiers { anon_sym_LF = 1, - sym_comment = 2, - anon_sym_COLON = 3, - anon_sym_note = 4, - anon_sym_W = 5, - anon_sym_query = 6, - anon_sym_ATsession = 7, - anon_sym_ATend = 8, - anon_sym_ATexercise = 9, - anon_sym_ATtemplate = 10, - anon_sym_note_COLON = 11, - sym_date = 12, - anon_sym_STAR = 13, - anon_sym_BANG = 14, - aux_sym_item_token1 = 15, - aux_sym_name_token1 = 16, - sym_weight = 17, - sym_rep_scheme = 18, - sym_duration = 19, - sym_time_of_day = 20, - sym_distance = 21, - sym_quoted_string = 22, - sym_source_file = 23, - sym__entry = 24, - sym_singleline_entry = 25, - sym_note_entry = 26, - sym_weigh_in_entry = 27, - sym_query_entry = 28, - sym_session_block = 29, - sym_exercise_block = 30, - sym_template_block = 31, - sym_item_line = 32, - sym_note_line = 33, - sym_metadata_line = 34, - sym_flag = 35, - sym_item = 36, - sym_identifier = 37, - sym_name = 38, - sym_text_until_newline = 39, - sym_details = 40, - aux_sym_source_file_repeat1 = 41, - aux_sym_session_block_repeat1 = 42, - aux_sym_exercise_block_repeat1 = 43, - aux_sym_details_repeat1 = 44, + anon_sym_ATinclude = 2, + anon_sym_DQUOTE = 3, + aux_sym_file_path_token1 = 4, + sym_comment = 5, + anon_sym_COLON = 6, + anon_sym_note = 7, + anon_sym_W = 8, + anon_sym_query = 9, + anon_sym_ATsession = 10, + anon_sym_ATend = 11, + anon_sym_ATexercise = 12, + anon_sym_ATtemplate = 13, + anon_sym_note_COLON = 14, + sym_date = 15, + anon_sym_STAR = 16, + anon_sym_BANG = 17, + aux_sym_item_token1 = 18, + aux_sym_name_token1 = 19, + sym_weight = 20, + sym_rep_scheme = 21, + sym_duration = 22, + sym_time_of_day = 23, + sym_distance = 24, + sym_quoted_string = 25, + sym_source_file = 26, + sym__entry = 27, + sym_include_directive = 28, + sym_file_path = 29, + sym_singleline_entry = 30, + sym_note_entry = 31, + sym_weigh_in_entry = 32, + sym_query_entry = 33, + sym_session_block = 34, + sym_exercise_block = 35, + sym_template_block = 36, + sym_item_line = 37, + sym_note_line = 38, + sym_metadata_line = 39, + sym_flag = 40, + sym_item = 41, + sym_identifier = 42, + sym_name = 43, + sym_text_until_newline = 44, + sym_details = 45, + aux_sym_source_file_repeat1 = 46, + aux_sym_session_block_repeat1 = 47, + aux_sym_exercise_block_repeat1 = 48, + aux_sym_details_repeat1 = 49, }; static const char * const ts_symbol_names[] = { [ts_builtin_sym_end] = "end", [anon_sym_LF] = "\n", + [anon_sym_ATinclude] = "@include", + [anon_sym_DQUOTE] = "\"", + [aux_sym_file_path_token1] = "file_path_token1", [sym_comment] = "comment", [anon_sym_COLON] = ":", [anon_sym_note] = "note", @@ -92,6 +100,8 @@ static const char * const ts_symbol_names[] = { [sym_quoted_string] = "quoted_string", [sym_source_file] = "source_file", [sym__entry] = "_entry", + [sym_include_directive] = "include_directive", + [sym_file_path] = "file_path", [sym_singleline_entry] = "singleline_entry", [sym_note_entry] = "note_entry", [sym_weigh_in_entry] = "weigh_in_entry", @@ -117,6 +127,9 @@ static const char * const ts_symbol_names[] = { static const TSSymbol ts_symbol_map[] = { [ts_builtin_sym_end] = ts_builtin_sym_end, [anon_sym_LF] = anon_sym_LF, + [anon_sym_ATinclude] = anon_sym_ATinclude, + [anon_sym_DQUOTE] = anon_sym_DQUOTE, + [aux_sym_file_path_token1] = aux_sym_file_path_token1, [sym_comment] = sym_comment, [anon_sym_COLON] = anon_sym_COLON, [anon_sym_note] = anon_sym_note, @@ -140,6 +153,8 @@ static const TSSymbol ts_symbol_map[] = { [sym_quoted_string] = sym_quoted_string, [sym_source_file] = sym_source_file, [sym__entry] = sym__entry, + [sym_include_directive] = sym_include_directive, + [sym_file_path] = sym_file_path, [sym_singleline_entry] = sym_singleline_entry, [sym_note_entry] = sym_note_entry, [sym_weigh_in_entry] = sym_weigh_in_entry, @@ -171,6 +186,18 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = false, }, + [anon_sym_ATinclude] = { + .visible = true, + .named = false, + }, + [anon_sym_DQUOTE] = { + .visible = true, + .named = false, + }, + [aux_sym_file_path_token1] = { + .visible = false, + .named = false, + }, [sym_comment] = { .visible = true, .named = true, @@ -263,6 +290,14 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = false, .named = true, }, + [sym_include_directive] = { + .visible = true, + .named = true, + }, + [sym_file_path] = { + .visible = true, + .named = true, + }, [sym_singleline_entry] = { .visible = true, .named = true, @@ -355,13 +390,14 @@ enum ts_field_identifiers { field_key = 7, field_name = 8, field_note = 9, - field_rep_scheme = 10, - field_scale = 11, - field_sql = 12, - field_text = 13, - field_time_of_day = 14, - field_value = 15, - field_weight = 16, + field_path = 10, + field_rep_scheme = 11, + field_scale = 12, + field_sql = 13, + field_text = 14, + field_time_of_day = 15, + field_value = 16, + field_weight = 17, }; static const char * const ts_field_names[] = { @@ -375,6 +411,7 @@ static const char * const ts_field_names[] = { [field_key] = "key", [field_name] = "name", [field_note] = "note", + [field_path] = "path", [field_rep_scheme] = "rep_scheme", [field_scale] = "scale", [field_sql] = "sql", @@ -385,85 +422,88 @@ static const char * const ts_field_names[] = { }; static const TSMapSlice ts_field_map_slices[PRODUCTION_ID_COUNT] = { - [1] = {.index = 0, .length = 2}, - [2] = {.index = 2, .length = 2}, - [3] = {.index = 4, .length = 1}, - [4] = {.index = 5, .length = 3}, - [5] = {.index = 8, .length = 3}, - [6] = {.index = 11, .length = 3}, - [7] = {.index = 14, .length = 3}, - [8] = {.index = 17, .length = 4}, - [9] = {.index = 21, .length = 1}, + [1] = {.index = 0, .length = 1}, + [2] = {.index = 1, .length = 2}, + [3] = {.index = 3, .length = 2}, + [4] = {.index = 5, .length = 1}, + [5] = {.index = 6, .length = 3}, + [6] = {.index = 9, .length = 3}, + [7] = {.index = 12, .length = 3}, + [8] = {.index = 15, .length = 3}, + [9] = {.index = 18, .length = 4}, [10] = {.index = 22, .length = 1}, [11] = {.index = 23, .length = 1}, [12] = {.index = 24, .length = 1}, [13] = {.index = 25, .length = 1}, - [14] = {.index = 26, .length = 4}, - [15] = {.index = 30, .length = 5}, - [16] = {.index = 35, .length = 1}, + [14] = {.index = 26, .length = 1}, + [15] = {.index = 27, .length = 4}, + [16] = {.index = 31, .length = 5}, [17] = {.index = 36, .length = 1}, - [18] = {.index = 37, .length = 10}, - [19] = {.index = 47, .length = 3}, - [20] = {.index = 50, .length = 2}, - [21] = {.index = 52, .length = 2}, + [18] = {.index = 37, .length = 1}, + [19] = {.index = 38, .length = 10}, + [20] = {.index = 48, .length = 3}, + [21] = {.index = 51, .length = 2}, + [22] = {.index = 53, .length = 2}, }; static const TSFieldMapEntry ts_field_map_entries[] = { [0] = + {field_path, 1}, + [1] = {field_date, 0}, {field_text, 2}, - [2] = + [3] = {field_date, 0}, {field_weight, 2}, - [4] = - {field_name, 1}, [5] = + {field_name, 1}, + [6] = {field_date, 0}, {field_time_of_day, 3}, {field_weight, 2}, - [8] = + [9] = {field_date, 0}, {field_scale, 3}, {field_weight, 2}, - [11] = + [12] = {field_date, 0}, {field_name, 2}, {field_sql, 3}, - [14] = + [15] = {field_date, 0}, {field_flag, 1}, {field_item, 2}, - [17] = + [18] = {field_date, 0}, {field_scale, 4}, {field_time_of_day, 3}, {field_weight, 2}, - [21] = - {field_weight, 0}, [22] = - {field_rep_scheme, 0}, + {field_weight, 0}, [23] = - {field_duration, 0}, + {field_rep_scheme, 0}, [24] = - {field_distance, 0}, + {field_duration, 0}, [25] = - {field_note, 0}, + {field_distance, 0}, [26] = + {field_note, 0}, + [27] = {field_date, 0}, {field_details, 4}, {field_flag, 1}, {field_item, 2}, - [30] = + [31] = {field_distance, 0, .inherited = true}, {field_duration, 0, .inherited = true}, {field_note, 0, .inherited = true}, {field_rep_scheme, 0, .inherited = true}, {field_weight, 0, .inherited = true}, - [35] = - {field_key, 0}, [36] = - {field_text, 1}, + {field_key, 0}, [37] = + {field_text, 1}, + [38] = {field_distance, 0, .inherited = true}, {field_distance, 1, .inherited = true}, {field_duration, 0, .inherited = true}, @@ -474,14 +514,14 @@ static const TSFieldMapEntry ts_field_map_entries[] = { {field_rep_scheme, 1, .inherited = true}, {field_weight, 0, .inherited = true}, {field_weight, 1, .inherited = true}, - [47] = + [48] = {field_date, 2}, {field_flag, 3}, {field_name, 4}, - [50] = + [51] = {field_key, 0}, {field_value, 2}, - [52] = + [53] = {field_details, 2}, {field_item, 0}, }; @@ -576,7 +616,13 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [78] = 78, [79] = 79, [80] = 80, - [81] = 73, + [81] = 81, + [82] = 82, + [83] = 83, + [84] = 84, + [85] = 85, + [86] = 86, + [87] = 81, }; static bool ts_lex(TSLexer *lexer, TSStateId state) { @@ -584,985 +630,1053 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { eof = lexer->eof(lexer); switch (state) { case 0: - if (eof) ADVANCE(174); + if (eof) ADVANCE(183); ADVANCE_MAP( - '\n', 175, - '!', 190, - '"', 3, - '#', 176, - '*', 189, - ':', 177, - '@', 48, - 'B', 21, - 'P', 20, - 'T', 170, - 'W', 180, - 'n', 108, - 'q', 149, + '\n', 184, + '!', 203, + '"', 186, + '#', 189, + '*', 202, + ':', 190, + '@', 49, + 'B', 20, + 'P', 19, + 'T', 178, + 'W', 193, + 'n', 113, + 'q', 154, ); if (lookahead == '\t' || lookahead == ' ') SKIP(0); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(8); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(7); END_STATE(); case 1: - if (lookahead == '\n') ADVANCE(175); + if (lookahead == '\n') ADVANCE(184); if (lookahead == '\t' || - lookahead == ' ') ADVANCE(199); - if (lookahead != 0) ADVANCE(200); + lookahead == ' ') ADVANCE(212); + if (lookahead != 0) ADVANCE(213); END_STATE(); case 2: - if (lookahead == '!') ADVANCE(190); - if (lookahead == '*') ADVANCE(189); - if (lookahead == 'W') ADVANCE(180); - if (lookahead == 'n') ADVANCE(120); - if (lookahead == 'q') ADVANCE(149); - if (lookahead == '\t' || - lookahead == ' ') SKIP(2); + if (lookahead == '"') ADVANCE(236); + if (lookahead != 0) ADVANCE(2); END_STATE(); case 3: - if (lookahead == '"') ADVANCE(223); - if (lookahead != 0) ADVANCE(3); - END_STATE(); - case 4: ADVANCE_MAP( - '-', 172, - '.', 160, - '/', 161, - 'c', 22, - 'f', 115, - 'g', 205, - 'i', 92, - 'k', 66, - 'l', 34, - 'm', 221, - 'n', 85, - 'o', 150, - 'p', 111, - 's', 141, - 't', 204, - 'x', 162, - 'y', 23, + '-', 180, + '.', 168, + '/', 169, + 'c', 21, + 'f', 120, + 'g', 218, + 'i', 97, + 'k', 69, + 'l', 33, + 'm', 234, + 'n', 89, + 'o', 159, + 'p', 116, + 's', 146, + 't', 217, + 'x', 170, + 'y', 22, ); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(9); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(8); + END_STATE(); + case 4: + if (lookahead == '-') ADVANCE(181); END_STATE(); case 5: - if (lookahead == '-') ADVANCE(173); + ADVANCE_MAP( + '.', 168, + '/', 169, + 'c', 21, + 'f', 120, + 'g', 218, + 'i', 97, + 'k', 69, + 'l', 33, + 'm', 234, + 'n', 89, + 'o', 159, + 'p', 116, + 's', 146, + 't', 217, + 'x', 170, + 'y', 22, + ); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(3); END_STATE(); case 6: ADVANCE_MAP( - '.', 160, - '/', 161, - 'c', 22, - 'f', 115, - 'g', 205, - 'i', 92, - 'k', 66, - 'l', 34, - 'm', 221, - 'n', 85, - 'o', 150, - 'p', 111, - 's', 141, - 't', 204, - 'x', 162, - 'y', 23, + '.', 168, + '/', 169, + 'c', 21, + 'f', 120, + 'g', 218, + 'i', 97, + 'k', 69, + 'l', 33, + 'm', 234, + 'n', 89, + 'o', 159, + 'p', 116, + 's', 146, + 't', 217, + 'x', 170, + 'y', 22, ); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(4); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(5); END_STATE(); case 7: ADVANCE_MAP( - '.', 160, - '/', 161, - 'c', 22, - 'f', 115, - 'g', 205, - 'i', 92, - 'k', 66, - 'l', 34, - 'm', 221, - 'n', 85, - 'o', 150, - 'p', 111, - 's', 141, - 't', 204, - 'x', 162, - 'y', 23, + '.', 168, + '/', 169, + 'c', 21, + 'f', 120, + 'g', 218, + 'i', 97, + 'k', 69, + 'l', 33, + 'm', 234, + 'n', 89, + 'o', 159, + 'p', 116, + 's', 146, + 't', 217, + 'x', 170, + 'y', 22, ); if (('0' <= lookahead && lookahead <= '9')) ADVANCE(6); END_STATE(); case 8: ADVANCE_MAP( - '.', 160, - '/', 161, - 'c', 22, - 'f', 115, - 'g', 205, - 'i', 92, - 'k', 66, - 'l', 34, - 'm', 221, - 'n', 85, - 'o', 150, - 'p', 111, - 's', 141, - 't', 204, - 'x', 162, - 'y', 23, + '.', 168, + '/', 169, + 'c', 21, + 'f', 120, + 'g', 218, + 'i', 97, + 'k', 69, + 'l', 33, + 'm', 234, + 'n', 89, + 'o', 159, + 'p', 116, + 's', 146, + 't', 217, + 'x', 170, + 'y', 22, ); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(7); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(8); END_STATE(); case 9: - ADVANCE_MAP( - '.', 160, - '/', 161, - 'c', 22, - 'f', 115, - 'g', 205, - 'i', 92, - 'k', 66, - 'l', 34, - 'm', 221, - 'n', 85, - 'o', 150, - 'p', 111, - 's', 141, - 't', 204, - 'x', 162, - 'y', 23, - ); + if (lookahead == '.') ADVANCE(171); + if (lookahead == 'H') ADVANCE(229); + if (lookahead == 'M') ADVANCE(230); + if (lookahead == 'S') ADVANCE(228); if (('0' <= lookahead && lookahead <= '9')) ADVANCE(9); END_STATE(); case 10: - if (lookahead == '.') ADVANCE(163); - if (lookahead == 'H') ADVANCE(216); - if (lookahead == 'M') ADVANCE(217); - if (lookahead == 'S') ADVANCE(215); + if (lookahead == '.') ADVANCE(171); + if (lookahead == 'S') ADVANCE(228); if (('0' <= lookahead && lookahead <= '9')) ADVANCE(10); END_STATE(); case 11: - if (lookahead == '.') ADVANCE(163); - if (lookahead == 'S') ADVANCE(215); + ADVANCE_MAP( + '.', 172, + 'c', 30, + 'g', 225, + 'k', 68, + 'l', 32, + 'o', 160, + 'p', 121, + 's', 152, + 't', 224, + ); if (('0' <= lookahead && lookahead <= '9')) ADVANCE(11); END_STATE(); case 12: ADVANCE_MAP( - '.', 164, + '.', 177, 'c', 31, - 'g', 212, - 'k', 65, - 'l', 33, - 'o', 154, - 'p', 116, - 's', 147, - 't', 211, + 'g', 221, + 'k', 70, + 'l', 34, + 'o', 161, + 'p', 123, + 's', 153, + 't', 220, ); if (('0' <= lookahead && lookahead <= '9')) ADVANCE(12); END_STATE(); case 13: - ADVANCE_MAP( - '.', 169, - 'c', 32, - 'g', 208, - 'k', 67, - 'l', 35, - 'o', 155, - 'p', 118, - 's', 148, - 't', 207, - ); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(13); + if (lookahead == ':') ADVANCE(179); END_STATE(); case 14: - if (lookahead == ':') ADVANCE(171); + if (lookahead == '@') ADVANCE(206); + if (lookahead == 'n') ADVANCE(209); + if (lookahead == '\t' || + lookahead == ' ') SKIP(14); + if (lookahead != 0 && + (lookahead < '\t' || '\r' < lookahead) && + lookahead != ':') ADVANCE(211); END_STATE(); case 15: - if (lookahead == '@') ADVANCE(193); - if (lookahead == 'n') ADVANCE(196); + if (lookahead == '@') ADVANCE(206); if (lookahead == '\t' || lookahead == ' ') SKIP(15); if (lookahead != 0 && (lookahead < '\t' || '\r' < lookahead) && - lookahead != ':') ADVANCE(198); + lookahead != ':') ADVANCE(211); END_STATE(); case 16: - if (lookahead == '@') ADVANCE(193); - if (lookahead == '\t' || - lookahead == ' ') SKIP(16); - if (lookahead != 0 && - (lookahead < '\t' || '\r' < lookahead) && - lookahead != ':') ADVANCE(198); + if (lookahead == 'B') ADVANCE(20); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(11); END_STATE(); case 17: - if (lookahead == 'B') ADVANCE(21); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(12); + if (lookahead == 'M') ADVANCE(230); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(17); END_STATE(); case 18: - if (lookahead == 'M') ADVANCE(217); + if (lookahead == 'S') ADVANCE(228); if (('0' <= lookahead && lookahead <= '9')) ADVANCE(18); END_STATE(); case 19: - if (lookahead == 'S') ADVANCE(215); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(19); + if (lookahead == 'T') ADVANCE(166); END_STATE(); case 20: - if (lookahead == 'T') ADVANCE(158); + if (lookahead == 'W') ADVANCE(222); END_STATE(); case 21: - if (lookahead == 'W') ADVANCE(209); + if (lookahead == 'a') ADVANCE(130); + if (lookahead == 'e') ADVANCE(102); + if (lookahead == 'm') ADVANCE(232); + if (lookahead == 't') ADVANCE(215); END_STATE(); case 22: - if (lookahead == 'a') ADVANCE(125); - if (lookahead == 'e') ADVANCE(97); - if (lookahead == 'm') ADVANCE(219); - if (lookahead == 't') ADVANCE(202); + if (lookahead == 'a') ADVANCE(131); + if (lookahead == 'd') ADVANCE(232); END_STATE(); case 23: - if (lookahead == 'a') ADVANCE(126); - if (lookahead == 'd') ADVANCE(219); + if (lookahead == 'a') ADVANCE(88); END_STATE(); case 24: - if (lookahead == 'a') ADVANCE(84); + if (lookahead == 'a') ADVANCE(87); END_STATE(); case 25: - if (lookahead == 'a') ADVANCE(83); + if (lookahead == 'a') ADVANCE(143); END_STATE(); case 26: - if (lookahead == 'a') ADVANCE(138); + if (lookahead == 'a') ADVANCE(91); END_STATE(); case 27: - if (lookahead == 'a') ADVANCE(87); + if (lookahead == 'a') ADVANCE(141); END_STATE(); case 28: - if (lookahead == 'a') ADVANCE(136); + if (lookahead == 'a') ADVANCE(145); END_STATE(); case 29: - if (lookahead == 'a') ADVANCE(140); + if (lookahead == 'a') ADVANCE(149); END_STATE(); case 30: - if (lookahead == 'a') ADVANCE(144); + if (lookahead == 'a') ADVANCE(134); + if (lookahead == 't') ADVANCE(222); END_STATE(); case 31: - if (lookahead == 'a') ADVANCE(129); - if (lookahead == 't') ADVANCE(209); + if (lookahead == 'a') ADVANCE(136); + if (lookahead == 't') ADVANCE(214); END_STATE(); case 32: - if (lookahead == 'a') ADVANCE(131); - if (lookahead == 't') ADVANCE(201); + if (lookahead == 'b') ADVANCE(222); END_STATE(); case 33: - if (lookahead == 'b') ADVANCE(209); + if (lookahead == 'b') ADVANCE(215); END_STATE(); case 34: - if (lookahead == 'b') ADVANCE(202); + if (lookahead == 'b') ADVANCE(214); END_STATE(); case 35: - if (lookahead == 'b') ADVANCE(201); + ADVANCE_MAP( + 'c', 21, + 'f', 120, + 'g', 218, + 'i', 97, + 'k', 69, + 'l', 33, + 'm', 234, + 'n', 89, + 'o', 159, + 'p', 116, + 's', 146, + 't', 217, + 'y', 22, + ); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(35); END_STATE(); case 36: ADVANCE_MAP( - 'c', 22, - 'f', 115, - 'g', 205, - 'i', 92, - 'k', 66, - 'l', 34, - 'm', 221, - 'n', 85, - 'o', 150, - 'p', 111, - 's', 141, - 't', 204, - 'y', 23, + 'c', 30, + 'g', 225, + 'k', 68, + 'l', 32, + 'o', 160, + 'p', 121, + 's', 152, + 't', 224, ); if (('0' <= lookahead && lookahead <= '9')) ADVANCE(36); END_STATE(); case 37: - ADVANCE_MAP( - 'c', 31, - 'g', 212, - 'k', 65, - 'l', 33, - 'o', 154, - 'p', 116, - 's', 147, - 't', 211, - ); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(37); + if (lookahead == 'c') ADVANCE(83); END_STATE(); case 38: ADVANCE_MAP( - 'c', 32, - 'g', 208, - 'k', 67, - 'l', 35, - 'o', 155, - 'p', 118, - 's', 148, - 't', 207, + 'c', 31, + 'g', 221, + 'k', 70, + 'l', 34, + 'o', 161, + 'p', 123, + 's', 153, + 't', 220, ); if (('0' <= lookahead && lookahead <= '9')) ADVANCE(38); END_STATE(); case 39: - if (lookahead == 'c') ADVANCE(74); + if (lookahead == 'c') ADVANCE(77); END_STATE(); case 40: - if (lookahead == 'c') ADVANCE(54); + if (lookahead == 'c') ADVANCE(55); END_STATE(); case 41: - if (lookahead == 'c') ADVANCE(49); + if (lookahead == 'c') ADVANCE(50); END_STATE(); case 42: - if (lookahead == 'c') ADVANCE(56); + if (lookahead == 'c') ADVANCE(57); END_STATE(); case 43: - if (lookahead == 'd') ADVANCE(209); + if (lookahead == 'd') ADVANCE(222); END_STATE(); case 44: - if (lookahead == 'd') ADVANCE(219); + if (lookahead == 'd') ADVANCE(232); END_STATE(); case 45: - if (lookahead == 'd') ADVANCE(202); + if (lookahead == 'd') ADVANCE(215); END_STATE(); case 46: - if (lookahead == 'd') ADVANCE(183); + if (lookahead == 'd') ADVANCE(196); END_STATE(); case 47: - if (lookahead == 'd') ADVANCE(201); + if (lookahead == 'd') ADVANCE(214); END_STATE(); case 48: - if (lookahead == 'e') ADVANCE(90); - if (lookahead == 's') ADVANCE(50); - if (lookahead == 't') ADVANCE(60); + if (lookahead == 'd') ADVANCE(58); END_STATE(); case 49: - if (lookahead == 'e') ADVANCE(209); + if (lookahead == 'e') ADVANCE(94); + if (lookahead == 'i') ADVANCE(95); + if (lookahead == 's') ADVANCE(51); + if (lookahead == 't') ADVANCE(63); END_STATE(); case 50: - if (lookahead == 'e') ADVANCE(133); + if (lookahead == 'e') ADVANCE(222); END_STATE(); case 51: - if (lookahead == 'e') ADVANCE(124); + if (lookahead == 'e') ADVANCE(138); END_STATE(); case 52: - if (lookahead == 'e') ADVANCE(219); + if (lookahead == 'e') ADVANCE(129); END_STATE(); case 53: - if (lookahead == 'e') ADVANCE(219); - if (lookahead == 'l') ADVANCE(73); + if (lookahead == 'e') ADVANCE(232); END_STATE(); case 54: - if (lookahead == 'e') ADVANCE(202); + if (lookahead == 'e') ADVANCE(232); + if (lookahead == 'l') ADVANCE(76); END_STATE(); case 55: - if (lookahead == 'e') ADVANCE(179); + if (lookahead == 'e') ADVANCE(215); END_STATE(); case 56: - if (lookahead == 'e') ADVANCE(201); + if (lookahead == 'e') ADVANCE(192); END_STATE(); case 57: - if (lookahead == 'e') ADVANCE(185); + if (lookahead == 'e') ADVANCE(214); END_STATE(); case 58: - if (lookahead == 'e') ADVANCE(186); + if (lookahead == 'e') ADVANCE(185); END_STATE(); case 59: - if (lookahead == 'e') ADVANCE(178); + if (lookahead == 'e') ADVANCE(198); END_STATE(); case 60: - if (lookahead == 'e') ADVANCE(86); + if (lookahead == 'e') ADVANCE(199); END_STATE(); case 61: - if (lookahead == 'e') ADVANCE(127); + if (lookahead == 'e') ADVANCE(162); + if (lookahead == 'i') ADVANCE(95); + if (lookahead == 's') ADVANCE(51); + if (lookahead == 't') ADVANCE(63); END_STATE(); case 62: - if (lookahead == 'e') ADVANCE(123); + if (lookahead == 'e') ADVANCE(191); END_STATE(); case 63: - if (lookahead == 'e') ADVANCE(123); - if (lookahead == 'r') ADVANCE(52); + if (lookahead == 'e') ADVANCE(90); END_STATE(); case 64: - if (lookahead == 'e') ADVANCE(146); + if (lookahead == 'e') ADVANCE(132); END_STATE(); case 65: - if (lookahead == 'g') ADVANCE(209); - if (lookahead == 'i') ADVANCE(81); + if (lookahead == 'e') ADVANCE(128); END_STATE(); case 66: - if (lookahead == 'g') ADVANCE(202); - if (lookahead == 'i') ADVANCE(80); - if (lookahead == 'm') ADVANCE(219); + if (lookahead == 'e') ADVANCE(128); + if (lookahead == 'r') ADVANCE(53); END_STATE(); case 67: - if (lookahead == 'g') ADVANCE(201); - if (lookahead == 'i') ADVANCE(82); + if (lookahead == 'e') ADVANCE(151); END_STATE(); case 68: - if (lookahead == 'g') ADVANCE(128); - if (lookahead == 'm') ADVANCE(64); + if (lookahead == 'g') ADVANCE(222); + if (lookahead == 'i') ADVANCE(85); END_STATE(); case 69: - if (lookahead == 'g') ADVANCE(130); + if (lookahead == 'g') ADVANCE(215); + if (lookahead == 'i') ADVANCE(84); + if (lookahead == 'm') ADVANCE(232); END_STATE(); case 70: - if (lookahead == 'g') ADVANCE(132); + if (lookahead == 'g') ADVANCE(214); + if (lookahead == 'i') ADVANCE(86); END_STATE(); case 71: - if (lookahead == 'h') ADVANCE(219); + if (lookahead == 'g') ADVANCE(133); + if (lookahead == 'm') ADVANCE(67); END_STATE(); case 72: - if (lookahead == 'i') ADVANCE(219); + if (lookahead == 'g') ADVANCE(135); END_STATE(); case 73: - if (lookahead == 'i') ADVANCE(88); + if (lookahead == 'g') ADVANCE(137); END_STATE(); case 74: - if (lookahead == 'i') ADVANCE(135); + if (lookahead == 'h') ADVANCE(232); END_STATE(); case 75: - if (lookahead == 'i') ADVANCE(91); - if (lookahead == 'm') ADVANCE(202); + if (lookahead == 'i') ADVANCE(232); END_STATE(); case 76: - if (lookahead == 'i') ADVANCE(89); - if (lookahead == 'm') ADVANCE(209); + if (lookahead == 'i') ADVANCE(92); END_STATE(); case 77: - if (lookahead == 'i') ADVANCE(94); - if (lookahead == 'm') ADVANCE(201); + if (lookahead == 'i') ADVANCE(140); END_STATE(); case 78: - if (lookahead == 'i') ADVANCE(114); + if (lookahead == 'i') ADVANCE(96); + if (lookahead == 'm') ADVANCE(215); END_STATE(); case 79: - if (lookahead == 'l') ADVANCE(30); + if (lookahead == 'i') ADVANCE(93); + if (lookahead == 'm') ADVANCE(222); END_STATE(); case 80: - if (lookahead == 'l') ADVANCE(109); + if (lookahead == 'i') ADVANCE(98); + if (lookahead == 'm') ADVANCE(214); END_STATE(); case 81: - if (lookahead == 'l') ADVANCE(110); + if (lookahead == 'i') ADVANCE(119); END_STATE(); case 82: - if (lookahead == 'l') ADVANCE(121); + if (lookahead == 'l') ADVANCE(29); END_STATE(); case 83: - if (lookahead == 'm') ADVANCE(209); + if (lookahead == 'l') ADVANCE(155); END_STATE(); case 84: - if (lookahead == 'm') ADVANCE(202); + if (lookahead == 'l') ADVANCE(114); END_STATE(); case 85: - if (lookahead == 'm') ADVANCE(72); + if (lookahead == 'l') ADVANCE(115); END_STATE(); case 86: - if (lookahead == 'm') ADVANCE(122); + if (lookahead == 'l') ADVANCE(126); END_STATE(); case 87: - if (lookahead == 'm') ADVANCE(201); + if (lookahead == 'm') ADVANCE(222); END_STATE(); case 88: - if (lookahead == 'm') ADVANCE(64); + if (lookahead == 'm') ADVANCE(215); END_STATE(); case 89: - if (lookahead == 'n') ADVANCE(209); + if (lookahead == 'm') ADVANCE(75); END_STATE(); case 90: - if (lookahead == 'n') ADVANCE(46); - if (lookahead == 'x') ADVANCE(61); + if (lookahead == 'm') ADVANCE(127); END_STATE(); case 91: - if (lookahead == 'n') ADVANCE(202); + if (lookahead == 'm') ADVANCE(214); END_STATE(); case 92: - if (lookahead == 'n') ADVANCE(220); + if (lookahead == 'm') ADVANCE(67); END_STATE(); case 93: - if (lookahead == 'n') ADVANCE(40); + if (lookahead == 'n') ADVANCE(222); END_STATE(); case 94: - if (lookahead == 'n') ADVANCE(201); + if (lookahead == 'n') ADVANCE(46); + if (lookahead == 'x') ADVANCE(64); END_STATE(); case 95: - if (lookahead == 'n') ADVANCE(182); + if (lookahead == 'n') ADVANCE(37); END_STATE(); case 96: - if (lookahead == 'n') ADVANCE(45); + if (lookahead == 'n') ADVANCE(215); END_STATE(); case 97: - if (lookahead == 'n') ADVANCE(142); + if (lookahead == 'n') ADVANCE(233); END_STATE(); case 98: - if (lookahead == 'n') ADVANCE(43); + if (lookahead == 'n') ADVANCE(214); END_STATE(); case 99: - if (lookahead == 'n') ADVANCE(47); + if (lookahead == 'n') ADVANCE(195); END_STATE(); case 100: - if (lookahead == 'n') ADVANCE(101); + if (lookahead == 'n') ADVANCE(40); END_STATE(); case 101: - if (lookahead == 'n') ADVANCE(54); + if (lookahead == 'n') ADVANCE(45); END_STATE(); case 102: - if (lookahead == 'n') ADVANCE(49); + if (lookahead == 'n') ADVANCE(147); END_STATE(); case 103: - if (lookahead == 'n') ADVANCE(56); + if (lookahead == 'n') ADVANCE(43); END_STATE(); case 104: - if (lookahead == 'n') ADVANCE(41); + if (lookahead == 'n') ADVANCE(106); END_STATE(); case 105: - if (lookahead == 'n') ADVANCE(102); + if (lookahead == 'n') ADVANCE(47); END_STATE(); case 106: - if (lookahead == 'n') ADVANCE(42); + if (lookahead == 'n') ADVANCE(55); END_STATE(); case 107: - if (lookahead == 'n') ADVANCE(103); + if (lookahead == 'n') ADVANCE(50); END_STATE(); case 108: - if (lookahead == 'o') ADVANCE(143); + if (lookahead == 'n') ADVANCE(57); END_STATE(); case 109: - if (lookahead == 'o') ADVANCE(68); + if (lookahead == 'n') ADVANCE(41); END_STATE(); case 110: - if (lookahead == 'o') ADVANCE(69); + if (lookahead == 'n') ADVANCE(107); END_STATE(); case 111: - if (lookahead == 'o') ADVANCE(151); + if (lookahead == 'n') ADVANCE(42); END_STATE(); case 112: - if (lookahead == 'o') ADVANCE(137); + if (lookahead == 'n') ADVANCE(108); END_STATE(); case 113: - if (lookahead == 'o') ADVANCE(101); + if (lookahead == 'o') ADVANCE(148); END_STATE(); case 114: - if (lookahead == 'o') ADVANCE(95); + if (lookahead == 'o') ADVANCE(71); END_STATE(); case 115: - if (lookahead == 'o') ADVANCE(112); - if (lookahead == 't') ADVANCE(219); + if (lookahead == 'o') ADVANCE(72); END_STATE(); case 116: - if (lookahead == 'o') ADVANCE(152); + if (lookahead == 'o') ADVANCE(156); END_STATE(); case 117: - if (lookahead == 'o') ADVANCE(102); + if (lookahead == 'o') ADVANCE(142); END_STATE(); case 118: - if (lookahead == 'o') ADVANCE(153); + if (lookahead == 'o') ADVANCE(106); END_STATE(); case 119: - if (lookahead == 'o') ADVANCE(103); + if (lookahead == 'o') ADVANCE(99); END_STATE(); case 120: - if (lookahead == 'o') ADVANCE(145); + if (lookahead == 'o') ADVANCE(117); + if (lookahead == 't') ADVANCE(232); END_STATE(); case 121: - if (lookahead == 'o') ADVANCE(70); + if (lookahead == 'o') ADVANCE(157); END_STATE(); case 122: - if (lookahead == 'p') ADVANCE(79); + if (lookahead == 'o') ADVANCE(107); END_STATE(); case 123: - if (lookahead == 'r') ADVANCE(219); + if (lookahead == 'o') ADVANCE(158); END_STATE(); case 124: - if (lookahead == 'r') ADVANCE(156); + if (lookahead == 'o') ADVANCE(108); END_STATE(); case 125: - if (lookahead == 'r') ADVANCE(26); + if (lookahead == 'o') ADVANCE(150); END_STATE(); case 126: - if (lookahead == 'r') ADVANCE(44); + if (lookahead == 'o') ADVANCE(73); END_STATE(); case 127: - if (lookahead == 'r') ADVANCE(39); + if (lookahead == 'p') ADVANCE(82); END_STATE(); case 128: - if (lookahead == 'r') ADVANCE(24); + if (lookahead == 'r') ADVANCE(232); END_STATE(); case 129: - if (lookahead == 'r') ADVANCE(28); + if (lookahead == 'r') ADVANCE(163); END_STATE(); case 130: if (lookahead == 'r') ADVANCE(25); END_STATE(); case 131: - if (lookahead == 'r') ADVANCE(29); + if (lookahead == 'r') ADVANCE(44); END_STATE(); case 132: - if (lookahead == 'r') ADVANCE(27); + if (lookahead == 'r') ADVANCE(39); END_STATE(); case 133: - if (lookahead == 's') ADVANCE(134); + if (lookahead == 'r') ADVANCE(23); END_STATE(); case 134: - if (lookahead == 's') ADVANCE(78); + if (lookahead == 'r') ADVANCE(27); END_STATE(); case 135: - if (lookahead == 's') ADVANCE(57); + if (lookahead == 'r') ADVANCE(24); END_STATE(); case 136: - if (lookahead == 't') ADVANCE(209); + if (lookahead == 'r') ADVANCE(28); END_STATE(); case 137: - if (lookahead == 't') ADVANCE(219); + if (lookahead == 'r') ADVANCE(26); END_STATE(); case 138: - if (lookahead == 't') ADVANCE(202); + if (lookahead == 's') ADVANCE(139); END_STATE(); case 139: - if (lookahead == 't') ADVANCE(63); + if (lookahead == 's') ADVANCE(81); END_STATE(); case 140: - if (lookahead == 't') ADVANCE(201); + if (lookahead == 's') ADVANCE(59); END_STATE(); case 141: - if (lookahead == 't') ADVANCE(113); + if (lookahead == 't') ADVANCE(222); END_STATE(); case 142: - if (lookahead == 't') ADVANCE(73); + if (lookahead == 't') ADVANCE(232); END_STATE(); case 143: - if (lookahead == 't') ADVANCE(55); + if (lookahead == 't') ADVANCE(215); END_STATE(); case 144: - if (lookahead == 't') ADVANCE(58); + if (lookahead == 't') ADVANCE(66); END_STATE(); case 145: - if (lookahead == 't') ADVANCE(59); + if (lookahead == 't') ADVANCE(214); END_STATE(); case 146: - if (lookahead == 't') ADVANCE(62); + if (lookahead == 't') ADVANCE(118); END_STATE(); case 147: - if (lookahead == 't') ADVANCE(117); + if (lookahead == 't') ADVANCE(76); END_STATE(); case 148: - if (lookahead == 't') ADVANCE(119); + if (lookahead == 't') ADVANCE(56); END_STATE(); case 149: - if (lookahead == 'u') ADVANCE(51); + if (lookahead == 't') ADVANCE(60); END_STATE(); case 150: - if (lookahead == 'u') ADVANCE(93); - if (lookahead == 'z') ADVANCE(202); + if (lookahead == 't') ADVANCE(62); END_STATE(); case 151: - if (lookahead == 'u') ADVANCE(96); + if (lookahead == 't') ADVANCE(65); END_STATE(); case 152: - if (lookahead == 'u') ADVANCE(98); + if (lookahead == 't') ADVANCE(122); END_STATE(); case 153: - if (lookahead == 'u') ADVANCE(99); + if (lookahead == 't') ADVANCE(124); END_STATE(); case 154: - if (lookahead == 'u') ADVANCE(104); - if (lookahead == 'z') ADVANCE(209); + if (lookahead == 'u') ADVANCE(52); END_STATE(); case 155: - if (lookahead == 'u') ADVANCE(106); - if (lookahead == 'z') ADVANCE(201); + if (lookahead == 'u') ADVANCE(48); END_STATE(); case 156: - if (lookahead == 'y') ADVANCE(181); + if (lookahead == 'u') ADVANCE(101); END_STATE(); case 157: - if (lookahead == '\t' || - lookahead == ' ') SKIP(157); - if (lookahead != 0 && - (lookahead < '\t' || '\r' < lookahead) && - lookahead != ':') ADVANCE(198); + if (lookahead == 'u') ADVANCE(103); END_STATE(); case 158: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(10); + if (lookahead == 'u') ADVANCE(105); END_STATE(); case 159: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(14); + if (lookahead == 'u') ADVANCE(100); + if (lookahead == 'z') ADVANCE(215); END_STATE(); case 160: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(36); + if (lookahead == 'u') ADVANCE(109); + if (lookahead == 'z') ADVANCE(222); END_STATE(); case 161: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(213); + if (lookahead == 'u') ADVANCE(111); + if (lookahead == 'z') ADVANCE(214); END_STATE(); case 162: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(214); + if (lookahead == 'x') ADVANCE(64); END_STATE(); case 163: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(19); + if (lookahead == 'y') ADVANCE(194); END_STATE(); case 164: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(37); + if (lookahead == '\t' || + lookahead == ' ') SKIP(164); + if (lookahead != 0 && + (lookahead < '\t' || '\r' < lookahead) && + lookahead != ':') ADVANCE(211); END_STATE(); case 165: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(218); + if (lookahead == '\t' || + lookahead == ' ') ADVANCE(187); + if (lookahead != 0 && + lookahead != '\t' && + lookahead != '\n' && + lookahead != '"') ADVANCE(188); END_STATE(); case 166: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(5); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(9); END_STATE(); case 167: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(188); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(13); END_STATE(); case 168: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(13); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(35); END_STATE(); case 169: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(38); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(226); END_STATE(); case 170: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(159); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(227); END_STATE(); case 171: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(165); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(18); END_STATE(); case 172: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(166); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(36); END_STATE(); case 173: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(167); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(231); END_STATE(); case 174: - ACCEPT_TOKEN(ts_builtin_sym_end); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(4); END_STATE(); case 175: - ACCEPT_TOKEN(anon_sym_LF); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(201); END_STATE(); case 176: + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(12); + END_STATE(); + case 177: + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(38); + END_STATE(); + case 178: + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(167); + END_STATE(); + case 179: + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(173); + END_STATE(); + case 180: + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(174); + END_STATE(); + case 181: + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(175); + END_STATE(); + case 182: + if (eof) ADVANCE(183); + ADVANCE_MAP( + '\n', 184, + '!', 203, + '"', 2, + '#', 189, + '*', 202, + '@', 61, + 'B', 20, + 'P', 19, + 'T', 178, + 'W', 193, + 'n', 125, + 'q', 154, + ); + if (lookahead == '\t' || + lookahead == ' ') SKIP(182); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(7); + END_STATE(); + case 183: + ACCEPT_TOKEN(ts_builtin_sym_end); + END_STATE(); + case 184: + ACCEPT_TOKEN(anon_sym_LF); + END_STATE(); + case 185: + ACCEPT_TOKEN(anon_sym_ATinclude); + END_STATE(); + case 186: + ACCEPT_TOKEN(anon_sym_DQUOTE); + END_STATE(); + case 187: + ACCEPT_TOKEN(aux_sym_file_path_token1); + if (lookahead == '\t' || + lookahead == ' ') ADVANCE(187); + if (lookahead != 0 && + lookahead != '\t' && + lookahead != '\n' && + lookahead != '"') ADVANCE(188); + END_STATE(); + case 188: + ACCEPT_TOKEN(aux_sym_file_path_token1); + if (lookahead != 0 && + lookahead != '\n' && + lookahead != '"') ADVANCE(188); + END_STATE(); + case 189: ACCEPT_TOKEN(sym_comment); if (lookahead != 0 && - lookahead != '\n') ADVANCE(176); + lookahead != '\n') ADVANCE(189); END_STATE(); - case 177: + case 190: ACCEPT_TOKEN(anon_sym_COLON); END_STATE(); - case 178: + case 191: ACCEPT_TOKEN(anon_sym_note); END_STATE(); - case 179: + case 192: ACCEPT_TOKEN(anon_sym_note); - if (lookahead == ':') ADVANCE(187); + if (lookahead == ':') ADVANCE(200); END_STATE(); - case 180: + case 193: ACCEPT_TOKEN(anon_sym_W); END_STATE(); - case 181: + case 194: ACCEPT_TOKEN(anon_sym_query); END_STATE(); - case 182: + case 195: ACCEPT_TOKEN(anon_sym_ATsession); END_STATE(); - case 183: + case 196: ACCEPT_TOKEN(anon_sym_ATend); END_STATE(); - case 184: + case 197: ACCEPT_TOKEN(anon_sym_ATend); if (lookahead != 0 && (lookahead < '\t' || '\r' < lookahead) && lookahead != ' ' && - lookahead != ':') ADVANCE(198); + lookahead != ':') ADVANCE(211); END_STATE(); - case 185: + case 198: ACCEPT_TOKEN(anon_sym_ATexercise); END_STATE(); - case 186: + case 199: ACCEPT_TOKEN(anon_sym_ATtemplate); END_STATE(); - case 187: + case 200: ACCEPT_TOKEN(anon_sym_note_COLON); END_STATE(); - case 188: + case 201: ACCEPT_TOKEN(sym_date); END_STATE(); - case 189: + case 202: ACCEPT_TOKEN(anon_sym_STAR); END_STATE(); - case 190: + case 203: ACCEPT_TOKEN(anon_sym_BANG); END_STATE(); - case 191: + case 204: ACCEPT_TOKEN(aux_sym_item_token1); - if (lookahead == ':') ADVANCE(187); + if (lookahead == ':') ADVANCE(200); if (lookahead != 0 && (lookahead < '\t' || '\r' < lookahead) && - lookahead != ' ') ADVANCE(198); + lookahead != ' ') ADVANCE(211); END_STATE(); - case 192: + case 205: ACCEPT_TOKEN(aux_sym_item_token1); - if (lookahead == 'd') ADVANCE(184); + if (lookahead == 'd') ADVANCE(197); if (lookahead != 0 && (lookahead < '\t' || '\r' < lookahead) && lookahead != ' ' && - lookahead != ':') ADVANCE(198); + lookahead != ':') ADVANCE(211); END_STATE(); - case 193: + case 206: ACCEPT_TOKEN(aux_sym_item_token1); - if (lookahead == 'e') ADVANCE(195); + if (lookahead == 'e') ADVANCE(208); if (lookahead != 0 && (lookahead < '\t' || '\r' < lookahead) && lookahead != ' ' && - lookahead != ':') ADVANCE(198); + lookahead != ':') ADVANCE(211); END_STATE(); - case 194: + case 207: ACCEPT_TOKEN(aux_sym_item_token1); - if (lookahead == 'e') ADVANCE(191); + if (lookahead == 'e') ADVANCE(204); if (lookahead != 0 && (lookahead < '\t' || '\r' < lookahead) && lookahead != ' ' && - lookahead != ':') ADVANCE(198); + lookahead != ':') ADVANCE(211); END_STATE(); - case 195: + case 208: ACCEPT_TOKEN(aux_sym_item_token1); - if (lookahead == 'n') ADVANCE(192); + if (lookahead == 'n') ADVANCE(205); if (lookahead != 0 && (lookahead < '\t' || '\r' < lookahead) && lookahead != ' ' && - lookahead != ':') ADVANCE(198); + lookahead != ':') ADVANCE(211); END_STATE(); - case 196: + case 209: ACCEPT_TOKEN(aux_sym_item_token1); - if (lookahead == 'o') ADVANCE(197); + if (lookahead == 'o') ADVANCE(210); if (lookahead != 0 && (lookahead < '\t' || '\r' < lookahead) && lookahead != ' ' && - lookahead != ':') ADVANCE(198); + lookahead != ':') ADVANCE(211); END_STATE(); - case 197: + case 210: ACCEPT_TOKEN(aux_sym_item_token1); - if (lookahead == 't') ADVANCE(194); + if (lookahead == 't') ADVANCE(207); if (lookahead != 0 && (lookahead < '\t' || '\r' < lookahead) && lookahead != ' ' && - lookahead != ':') ADVANCE(198); + lookahead != ':') ADVANCE(211); END_STATE(); - case 198: + case 211: ACCEPT_TOKEN(aux_sym_item_token1); if (lookahead != 0 && (lookahead < '\t' || '\r' < lookahead) && lookahead != ' ' && - lookahead != ':') ADVANCE(198); + lookahead != ':') ADVANCE(211); END_STATE(); - case 199: + case 212: ACCEPT_TOKEN(aux_sym_name_token1); if (lookahead == '\t' || - lookahead == ' ') ADVANCE(199); + lookahead == ' ') ADVANCE(212); if (lookahead != 0 && lookahead != '\t' && - lookahead != '\n') ADVANCE(200); + lookahead != '\n') ADVANCE(213); END_STATE(); - case 200: + case 213: ACCEPT_TOKEN(aux_sym_name_token1); if (lookahead != 0 && - lookahead != '\n') ADVANCE(200); + lookahead != '\n') ADVANCE(213); END_STATE(); - case 201: + case 214: ACCEPT_TOKEN(sym_weight); - if (lookahead == '+') ADVANCE(168); + if (lookahead == '+') ADVANCE(176); END_STATE(); - case 202: + case 215: ACCEPT_TOKEN(sym_weight); - if (lookahead == '+') ADVANCE(168); - if (lookahead == '/') ADVANCE(17); + if (lookahead == '+') ADVANCE(176); + if (lookahead == '/') ADVANCE(16); END_STATE(); - case 203: + case 216: ACCEPT_TOKEN(sym_weight); - if (lookahead == '+') ADVANCE(168); - if (lookahead == '/') ADVANCE(17); - if (lookahead == 'a') ADVANCE(75); + if (lookahead == '+') ADVANCE(176); + if (lookahead == '/') ADVANCE(16); + if (lookahead == 'a') ADVANCE(78); END_STATE(); - case 204: + case 217: ACCEPT_TOKEN(sym_weight); - if (lookahead == '+') ADVANCE(168); - if (lookahead == '/') ADVANCE(17); - if (lookahead == 'o') ADVANCE(100); + if (lookahead == '+') ADVANCE(176); + if (lookahead == '/') ADVANCE(16); + if (lookahead == 'o') ADVANCE(104); END_STATE(); - case 205: + case 218: ACCEPT_TOKEN(sym_weight); - if (lookahead == '+') ADVANCE(168); - if (lookahead == '/') ADVANCE(17); - if (lookahead == 'r') ADVANCE(203); + if (lookahead == '+') ADVANCE(176); + if (lookahead == '/') ADVANCE(16); + if (lookahead == 'r') ADVANCE(216); END_STATE(); - case 206: + case 219: ACCEPT_TOKEN(sym_weight); - if (lookahead == '+') ADVANCE(168); - if (lookahead == 'a') ADVANCE(77); + if (lookahead == '+') ADVANCE(176); + if (lookahead == 'a') ADVANCE(80); END_STATE(); - case 207: + case 220: ACCEPT_TOKEN(sym_weight); - if (lookahead == '+') ADVANCE(168); - if (lookahead == 'o') ADVANCE(107); + if (lookahead == '+') ADVANCE(176); + if (lookahead == 'o') ADVANCE(112); END_STATE(); - case 208: + case 221: ACCEPT_TOKEN(sym_weight); - if (lookahead == '+') ADVANCE(168); - if (lookahead == 'r') ADVANCE(206); + if (lookahead == '+') ADVANCE(176); + if (lookahead == 'r') ADVANCE(219); END_STATE(); - case 209: + case 222: ACCEPT_TOKEN(sym_weight); - if (lookahead == '/') ADVANCE(17); + if (lookahead == '/') ADVANCE(16); END_STATE(); - case 210: + case 223: ACCEPT_TOKEN(sym_weight); - if (lookahead == '/') ADVANCE(17); - if (lookahead == 'a') ADVANCE(76); + if (lookahead == '/') ADVANCE(16); + if (lookahead == 'a') ADVANCE(79); END_STATE(); - case 211: + case 224: ACCEPT_TOKEN(sym_weight); - if (lookahead == '/') ADVANCE(17); - if (lookahead == 'o') ADVANCE(105); + if (lookahead == '/') ADVANCE(16); + if (lookahead == 'o') ADVANCE(110); END_STATE(); - case 212: + case 225: ACCEPT_TOKEN(sym_weight); - if (lookahead == '/') ADVANCE(17); - if (lookahead == 'r') ADVANCE(210); + if (lookahead == '/') ADVANCE(16); + if (lookahead == 'r') ADVANCE(223); END_STATE(); - case 213: + case 226: ACCEPT_TOKEN(sym_rep_scheme); - if (lookahead == '/') ADVANCE(161); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(213); + if (lookahead == '/') ADVANCE(169); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(226); END_STATE(); - case 214: + case 227: ACCEPT_TOKEN(sym_rep_scheme); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(214); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(227); END_STATE(); - case 215: + case 228: ACCEPT_TOKEN(sym_duration); END_STATE(); - case 216: + case 229: ACCEPT_TOKEN(sym_duration); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(18); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(17); END_STATE(); - case 217: + case 230: ACCEPT_TOKEN(sym_duration); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(11); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(10); END_STATE(); - case 218: + case 231: ACCEPT_TOKEN(sym_time_of_day); END_STATE(); - case 219: + case 232: ACCEPT_TOKEN(sym_distance); END_STATE(); - case 220: + case 233: ACCEPT_TOKEN(sym_distance); - if (lookahead == 'c') ADVANCE(71); + if (lookahead == 'c') ADVANCE(74); END_STATE(); - case 221: + case 234: ACCEPT_TOKEN(sym_distance); - if (lookahead == 'e') ADVANCE(139); - if (lookahead == 'i') ADVANCE(222); - if (lookahead == 'm') ADVANCE(219); + if (lookahead == 'e') ADVANCE(144); + if (lookahead == 'i') ADVANCE(235); + if (lookahead == 'm') ADVANCE(232); END_STATE(); - case 222: + case 235: ACCEPT_TOKEN(sym_distance); - if (lookahead == 'l') ADVANCE(53); + if (lookahead == 'l') ADVANCE(54); END_STATE(); - case 223: + case 236: ACCEPT_TOKEN(sym_quoted_string); END_STATE(); default: @@ -1575,23 +1689,23 @@ static const TSLexerMode ts_lex_modes[STATE_COUNT] = { [1] = {.lex_state = 0}, [2] = {.lex_state = 0}, [3] = {.lex_state = 0}, - [4] = {.lex_state = 0}, - [5] = {.lex_state = 0}, - [6] = {.lex_state = 0}, - [7] = {.lex_state = 0}, - [8] = {.lex_state = 0}, - [9] = {.lex_state = 0}, - [10] = {.lex_state = 0}, - [11] = {.lex_state = 0}, - [12] = {.lex_state = 0}, - [13] = {.lex_state = 0}, + [4] = {.lex_state = 182}, + [5] = {.lex_state = 182}, + [6] = {.lex_state = 182}, + [7] = {.lex_state = 182}, + [8] = {.lex_state = 182}, + [9] = {.lex_state = 182}, + [10] = {.lex_state = 182}, + [11] = {.lex_state = 182}, + [12] = {.lex_state = 182}, + [13] = {.lex_state = 182}, [14] = {.lex_state = 0}, [15] = {.lex_state = 0}, - [16] = {.lex_state = 15}, + [16] = {.lex_state = 0}, [17] = {.lex_state = 0}, [18] = {.lex_state = 0}, [19] = {.lex_state = 0}, - [20] = {.lex_state = 15}, + [20] = {.lex_state = 0}, [21] = {.lex_state = 0}, [22] = {.lex_state = 0}, [23] = {.lex_state = 0}, @@ -1601,64 +1715,72 @@ static const TSLexerMode ts_lex_modes[STATE_COUNT] = { [27] = {.lex_state = 0}, [28] = {.lex_state = 0}, [29] = {.lex_state = 0}, - [30] = {.lex_state = 15}, + [30] = {.lex_state = 0}, [31] = {.lex_state = 0}, [32] = {.lex_state = 0}, [33] = {.lex_state = 0}, [34] = {.lex_state = 0}, [35] = {.lex_state = 0}, - [36] = {.lex_state = 15}, + [36] = {.lex_state = 0}, [37] = {.lex_state = 0}, [38] = {.lex_state = 0}, [39] = {.lex_state = 0}, [40] = {.lex_state = 0}, - [41] = {.lex_state = 15}, - [42] = {.lex_state = 0}, - [43] = {.lex_state = 0}, - [44] = {.lex_state = 0}, - [45] = {.lex_state = 2}, - [46] = {.lex_state = 16}, - [47] = {.lex_state = 16}, - [48] = {.lex_state = 16}, - [49] = {.lex_state = 0}, + [41] = {.lex_state = 0}, + [42] = {.lex_state = 14}, + [43] = {.lex_state = 182}, + [44] = {.lex_state = 14}, + [45] = {.lex_state = 14}, + [46] = {.lex_state = 14}, + [47] = {.lex_state = 14}, + [48] = {.lex_state = 182}, + [49] = {.lex_state = 15}, [50] = {.lex_state = 15}, [51] = {.lex_state = 15}, [52] = {.lex_state = 1}, - [53] = {.lex_state = 1}, - [54] = {.lex_state = 157}, - [55] = {.lex_state = 157}, - [56] = {.lex_state = 16}, - [57] = {.lex_state = 16}, + [53] = {.lex_state = 0}, + [54] = {.lex_state = 14}, + [55] = {.lex_state = 14}, + [56] = {.lex_state = 1}, + [57] = {.lex_state = 164}, [58] = {.lex_state = 0}, [59] = {.lex_state = 1}, - [60] = {.lex_state = 0}, - [61] = {.lex_state = 0}, + [60] = {.lex_state = 15}, + [61] = {.lex_state = 164}, [62] = {.lex_state = 0}, - [63] = {.lex_state = 0}, + [63] = {.lex_state = 15}, [64] = {.lex_state = 0}, [65] = {.lex_state = 0}, [66] = {.lex_state = 0}, [67] = {.lex_state = 0}, [68] = {.lex_state = 0}, - [69] = {.lex_state = 0}, - [70] = {.lex_state = 0}, + [69] = {.lex_state = 182}, + [70] = {.lex_state = 182}, [71] = {.lex_state = 0}, [72] = {.lex_state = 0}, - [73] = {.lex_state = 157}, + [73] = {.lex_state = 0}, [74] = {.lex_state = 0}, [75] = {.lex_state = 0}, [76] = {.lex_state = 0}, - [77] = {.lex_state = 0}, - [78] = {.lex_state = 0}, + [77] = {.lex_state = 182}, + [78] = {.lex_state = 182}, [79] = {.lex_state = 0}, [80] = {.lex_state = 0}, - [81] = {.lex_state = 1}, + [81] = {.lex_state = 164}, + [82] = {.lex_state = 0}, + [83] = {.lex_state = 165}, + [84] = {.lex_state = 0}, + [85] = {.lex_state = 0}, + [86] = {.lex_state = 0}, + [87] = {.lex_state = 1}, }; static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [STATE(0)] = { [ts_builtin_sym_end] = ACTIONS(1), [anon_sym_LF] = ACTIONS(1), + [anon_sym_ATinclude] = ACTIONS(1), + [anon_sym_DQUOTE] = ACTIONS(1), [sym_comment] = ACTIONS(1), [anon_sym_COLON] = ACTIONS(1), [anon_sym_note] = ACTIONS(1), @@ -1677,46 +1799,50 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_duration] = ACTIONS(1), [sym_time_of_day] = ACTIONS(1), [sym_distance] = ACTIONS(1), - [sym_quoted_string] = ACTIONS(1), }, [STATE(1)] = { - [sym_source_file] = STATE(72), - [sym__entry] = STATE(3), - [sym_singleline_entry] = STATE(3), - [sym_note_entry] = STATE(3), - [sym_weigh_in_entry] = STATE(3), - [sym_query_entry] = STATE(3), - [sym_session_block] = STATE(3), - [sym_exercise_block] = STATE(3), - [sym_template_block] = STATE(3), - [aux_sym_source_file_repeat1] = STATE(3), + [sym_source_file] = STATE(84), + [sym__entry] = STATE(2), + [sym_include_directive] = STATE(2), + [sym_singleline_entry] = STATE(2), + [sym_note_entry] = STATE(2), + [sym_weigh_in_entry] = STATE(2), + [sym_query_entry] = STATE(2), + [sym_session_block] = STATE(2), + [sym_exercise_block] = STATE(2), + [sym_template_block] = STATE(2), + [aux_sym_source_file_repeat1] = STATE(2), [ts_builtin_sym_end] = ACTIONS(3), [anon_sym_LF] = ACTIONS(5), + [anon_sym_ATinclude] = ACTIONS(7), [sym_comment] = ACTIONS(5), - [anon_sym_ATsession] = ACTIONS(7), - [anon_sym_ATexercise] = ACTIONS(9), - [anon_sym_ATtemplate] = ACTIONS(11), - [sym_date] = ACTIONS(13), + [anon_sym_ATsession] = ACTIONS(9), + [anon_sym_ATexercise] = ACTIONS(11), + [anon_sym_ATtemplate] = ACTIONS(13), + [sym_date] = ACTIONS(15), }, }; static const uint16_t ts_small_parse_table[] = { - [0] = 7, - ACTIONS(15), 1, - ts_builtin_sym_end, - ACTIONS(20), 1, + [0] = 8, + ACTIONS(7), 1, + anon_sym_ATinclude, + ACTIONS(9), 1, anon_sym_ATsession, - ACTIONS(23), 1, + ACTIONS(11), 1, anon_sym_ATexercise, - ACTIONS(26), 1, + ACTIONS(13), 1, anon_sym_ATtemplate, - ACTIONS(29), 1, + ACTIONS(15), 1, sym_date, - ACTIONS(17), 2, + ACTIONS(17), 1, + ts_builtin_sym_end, + ACTIONS(19), 2, anon_sym_LF, sym_comment, - STATE(2), 9, + STATE(3), 10, sym__entry, + sym_include_directive, sym_singleline_entry, sym_note_entry, sym_weigh_in_entry, @@ -1725,22 +1851,25 @@ static const uint16_t ts_small_parse_table[] = { sym_exercise_block, sym_template_block, aux_sym_source_file_repeat1, - [31] = 7, - ACTIONS(7), 1, + [35] = 8, + ACTIONS(21), 1, + ts_builtin_sym_end, + ACTIONS(26), 1, + anon_sym_ATinclude, + ACTIONS(29), 1, anon_sym_ATsession, - ACTIONS(9), 1, + ACTIONS(32), 1, anon_sym_ATexercise, - ACTIONS(11), 1, + ACTIONS(35), 1, anon_sym_ATtemplate, - ACTIONS(13), 1, + ACTIONS(38), 1, sym_date, - ACTIONS(32), 1, - ts_builtin_sym_end, - ACTIONS(34), 2, + ACTIONS(23), 2, anon_sym_LF, sym_comment, - STATE(2), 9, + STATE(3), 10, sym__entry, + sym_include_directive, sym_singleline_entry, sym_note_entry, sym_weigh_in_entry, @@ -1749,76 +1878,80 @@ static const uint16_t ts_small_parse_table[] = { sym_exercise_block, sym_template_block, aux_sym_source_file_repeat1, - [62] = 9, - ACTIONS(38), 1, + [70] = 9, + ACTIONS(43), 1, anon_sym_LF, - ACTIONS(40), 1, + ACTIONS(45), 1, sym_weight, - ACTIONS(42), 1, + ACTIONS(47), 1, sym_rep_scheme, - ACTIONS(44), 1, + ACTIONS(49), 1, sym_duration, - ACTIONS(46), 1, + ACTIONS(51), 1, sym_distance, - ACTIONS(48), 1, + ACTIONS(53), 1, sym_quoted_string, STATE(5), 1, aux_sym_details_repeat1, - STATE(35), 1, + STATE(33), 1, sym_details, - ACTIONS(36), 6, + ACTIONS(41), 7, ts_builtin_sym_end, + anon_sym_ATinclude, sym_comment, anon_sym_ATsession, anon_sym_ATexercise, anon_sym_ATtemplate, sym_date, - [95] = 7, - ACTIONS(40), 1, + [104] = 7, + ACTIONS(45), 1, sym_weight, - ACTIONS(42), 1, + ACTIONS(47), 1, sym_rep_scheme, - ACTIONS(44), 1, + ACTIONS(49), 1, sym_duration, - ACTIONS(46), 1, + ACTIONS(51), 1, sym_distance, - ACTIONS(48), 1, + ACTIONS(53), 1, sym_quoted_string, STATE(6), 1, aux_sym_details_repeat1, - ACTIONS(50), 7, + ACTIONS(55), 8, ts_builtin_sym_end, anon_sym_LF, + anon_sym_ATinclude, sym_comment, anon_sym_ATsession, anon_sym_ATexercise, anon_sym_ATtemplate, sym_date, - [123] = 7, - ACTIONS(54), 1, + [133] = 7, + ACTIONS(59), 1, sym_weight, - ACTIONS(57), 1, + ACTIONS(62), 1, sym_rep_scheme, - ACTIONS(60), 1, + ACTIONS(65), 1, sym_duration, - ACTIONS(63), 1, + ACTIONS(68), 1, sym_distance, - ACTIONS(66), 1, + ACTIONS(71), 1, sym_quoted_string, STATE(6), 1, aux_sym_details_repeat1, - ACTIONS(52), 7, + ACTIONS(57), 8, ts_builtin_sym_end, anon_sym_LF, + anon_sym_ATinclude, sym_comment, anon_sym_ATsession, anon_sym_ATexercise, anon_sym_ATtemplate, sym_date, - [151] = 1, - ACTIONS(69), 12, + [162] = 1, + ACTIONS(74), 13, ts_builtin_sym_end, anon_sym_LF, + anon_sym_ATinclude, sym_comment, anon_sym_ATsession, anon_sym_ATexercise, @@ -1829,10 +1962,11 @@ static const uint16_t ts_small_parse_table[] = { sym_duration, sym_distance, sym_quoted_string, - [166] = 1, - ACTIONS(71), 12, + [178] = 1, + ACTIONS(76), 13, ts_builtin_sym_end, anon_sym_LF, + anon_sym_ATinclude, sym_comment, anon_sym_ATsession, anon_sym_ATexercise, @@ -1843,10 +1977,11 @@ static const uint16_t ts_small_parse_table[] = { sym_duration, sym_distance, sym_quoted_string, - [181] = 1, - ACTIONS(73), 12, + [194] = 1, + ACTIONS(78), 13, ts_builtin_sym_end, anon_sym_LF, + anon_sym_ATinclude, sym_comment, anon_sym_ATsession, anon_sym_ATexercise, @@ -1857,10 +1992,11 @@ static const uint16_t ts_small_parse_table[] = { sym_duration, sym_distance, sym_quoted_string, - [196] = 1, - ACTIONS(75), 12, + [210] = 1, + ACTIONS(80), 13, ts_builtin_sym_end, anon_sym_LF, + anon_sym_ATinclude, sym_comment, anon_sym_ATsession, anon_sym_ATexercise, @@ -1871,10 +2007,11 @@ static const uint16_t ts_small_parse_table[] = { sym_duration, sym_distance, sym_quoted_string, - [211] = 1, - ACTIONS(77), 12, + [226] = 1, + ACTIONS(82), 13, ts_builtin_sym_end, anon_sym_LF, + anon_sym_ATinclude, sym_comment, anon_sym_ATsession, anon_sym_ATexercise, @@ -1885,726 +2022,810 @@ static const uint16_t ts_small_parse_table[] = { sym_duration, sym_distance, sym_quoted_string, - [226] = 4, - ACTIONS(81), 1, + [242] = 4, + ACTIONS(86), 1, anon_sym_LF, - ACTIONS(83), 1, + ACTIONS(88), 1, sym_time_of_day, - ACTIONS(85), 1, + ACTIONS(90), 1, sym_quoted_string, - ACTIONS(79), 6, + ACTIONS(84), 7, ts_builtin_sym_end, + anon_sym_ATinclude, sym_comment, anon_sym_ATsession, anon_sym_ATexercise, anon_sym_ATtemplate, sym_date, - [244] = 3, - ACTIONS(89), 1, + [261] = 3, + ACTIONS(94), 1, anon_sym_LF, - ACTIONS(91), 1, + ACTIONS(96), 1, sym_quoted_string, - ACTIONS(87), 6, + ACTIONS(92), 7, + ts_builtin_sym_end, + anon_sym_ATinclude, + sym_comment, + anon_sym_ATsession, + anon_sym_ATexercise, + anon_sym_ATtemplate, + sym_date, + [277] = 2, + ACTIONS(100), 1, + anon_sym_LF, + ACTIONS(98), 7, ts_builtin_sym_end, + anon_sym_ATinclude, sym_comment, anon_sym_ATsession, anon_sym_ATexercise, anon_sym_ATtemplate, sym_date, - [259] = 1, - ACTIONS(93), 7, + [290] = 1, + ACTIONS(102), 8, ts_builtin_sym_end, anon_sym_LF, + anon_sym_ATinclude, sym_comment, anon_sym_ATsession, anon_sym_ATexercise, anon_sym_ATtemplate, sym_date, - [269] = 1, - ACTIONS(95), 7, + [301] = 1, + ACTIONS(104), 8, ts_builtin_sym_end, anon_sym_LF, + anon_sym_ATinclude, sym_comment, anon_sym_ATsession, anon_sym_ATexercise, anon_sym_ATtemplate, sym_date, - [279] = 5, - ACTIONS(97), 1, - anon_sym_ATend, - ACTIONS(99), 1, - anon_sym_note_COLON, - ACTIONS(101), 1, - aux_sym_item_token1, - STATE(63), 1, - sym_item, - STATE(20), 3, - sym_item_line, - sym_note_line, - aux_sym_session_block_repeat1, - [297] = 2, - ACTIONS(105), 1, + [312] = 2, + ACTIONS(108), 1, anon_sym_LF, - ACTIONS(103), 6, + ACTIONS(106), 7, ts_builtin_sym_end, + anon_sym_ATinclude, sym_comment, anon_sym_ATsession, anon_sym_ATexercise, anon_sym_ATtemplate, sym_date, - [309] = 2, - ACTIONS(109), 1, - anon_sym_LF, - ACTIONS(107), 6, + [325] = 1, + ACTIONS(110), 8, ts_builtin_sym_end, + anon_sym_LF, + anon_sym_ATinclude, sym_comment, anon_sym_ATsession, anon_sym_ATexercise, anon_sym_ATtemplate, sym_date, - [321] = 2, - ACTIONS(113), 1, + [336] = 2, + ACTIONS(114), 1, anon_sym_LF, - ACTIONS(111), 6, + ACTIONS(112), 7, ts_builtin_sym_end, + anon_sym_ATinclude, sym_comment, anon_sym_ATsession, anon_sym_ATexercise, anon_sym_ATtemplate, sym_date, - [333] = 5, - ACTIONS(99), 1, - anon_sym_note_COLON, - ACTIONS(101), 1, - aux_sym_item_token1, - ACTIONS(115), 1, - anon_sym_ATend, - STATE(63), 1, - sym_item, - STATE(30), 3, - sym_item_line, - sym_note_line, - aux_sym_session_block_repeat1, - [351] = 1, - ACTIONS(117), 7, - ts_builtin_sym_end, + [349] = 2, + ACTIONS(118), 1, anon_sym_LF, + ACTIONS(116), 7, + ts_builtin_sym_end, + anon_sym_ATinclude, sym_comment, anon_sym_ATsession, anon_sym_ATexercise, anon_sym_ATtemplate, sym_date, - [361] = 1, - ACTIONS(119), 7, + [362] = 1, + ACTIONS(120), 8, ts_builtin_sym_end, anon_sym_LF, + anon_sym_ATinclude, sym_comment, anon_sym_ATsession, anon_sym_ATexercise, anon_sym_ATtemplate, sym_date, - [371] = 2, - ACTIONS(123), 1, - anon_sym_LF, - ACTIONS(121), 6, + [373] = 1, + ACTIONS(122), 8, ts_builtin_sym_end, + anon_sym_LF, + anon_sym_ATinclude, sym_comment, anon_sym_ATsession, anon_sym_ATexercise, anon_sym_ATtemplate, sym_date, - [383] = 2, - ACTIONS(127), 1, + [384] = 2, + ACTIONS(126), 1, anon_sym_LF, - ACTIONS(125), 6, + ACTIONS(124), 7, ts_builtin_sym_end, + anon_sym_ATinclude, sym_comment, anon_sym_ATsession, anon_sym_ATexercise, anon_sym_ATtemplate, sym_date, - [395] = 1, - ACTIONS(129), 7, + [397] = 1, + ACTIONS(128), 8, ts_builtin_sym_end, anon_sym_LF, + anon_sym_ATinclude, sym_comment, anon_sym_ATsession, anon_sym_ATexercise, anon_sym_ATtemplate, sym_date, - [405] = 2, - ACTIONS(131), 1, + [408] = 2, + ACTIONS(130), 1, anon_sym_LF, - ACTIONS(129), 6, + ACTIONS(128), 7, ts_builtin_sym_end, + anon_sym_ATinclude, sym_comment, anon_sym_ATsession, anon_sym_ATexercise, anon_sym_ATtemplate, sym_date, - [417] = 1, - ACTIONS(133), 7, + [421] = 1, + ACTIONS(132), 8, ts_builtin_sym_end, anon_sym_LF, + anon_sym_ATinclude, sym_comment, anon_sym_ATsession, anon_sym_ATexercise, anon_sym_ATtemplate, sym_date, - [427] = 7, - ACTIONS(40), 1, - sym_weight, - ACTIONS(42), 1, - sym_rep_scheme, - ACTIONS(44), 1, - sym_duration, - ACTIONS(46), 1, - sym_distance, - ACTIONS(48), 1, - sym_quoted_string, - STATE(5), 1, - aux_sym_details_repeat1, - STATE(69), 1, - sym_details, - [449] = 2, - ACTIONS(135), 1, - anon_sym_LF, - ACTIONS(133), 6, + [432] = 1, + ACTIONS(134), 8, ts_builtin_sym_end, + anon_sym_LF, + anon_sym_ATinclude, sym_comment, anon_sym_ATsession, anon_sym_ATexercise, anon_sym_ATtemplate, sym_date, - [461] = 5, - ACTIONS(137), 1, - anon_sym_ATend, - ACTIONS(139), 1, - anon_sym_note_COLON, - ACTIONS(142), 1, - aux_sym_item_token1, - STATE(63), 1, - sym_item, - STATE(30), 3, - sym_item_line, - sym_note_line, - aux_sym_session_block_repeat1, - [479] = 2, - ACTIONS(147), 1, + [443] = 2, + ACTIONS(138), 1, anon_sym_LF, - ACTIONS(145), 6, + ACTIONS(136), 7, ts_builtin_sym_end, + anon_sym_ATinclude, sym_comment, anon_sym_ATsession, anon_sym_ATexercise, anon_sym_ATtemplate, sym_date, - [491] = 1, - ACTIONS(149), 7, + [456] = 1, + ACTIONS(140), 8, ts_builtin_sym_end, anon_sym_LF, + anon_sym_ATinclude, sym_comment, anon_sym_ATsession, anon_sym_ATexercise, anon_sym_ATtemplate, sym_date, - [501] = 1, - ACTIONS(151), 7, + [467] = 1, + ACTIONS(142), 8, ts_builtin_sym_end, anon_sym_LF, + anon_sym_ATinclude, sym_comment, anon_sym_ATsession, anon_sym_ATexercise, anon_sym_ATtemplate, sym_date, - [511] = 1, - ACTIONS(153), 7, + [478] = 1, + ACTIONS(144), 8, ts_builtin_sym_end, anon_sym_LF, + anon_sym_ATinclude, sym_comment, anon_sym_ATsession, anon_sym_ATexercise, anon_sym_ATtemplate, sym_date, - [521] = 2, - ACTIONS(157), 1, + [489] = 2, + ACTIONS(148), 1, anon_sym_LF, - ACTIONS(155), 6, + ACTIONS(146), 7, ts_builtin_sym_end, + anon_sym_ATinclude, sym_comment, anon_sym_ATsession, anon_sym_ATexercise, anon_sym_ATtemplate, sym_date, - [533] = 5, - ACTIONS(99), 1, - anon_sym_note_COLON, - ACTIONS(101), 1, - aux_sym_item_token1, - ACTIONS(159), 1, - anon_sym_ATend, - STATE(63), 1, - sym_item, - STATE(41), 3, - sym_item_line, - sym_note_line, - aux_sym_session_block_repeat1, - [551] = 1, - ACTIONS(161), 7, + [502] = 2, + ACTIONS(152), 1, + anon_sym_LF, + ACTIONS(150), 7, + ts_builtin_sym_end, + anon_sym_ATinclude, + sym_comment, + anon_sym_ATsession, + anon_sym_ATexercise, + anon_sym_ATtemplate, + sym_date, + [515] = 1, + ACTIONS(154), 8, + ts_builtin_sym_end, + anon_sym_LF, + anon_sym_ATinclude, + sym_comment, + anon_sym_ATsession, + anon_sym_ATexercise, + anon_sym_ATtemplate, + sym_date, + [526] = 1, + ACTIONS(156), 8, ts_builtin_sym_end, anon_sym_LF, + anon_sym_ATinclude, sym_comment, anon_sym_ATsession, anon_sym_ATexercise, anon_sym_ATtemplate, sym_date, - [561] = 1, - ACTIONS(163), 7, + [537] = 1, + ACTIONS(158), 8, ts_builtin_sym_end, anon_sym_LF, + anon_sym_ATinclude, sym_comment, anon_sym_ATsession, anon_sym_ATexercise, anon_sym_ATtemplate, sym_date, - [571] = 1, - ACTIONS(165), 7, + [548] = 1, + ACTIONS(160), 8, ts_builtin_sym_end, anon_sym_LF, + anon_sym_ATinclude, sym_comment, anon_sym_ATsession, anon_sym_ATexercise, anon_sym_ATtemplate, sym_date, - [581] = 2, - ACTIONS(169), 1, + [559] = 2, + ACTIONS(164), 1, anon_sym_LF, - ACTIONS(167), 6, + ACTIONS(162), 7, ts_builtin_sym_end, + anon_sym_ATinclude, sym_comment, anon_sym_ATsession, anon_sym_ATexercise, anon_sym_ATtemplate, sym_date, - [593] = 5, - ACTIONS(99), 1, - anon_sym_note_COLON, - ACTIONS(101), 1, - aux_sym_item_token1, - ACTIONS(171), 1, - anon_sym_ATend, - STATE(63), 1, - sym_item, - STATE(30), 3, - sym_item_line, - sym_note_line, - aux_sym_session_block_repeat1, - [611] = 1, - ACTIONS(173), 7, + [572] = 1, + ACTIONS(166), 8, ts_builtin_sym_end, anon_sym_LF, + anon_sym_ATinclude, sym_comment, anon_sym_ATsession, anon_sym_ATexercise, anon_sym_ATtemplate, sym_date, - [621] = 2, - ACTIONS(175), 1, + [583] = 2, + ACTIONS(168), 1, anon_sym_LF, - ACTIONS(173), 6, + ACTIONS(166), 7, ts_builtin_sym_end, + anon_sym_ATinclude, sym_comment, anon_sym_ATsession, anon_sym_ATexercise, anon_sym_ATtemplate, sym_date, - [633] = 1, - ACTIONS(177), 7, - ts_builtin_sym_end, + [596] = 2, + ACTIONS(170), 1, anon_sym_LF, + ACTIONS(132), 7, + ts_builtin_sym_end, + anon_sym_ATinclude, sym_comment, anon_sym_ATsession, anon_sym_ATexercise, anon_sym_ATtemplate, sym_date, - [643] = 5, - ACTIONS(179), 1, + [609] = 5, + ACTIONS(172), 1, + anon_sym_ATend, + ACTIONS(174), 1, + anon_sym_note_COLON, + ACTIONS(176), 1, + aux_sym_item_token1, + STATE(80), 1, + sym_item, + STATE(47), 3, + sym_item_line, + sym_note_line, + aux_sym_session_block_repeat1, + [627] = 7, + ACTIONS(45), 1, + sym_weight, + ACTIONS(47), 1, + sym_rep_scheme, + ACTIONS(49), 1, + sym_duration, + ACTIONS(51), 1, + sym_distance, + ACTIONS(53), 1, + sym_quoted_string, + STATE(5), 1, + aux_sym_details_repeat1, + STATE(75), 1, + sym_details, + [649] = 5, + ACTIONS(178), 1, + anon_sym_ATend, + ACTIONS(180), 1, + anon_sym_note_COLON, + ACTIONS(183), 1, + aux_sym_item_token1, + STATE(80), 1, + sym_item, + STATE(44), 3, + sym_item_line, + sym_note_line, + aux_sym_session_block_repeat1, + [667] = 5, + ACTIONS(174), 1, + anon_sym_note_COLON, + ACTIONS(176), 1, + aux_sym_item_token1, + ACTIONS(186), 1, + anon_sym_ATend, + STATE(80), 1, + sym_item, + STATE(46), 3, + sym_item_line, + sym_note_line, + aux_sym_session_block_repeat1, + [685] = 5, + ACTIONS(174), 1, + anon_sym_note_COLON, + ACTIONS(176), 1, + aux_sym_item_token1, + ACTIONS(188), 1, + anon_sym_ATend, + STATE(80), 1, + sym_item, + STATE(44), 3, + sym_item_line, + sym_note_line, + aux_sym_session_block_repeat1, + [703] = 5, + ACTIONS(174), 1, + anon_sym_note_COLON, + ACTIONS(176), 1, + aux_sym_item_token1, + ACTIONS(190), 1, + anon_sym_ATend, + STATE(80), 1, + sym_item, + STATE(44), 3, + sym_item_line, + sym_note_line, + aux_sym_session_block_repeat1, + [721] = 5, + ACTIONS(192), 1, anon_sym_note, - ACTIONS(181), 1, + ACTIONS(194), 1, anon_sym_W, - ACTIONS(183), 1, + ACTIONS(196), 1, anon_sym_query, - STATE(55), 1, + STATE(61), 1, sym_flag, - ACTIONS(185), 2, + ACTIONS(198), 2, anon_sym_STAR, anon_sym_BANG, - [660] = 4, - ACTIONS(187), 1, + [738] = 4, + ACTIONS(200), 1, anon_sym_ATend, - ACTIONS(189), 1, + ACTIONS(202), 1, aux_sym_item_token1, - STATE(68), 1, + STATE(73), 1, sym_identifier, - STATE(47), 2, + STATE(49), 2, sym_metadata_line, aux_sym_exercise_block_repeat1, - [674] = 4, - ACTIONS(189), 1, - aux_sym_item_token1, - ACTIONS(191), 1, + [752] = 4, + ACTIONS(205), 1, anon_sym_ATend, - STATE(68), 1, + ACTIONS(207), 1, + aux_sym_item_token1, + STATE(73), 1, sym_identifier, - STATE(48), 2, + STATE(51), 2, sym_metadata_line, aux_sym_exercise_block_repeat1, - [688] = 4, - ACTIONS(193), 1, - anon_sym_ATend, - ACTIONS(195), 1, + [766] = 4, + ACTIONS(207), 1, aux_sym_item_token1, - STATE(68), 1, + ACTIONS(209), 1, + anon_sym_ATend, + STATE(73), 1, sym_identifier, - STATE(48), 2, + STATE(49), 2, sym_metadata_line, aux_sym_exercise_block_repeat1, - [702] = 2, + [780] = 3, + ACTIONS(211), 1, + anon_sym_LF, + ACTIONS(213), 1, + aux_sym_name_token1, + STATE(72), 1, + sym_text_until_newline, + [790] = 2, STATE(59), 1, sym_flag, - ACTIONS(198), 2, + ACTIONS(215), 2, anon_sym_STAR, anon_sym_BANG, - [710] = 2, - ACTIONS(202), 1, + [798] = 2, + ACTIONS(219), 1, anon_sym_note_COLON, - ACTIONS(200), 2, + ACTIONS(217), 2, anon_sym_ATend, aux_sym_item_token1, - [718] = 2, - ACTIONS(206), 1, + [806] = 2, + ACTIONS(223), 1, anon_sym_note_COLON, - ACTIONS(204), 2, + ACTIONS(221), 2, anon_sym_ATend, aux_sym_item_token1, - [726] = 3, - ACTIONS(208), 1, - anon_sym_LF, - ACTIONS(210), 1, + [814] = 2, + ACTIONS(225), 1, aux_sym_name_token1, STATE(66), 1, - sym_text_until_newline, - [736] = 2, - ACTIONS(212), 1, - aux_sym_name_token1, - STATE(62), 1, sym_name, - [743] = 2, - ACTIONS(214), 1, + [821] = 2, + ACTIONS(227), 1, aux_sym_item_token1, - STATE(79), 1, + STATE(68), 1, sym_identifier, - [750] = 2, - ACTIONS(216), 1, - aux_sym_item_token1, - STATE(75), 1, - sym_item, - [757] = 1, - ACTIONS(218), 2, + [828] = 2, + ACTIONS(229), 1, + anon_sym_DQUOTE, + STATE(32), 1, + sym_file_path, + [835] = 2, + ACTIONS(225), 1, + aux_sym_name_token1, + STATE(67), 1, + sym_name, + [842] = 1, + ACTIONS(231), 2, anon_sym_ATend, aux_sym_item_token1, - [762] = 1, - ACTIONS(220), 2, - anon_sym_ATend, + [847] = 2, + ACTIONS(233), 1, aux_sym_item_token1, - [767] = 1, - ACTIONS(222), 2, + STATE(76), 1, + sym_item, + [854] = 1, + ACTIONS(235), 2, anon_sym_LF, anon_sym_COLON, - [772] = 2, - ACTIONS(212), 1, - aux_sym_name_token1, - STATE(74), 1, - sym_name, - [779] = 1, - ACTIONS(224), 1, - sym_weight, - [783] = 1, - ACTIONS(226), 1, - sym_quoted_string, - [787] = 1, - ACTIONS(228), 1, + [859] = 1, + ACTIONS(237), 2, + anon_sym_ATend, + aux_sym_item_token1, + [864] = 1, + ACTIONS(239), 1, anon_sym_LF, - [791] = 1, - ACTIONS(230), 1, - anon_sym_COLON, - [795] = 1, - ACTIONS(232), 1, + [868] = 1, + ACTIONS(241), 1, + sym_date, + [872] = 1, + ACTIONS(243), 1, anon_sym_LF, - [799] = 1, - ACTIONS(234), 1, + [876] = 1, + ACTIONS(245), 1, anon_sym_LF, - [803] = 1, - ACTIONS(236), 1, + [880] = 1, + ACTIONS(247), 1, anon_sym_LF, - [807] = 1, - ACTIONS(238), 1, + [884] = 1, + ACTIONS(249), 1, sym_quoted_string, - [811] = 1, - ACTIONS(240), 1, - anon_sym_COLON, - [815] = 1, - ACTIONS(242), 1, - anon_sym_LF, - [819] = 1, - ACTIONS(244), 1, + [888] = 1, + ACTIONS(251), 1, sym_quoted_string, - [823] = 1, - ACTIONS(246), 1, - anon_sym_COLON, - [827] = 1, - ACTIONS(248), 1, - ts_builtin_sym_end, - [831] = 1, - ACTIONS(250), 1, - aux_sym_item_token1, - [835] = 1, - ACTIONS(252), 1, + [892] = 1, + ACTIONS(253), 1, + anon_sym_LF, + [896] = 1, + ACTIONS(255), 1, anon_sym_LF, - [839] = 1, - ACTIONS(254), 1, + [900] = 1, + ACTIONS(257), 1, anon_sym_COLON, - [843] = 1, - ACTIONS(256), 1, + [904] = 1, + ACTIONS(259), 1, + anon_sym_COLON, + [908] = 1, + ACTIONS(261), 1, anon_sym_LF, - [847] = 1, - ACTIONS(258), 1, - sym_date, - [851] = 1, - ACTIONS(260), 1, + [912] = 1, + ACTIONS(263), 1, + anon_sym_COLON, + [916] = 1, + ACTIONS(265), 1, + sym_quoted_string, + [920] = 1, + ACTIONS(267), 1, sym_quoted_string, - [855] = 1, - ACTIONS(262), 1, + [924] = 1, + ACTIONS(269), 1, anon_sym_LF, - [859] = 1, - ACTIONS(264), 1, + [928] = 1, + ACTIONS(271), 1, + anon_sym_COLON, + [932] = 1, + ACTIONS(273), 1, + aux_sym_item_token1, + [936] = 1, + ACTIONS(275), 1, anon_sym_LF, - [863] = 1, - ACTIONS(250), 1, + [940] = 1, + ACTIONS(277), 1, + aux_sym_file_path_token1, + [944] = 1, + ACTIONS(279), 1, + ts_builtin_sym_end, + [948] = 1, + ACTIONS(281), 1, + anon_sym_DQUOTE, + [952] = 1, + ACTIONS(283), 1, + sym_weight, + [956] = 1, + ACTIONS(273), 1, aux_sym_name_token1, }; static const uint32_t ts_small_parse_table_map[] = { [SMALL_STATE(2)] = 0, - [SMALL_STATE(3)] = 31, - [SMALL_STATE(4)] = 62, - [SMALL_STATE(5)] = 95, - [SMALL_STATE(6)] = 123, - [SMALL_STATE(7)] = 151, - [SMALL_STATE(8)] = 166, - [SMALL_STATE(9)] = 181, - [SMALL_STATE(10)] = 196, - [SMALL_STATE(11)] = 211, - [SMALL_STATE(12)] = 226, - [SMALL_STATE(13)] = 244, - [SMALL_STATE(14)] = 259, - [SMALL_STATE(15)] = 269, - [SMALL_STATE(16)] = 279, - [SMALL_STATE(17)] = 297, - [SMALL_STATE(18)] = 309, - [SMALL_STATE(19)] = 321, - [SMALL_STATE(20)] = 333, - [SMALL_STATE(21)] = 351, - [SMALL_STATE(22)] = 361, - [SMALL_STATE(23)] = 371, - [SMALL_STATE(24)] = 383, - [SMALL_STATE(25)] = 395, - [SMALL_STATE(26)] = 405, - [SMALL_STATE(27)] = 417, - [SMALL_STATE(28)] = 427, - [SMALL_STATE(29)] = 449, - [SMALL_STATE(30)] = 461, - [SMALL_STATE(31)] = 479, - [SMALL_STATE(32)] = 491, - [SMALL_STATE(33)] = 501, - [SMALL_STATE(34)] = 511, - [SMALL_STATE(35)] = 521, - [SMALL_STATE(36)] = 533, - [SMALL_STATE(37)] = 551, - [SMALL_STATE(38)] = 561, - [SMALL_STATE(39)] = 571, - [SMALL_STATE(40)] = 581, - [SMALL_STATE(41)] = 593, - [SMALL_STATE(42)] = 611, - [SMALL_STATE(43)] = 621, - [SMALL_STATE(44)] = 633, - [SMALL_STATE(45)] = 643, - [SMALL_STATE(46)] = 660, - [SMALL_STATE(47)] = 674, - [SMALL_STATE(48)] = 688, - [SMALL_STATE(49)] = 702, - [SMALL_STATE(50)] = 710, - [SMALL_STATE(51)] = 718, - [SMALL_STATE(52)] = 726, - [SMALL_STATE(53)] = 736, - [SMALL_STATE(54)] = 743, - [SMALL_STATE(55)] = 750, - [SMALL_STATE(56)] = 757, - [SMALL_STATE(57)] = 762, - [SMALL_STATE(58)] = 767, - [SMALL_STATE(59)] = 772, - [SMALL_STATE(60)] = 779, - [SMALL_STATE(61)] = 783, - [SMALL_STATE(62)] = 787, - [SMALL_STATE(63)] = 791, - [SMALL_STATE(64)] = 795, - [SMALL_STATE(65)] = 799, - [SMALL_STATE(66)] = 803, - [SMALL_STATE(67)] = 807, - [SMALL_STATE(68)] = 811, - [SMALL_STATE(69)] = 815, - [SMALL_STATE(70)] = 819, - [SMALL_STATE(71)] = 823, - [SMALL_STATE(72)] = 827, - [SMALL_STATE(73)] = 831, - [SMALL_STATE(74)] = 835, - [SMALL_STATE(75)] = 839, - [SMALL_STATE(76)] = 843, - [SMALL_STATE(77)] = 847, - [SMALL_STATE(78)] = 851, - [SMALL_STATE(79)] = 855, - [SMALL_STATE(80)] = 859, - [SMALL_STATE(81)] = 863, + [SMALL_STATE(3)] = 35, + [SMALL_STATE(4)] = 70, + [SMALL_STATE(5)] = 104, + [SMALL_STATE(6)] = 133, + [SMALL_STATE(7)] = 162, + [SMALL_STATE(8)] = 178, + [SMALL_STATE(9)] = 194, + [SMALL_STATE(10)] = 210, + [SMALL_STATE(11)] = 226, + [SMALL_STATE(12)] = 242, + [SMALL_STATE(13)] = 261, + [SMALL_STATE(14)] = 277, + [SMALL_STATE(15)] = 290, + [SMALL_STATE(16)] = 301, + [SMALL_STATE(17)] = 312, + [SMALL_STATE(18)] = 325, + [SMALL_STATE(19)] = 336, + [SMALL_STATE(20)] = 349, + [SMALL_STATE(21)] = 362, + [SMALL_STATE(22)] = 373, + [SMALL_STATE(23)] = 384, + [SMALL_STATE(24)] = 397, + [SMALL_STATE(25)] = 408, + [SMALL_STATE(26)] = 421, + [SMALL_STATE(27)] = 432, + [SMALL_STATE(28)] = 443, + [SMALL_STATE(29)] = 456, + [SMALL_STATE(30)] = 467, + [SMALL_STATE(31)] = 478, + [SMALL_STATE(32)] = 489, + [SMALL_STATE(33)] = 502, + [SMALL_STATE(34)] = 515, + [SMALL_STATE(35)] = 526, + [SMALL_STATE(36)] = 537, + [SMALL_STATE(37)] = 548, + [SMALL_STATE(38)] = 559, + [SMALL_STATE(39)] = 572, + [SMALL_STATE(40)] = 583, + [SMALL_STATE(41)] = 596, + [SMALL_STATE(42)] = 609, + [SMALL_STATE(43)] = 627, + [SMALL_STATE(44)] = 649, + [SMALL_STATE(45)] = 667, + [SMALL_STATE(46)] = 685, + [SMALL_STATE(47)] = 703, + [SMALL_STATE(48)] = 721, + [SMALL_STATE(49)] = 738, + [SMALL_STATE(50)] = 752, + [SMALL_STATE(51)] = 766, + [SMALL_STATE(52)] = 780, + [SMALL_STATE(53)] = 790, + [SMALL_STATE(54)] = 798, + [SMALL_STATE(55)] = 806, + [SMALL_STATE(56)] = 814, + [SMALL_STATE(57)] = 821, + [SMALL_STATE(58)] = 828, + [SMALL_STATE(59)] = 835, + [SMALL_STATE(60)] = 842, + [SMALL_STATE(61)] = 847, + [SMALL_STATE(62)] = 854, + [SMALL_STATE(63)] = 859, + [SMALL_STATE(64)] = 864, + [SMALL_STATE(65)] = 868, + [SMALL_STATE(66)] = 872, + [SMALL_STATE(67)] = 876, + [SMALL_STATE(68)] = 880, + [SMALL_STATE(69)] = 884, + [SMALL_STATE(70)] = 888, + [SMALL_STATE(71)] = 892, + [SMALL_STATE(72)] = 896, + [SMALL_STATE(73)] = 900, + [SMALL_STATE(74)] = 904, + [SMALL_STATE(75)] = 908, + [SMALL_STATE(76)] = 912, + [SMALL_STATE(77)] = 916, + [SMALL_STATE(78)] = 920, + [SMALL_STATE(79)] = 924, + [SMALL_STATE(80)] = 928, + [SMALL_STATE(81)] = 932, + [SMALL_STATE(82)] = 936, + [SMALL_STATE(83)] = 940, + [SMALL_STATE(84)] = 944, + [SMALL_STATE(85)] = 948, + [SMALL_STATE(86)] = 952, + [SMALL_STATE(87)] = 956, }; static const TSParseActionEntry ts_parse_actions[] = { [0] = {.entry = {.count = 0, .reusable = false}}, [1] = {.entry = {.count = 1, .reusable = false}}, RECOVER(), [3] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 0, 0, 0), - [5] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), - [7] = {.entry = {.count = 1, .reusable = true}}, SHIFT(76), - [9] = {.entry = {.count = 1, .reusable = true}}, SHIFT(54), - [11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(53), - [13] = {.entry = {.count = 1, .reusable = true}}, SHIFT(45), - [15] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2, 0, 0), - [17] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2, 0, 0), SHIFT_REPEAT(2), - [20] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2, 0, 0), SHIFT_REPEAT(76), - [23] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2, 0, 0), SHIFT_REPEAT(54), - [26] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2, 0, 0), SHIFT_REPEAT(53), - [29] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2, 0, 0), SHIFT_REPEAT(45), - [32] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 1, 0, 0), - [34] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2), - [36] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_singleline_entry, 4, 0, 7), - [38] = {.entry = {.count = 1, .reusable = true}}, SHIFT(34), - [40] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7), - [42] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9), - [44] = {.entry = {.count = 1, .reusable = true}}, SHIFT(11), - [46] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8), - [48] = {.entry = {.count = 1, .reusable = true}}, SHIFT(10), - [50] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_details, 1, 0, 15), - [52] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_details_repeat1, 2, 0, 18), - [54] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_details_repeat1, 2, 0, 18), SHIFT_REPEAT(7), - [57] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_details_repeat1, 2, 0, 18), SHIFT_REPEAT(9), - [60] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_details_repeat1, 2, 0, 18), SHIFT_REPEAT(11), - [63] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_details_repeat1, 2, 0, 18), SHIFT_REPEAT(8), - [66] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_details_repeat1, 2, 0, 18), SHIFT_REPEAT(10), - [69] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_details_repeat1, 1, 0, 9), - [71] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_details_repeat1, 1, 0, 12), - [73] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_details_repeat1, 1, 0, 10), - [75] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_details_repeat1, 1, 0, 13), - [77] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_details_repeat1, 1, 0, 11), - [79] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_weigh_in_entry, 3, 0, 2), - [81] = {.entry = {.count = 1, .reusable = true}}, SHIFT(22), - [83] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13), - [85] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23), - [87] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_weigh_in_entry, 4, 0, 4), - [89] = {.entry = {.count = 1, .reusable = true}}, SHIFT(44), - [91] = {.entry = {.count = 1, .reusable = true}}, SHIFT(31), - [93] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_block, 6, 0, 3), - [95] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_session_block, 9, 0, 19), - [97] = {.entry = {.count = 1, .reusable = false}}, SHIFT(19), - [99] = {.entry = {.count = 1, .reusable = true}}, SHIFT(61), - [101] = {.entry = {.count = 1, .reusable = false}}, SHIFT(71), - [103] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_note_entry, 3, 0, 1), - [105] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21), - [107] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_exercise_block, 4, 0, 3), - [109] = {.entry = {.count = 1, .reusable = true}}, SHIFT(25), - [111] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_block, 4, 0, 3), - [113] = {.entry = {.count = 1, .reusable = true}}, SHIFT(27), - [115] = {.entry = {.count = 1, .reusable = false}}, SHIFT(29), - [117] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_note_entry, 4, 0, 1), - [119] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_weigh_in_entry, 4, 0, 2), - [121] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_weigh_in_entry, 4, 0, 5), - [123] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32), - [125] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_entry, 4, 0, 6), - [127] = {.entry = {.count = 1, .reusable = true}}, SHIFT(33), - [129] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_exercise_block, 5, 0, 3), - [131] = {.entry = {.count = 1, .reusable = true}}, SHIFT(37), - [133] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_block, 5, 0, 3), - [135] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14), - [137] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_session_block_repeat1, 2, 0, 0), - [139] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_session_block_repeat1, 2, 0, 0), SHIFT_REPEAT(61), - [142] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_session_block_repeat1, 2, 0, 0), SHIFT_REPEAT(71), - [145] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_weigh_in_entry, 5, 0, 8), - [147] = {.entry = {.count = 1, .reusable = true}}, SHIFT(38), - [149] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_weigh_in_entry, 5, 0, 5), - [151] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_entry, 5, 0, 6), - [153] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_singleline_entry, 5, 0, 7), - [155] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_singleline_entry, 5, 0, 14), - [157] = {.entry = {.count = 1, .reusable = true}}, SHIFT(39), - [159] = {.entry = {.count = 1, .reusable = false}}, SHIFT(40), - [161] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_exercise_block, 6, 0, 3), - [163] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_weigh_in_entry, 6, 0, 8), - [165] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_singleline_entry, 6, 0, 14), - [167] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_session_block, 7, 0, 19), - [169] = {.entry = {.count = 1, .reusable = true}}, SHIFT(42), - [171] = {.entry = {.count = 1, .reusable = false}}, SHIFT(43), - [173] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_session_block, 8, 0, 19), - [175] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15), - [177] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_weigh_in_entry, 5, 0, 4), - [179] = {.entry = {.count = 1, .reusable = true}}, SHIFT(70), - [181] = {.entry = {.count = 1, .reusable = true}}, SHIFT(60), - [183] = {.entry = {.count = 1, .reusable = true}}, SHIFT(78), - [185] = {.entry = {.count = 1, .reusable = true}}, SHIFT(73), - [187] = {.entry = {.count = 1, .reusable = false}}, SHIFT(18), - [189] = {.entry = {.count = 1, .reusable = false}}, SHIFT(58), - [191] = {.entry = {.count = 1, .reusable = false}}, SHIFT(26), - [193] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_exercise_block_repeat1, 2, 0, 0), - [195] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_exercise_block_repeat1, 2, 0, 0), SHIFT_REPEAT(58), + [5] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2), + [7] = {.entry = {.count = 1, .reusable = true}}, SHIFT(58), + [9] = {.entry = {.count = 1, .reusable = true}}, SHIFT(64), + [11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(57), + [13] = {.entry = {.count = 1, .reusable = true}}, SHIFT(56), + [15] = {.entry = {.count = 1, .reusable = true}}, SHIFT(48), + [17] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 1, 0, 0), + [19] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), + [21] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2, 0, 0), + [23] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2, 0, 0), SHIFT_REPEAT(3), + [26] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2, 0, 0), SHIFT_REPEAT(58), + [29] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2, 0, 0), SHIFT_REPEAT(64), + [32] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2, 0, 0), SHIFT_REPEAT(57), + [35] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2, 0, 0), SHIFT_REPEAT(56), + [38] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2, 0, 0), SHIFT_REPEAT(48), + [41] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_singleline_entry, 4, 0, 8), + [43] = {.entry = {.count = 1, .reusable = true}}, SHIFT(31), + [45] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8), + [47] = {.entry = {.count = 1, .reusable = true}}, SHIFT(11), + [49] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9), + [51] = {.entry = {.count = 1, .reusable = true}}, SHIFT(10), + [53] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7), + [55] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_details, 1, 0, 16), + [57] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_details_repeat1, 2, 0, 19), + [59] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_details_repeat1, 2, 0, 19), SHIFT_REPEAT(8), + [62] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_details_repeat1, 2, 0, 19), SHIFT_REPEAT(11), + [65] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_details_repeat1, 2, 0, 19), SHIFT_REPEAT(9), + [68] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_details_repeat1, 2, 0, 19), SHIFT_REPEAT(10), + [71] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_details_repeat1, 2, 0, 19), SHIFT_REPEAT(7), + [74] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_details_repeat1, 1, 0, 14), + [76] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_details_repeat1, 1, 0, 10), + [78] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_details_repeat1, 1, 0, 12), + [80] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_details_repeat1, 1, 0, 13), + [82] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_details_repeat1, 1, 0, 11), + [84] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_weigh_in_entry, 3, 0, 3), + [86] = {.entry = {.count = 1, .reusable = true}}, SHIFT(22), + [88] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13), + [90] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14), + [92] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_weigh_in_entry, 4, 0, 5), + [94] = {.entry = {.count = 1, .reusable = true}}, SHIFT(27), + [96] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), + [98] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_weigh_in_entry, 4, 0, 6), + [100] = {.entry = {.count = 1, .reusable = true}}, SHIFT(29), + [102] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_session_block, 9, 0, 20), + [104] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_include_directive, 3, 0, 1), + [106] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_note_entry, 3, 0, 2), + [108] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21), + [110] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_file_path, 3, 0, 0), + [112] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_exercise_block, 4, 0, 4), + [114] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), + [116] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_block, 4, 0, 4), + [118] = {.entry = {.count = 1, .reusable = true}}, SHIFT(26), + [120] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_note_entry, 4, 0, 2), + [122] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_weigh_in_entry, 4, 0, 3), + [124] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_entry, 4, 0, 7), + [126] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30), + [128] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_exercise_block, 5, 0, 4), + [130] = {.entry = {.count = 1, .reusable = true}}, SHIFT(34), + [132] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_block, 5, 0, 4), + [134] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_weigh_in_entry, 5, 0, 5), + [136] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_weigh_in_entry, 5, 0, 9), + [138] = {.entry = {.count = 1, .reusable = true}}, SHIFT(36), + [140] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_weigh_in_entry, 5, 0, 6), + [142] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_entry, 5, 0, 7), + [144] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_singleline_entry, 5, 0, 8), + [146] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_include_directive, 2, 0, 1), + [148] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16), + [150] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_singleline_entry, 5, 0, 15), + [152] = {.entry = {.count = 1, .reusable = true}}, SHIFT(37), + [154] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_exercise_block, 6, 0, 4), + [156] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_block, 6, 0, 4), + [158] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_weigh_in_entry, 6, 0, 9), + [160] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_singleline_entry, 6, 0, 15), + [162] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_session_block, 7, 0, 20), + [164] = {.entry = {.count = 1, .reusable = true}}, SHIFT(39), + [166] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_session_block, 8, 0, 20), + [168] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15), + [170] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35), + [172] = {.entry = {.count = 1, .reusable = false}}, SHIFT(20), + [174] = {.entry = {.count = 1, .reusable = true}}, SHIFT(78), + [176] = {.entry = {.count = 1, .reusable = false}}, SHIFT(74), + [178] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_session_block_repeat1, 2, 0, 0), + [180] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_session_block_repeat1, 2, 0, 0), SHIFT_REPEAT(78), + [183] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_session_block_repeat1, 2, 0, 0), SHIFT_REPEAT(74), + [186] = {.entry = {.count = 1, .reusable = false}}, SHIFT(38), + [188] = {.entry = {.count = 1, .reusable = false}}, SHIFT(40), + [190] = {.entry = {.count = 1, .reusable = false}}, SHIFT(41), + [192] = {.entry = {.count = 1, .reusable = true}}, SHIFT(77), + [194] = {.entry = {.count = 1, .reusable = true}}, SHIFT(86), + [196] = {.entry = {.count = 1, .reusable = true}}, SHIFT(69), [198] = {.entry = {.count = 1, .reusable = true}}, SHIFT(81), - [200] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_note_line, 3, 0, 17), - [202] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_note_line, 3, 0, 17), - [204] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_item_line, 4, 0, 21), - [206] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_item_line, 4, 0, 21), - [208] = {.entry = {.count = 1, .reusable = false}}, SHIFT(57), - [210] = {.entry = {.count = 1, .reusable = true}}, SHIFT(65), - [212] = {.entry = {.count = 1, .reusable = true}}, SHIFT(80), - [214] = {.entry = {.count = 1, .reusable = true}}, SHIFT(58), - [216] = {.entry = {.count = 1, .reusable = true}}, SHIFT(71), - [218] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_metadata_line, 4, 0, 20), - [220] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_metadata_line, 3, 0, 16), - [222] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_identifier, 1, 0, 0), - [224] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12), - [226] = {.entry = {.count = 1, .reusable = true}}, SHIFT(64), - [228] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16), - [230] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), - [232] = {.entry = {.count = 1, .reusable = true}}, SHIFT(50), - [234] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_text_until_newline, 1, 0, 0), - [236] = {.entry = {.count = 1, .reusable = true}}, SHIFT(56), - [238] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), - [240] = {.entry = {.count = 1, .reusable = true}}, SHIFT(52), - [242] = {.entry = {.count = 1, .reusable = true}}, SHIFT(51), - [244] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17), - [246] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_item, 1, 0, 0), - [248] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), - [250] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_flag, 1, 0, 0), - [252] = {.entry = {.count = 1, .reusable = true}}, SHIFT(36), - [254] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), - [256] = {.entry = {.count = 1, .reusable = true}}, SHIFT(77), - [258] = {.entry = {.count = 1, .reusable = true}}, SHIFT(49), - [260] = {.entry = {.count = 1, .reusable = true}}, SHIFT(67), - [262] = {.entry = {.count = 1, .reusable = true}}, SHIFT(46), - [264] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_name, 1, 0, 0), + [200] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_exercise_block_repeat1, 2, 0, 0), + [202] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_exercise_block_repeat1, 2, 0, 0), SHIFT_REPEAT(62), + [205] = {.entry = {.count = 1, .reusable = false}}, SHIFT(19), + [207] = {.entry = {.count = 1, .reusable = false}}, SHIFT(62), + [209] = {.entry = {.count = 1, .reusable = false}}, SHIFT(25), + [211] = {.entry = {.count = 1, .reusable = false}}, SHIFT(60), + [213] = {.entry = {.count = 1, .reusable = true}}, SHIFT(71), + [215] = {.entry = {.count = 1, .reusable = true}}, SHIFT(87), + [217] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_note_line, 3, 0, 18), + [219] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_note_line, 3, 0, 18), + [221] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_item_line, 4, 0, 22), + [223] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_item_line, 4, 0, 22), + [225] = {.entry = {.count = 1, .reusable = true}}, SHIFT(79), + [227] = {.entry = {.count = 1, .reusable = true}}, SHIFT(62), + [229] = {.entry = {.count = 1, .reusable = true}}, SHIFT(83), + [231] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_metadata_line, 3, 0, 17), + [233] = {.entry = {.count = 1, .reusable = true}}, SHIFT(74), + [235] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_identifier, 1, 0, 0), + [237] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_metadata_line, 4, 0, 21), + [239] = {.entry = {.count = 1, .reusable = true}}, SHIFT(65), + [241] = {.entry = {.count = 1, .reusable = true}}, SHIFT(53), + [243] = {.entry = {.count = 1, .reusable = true}}, SHIFT(42), + [245] = {.entry = {.count = 1, .reusable = true}}, SHIFT(45), + [247] = {.entry = {.count = 1, .reusable = true}}, SHIFT(50), + [249] = {.entry = {.count = 1, .reusable = true}}, SHIFT(70), + [251] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23), + [253] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_text_until_newline, 1, 0, 0), + [255] = {.entry = {.count = 1, .reusable = true}}, SHIFT(63), + [257] = {.entry = {.count = 1, .reusable = true}}, SHIFT(52), + [259] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_item, 1, 0, 0), + [261] = {.entry = {.count = 1, .reusable = true}}, SHIFT(55), + [263] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), + [265] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17), + [267] = {.entry = {.count = 1, .reusable = true}}, SHIFT(82), + [269] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_name, 1, 0, 0), + [271] = {.entry = {.count = 1, .reusable = true}}, SHIFT(43), + [273] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_flag, 1, 0, 0), + [275] = {.entry = {.count = 1, .reusable = true}}, SHIFT(54), + [277] = {.entry = {.count = 1, .reusable = true}}, SHIFT(85), + [279] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), + [281] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18), + [283] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12), }; #ifdef __cplusplus diff --git a/tree-sitter-ox/test/corpus/include_directive.txt b/tree-sitter-ox/test/corpus/include_directive.txt new file mode 100644 index 0000000..703ab06 --- /dev/null +++ b/tree-sitter-ox/test/corpus/include_directive.txt @@ -0,0 +1,60 @@ +================== +Single include +================== + +@include "other.ox" + +--- + +(source_file + (include_directive + path: (file_path))) + +================== +Multiple includes +================== + +@include "week1.ox" +@include "week2.ox" + +--- + +(source_file + (include_directive + path: (file_path)) + (include_directive + path: (file_path))) + +================== +Include mixed with entries +================== + +# Week 1 +@include "week1.ox" +2025-01-10 * pullups: BW 5x10 + +--- + +(source_file + (comment) + (include_directive + path: (file_path)) + (singleline_entry + date: (date) + flag: (flag) + item: (item) + details: (details + weight: (weight) + rep_scheme: (rep_scheme)))) + +================== +Include with path containing directories +================== + +@include "logs/2025/january.ox" + +--- + +(source_file + (include_directive + path: (file_path)))