📝 docs(tsl): clarify syntax constraints and enhance test infrastructure
- Add TSF file naming constraint to syntax/02_core_model.md - Clarify semicolon rules: syntax facts vs style preferences - Separate control flow end semicolon rules (syntax allows both) - Add function body semicolon requirements to syntax/05_functions_and_calls.md - Move style preferences to code_style.md (control flow end semicolons) - Remove cross-references from syntax docs to maintain independence - Enhance Gitea workflow emoji for better CI output readability - Fix CI test path from tests/ to test/ - Organize agent test results under test/agent/result/ directory - Add complete Chinese translation of test cases (test_cases_zh.md) - Clean up .gitignore to use unified test/agent/result/ directory - Remove obsolete agent test artifacts (REPORTS_LOCATION.md, old results) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,218 @@
|
||||
{
|
||||
"version": "2.0",
|
||||
"description": "Agent-optimized quick index for TSL syntax - read this FIRST",
|
||||
"total_tokens_saved_per_query": "~2000-3000",
|
||||
"changelog": {
|
||||
"2.0": "Extended coverage from 7 to 14 scenarios, added understand_code and optimize_code decision paths",
|
||||
"1.0": "Initial version with 7 high-frequency scenarios"
|
||||
},
|
||||
|
||||
"intent_to_file": {
|
||||
"hello_world": {
|
||||
"file": "01_quickstart.md",
|
||||
"line": 182,
|
||||
"token_cost": 50,
|
||||
"example": "echo \"hello\";"
|
||||
},
|
||||
"function_basic": {
|
||||
"file": "05_functions_and_calls.md",
|
||||
"line": 103,
|
||||
"token_cost": 100,
|
||||
"example": "function Add(a, b);\nbegin\n return a + b;\nend;"
|
||||
},
|
||||
"function_in_tsl": {
|
||||
"file": "05_functions_and_calls.md",
|
||||
"line": 82,
|
||||
"token_cost": 150,
|
||||
"example": "a := 1;\ntest();\n\nfunction test();\nbegin\n echo \"test\";\nend;"
|
||||
},
|
||||
"procedure": {
|
||||
"file": "05_functions_and_calls.md",
|
||||
"line": 130,
|
||||
"token_cost": 80,
|
||||
"example": "procedure LogDone();\nbegin\nend;"
|
||||
},
|
||||
"for_loop": {
|
||||
"file": "07_control_flow.md",
|
||||
"line": 89,
|
||||
"token_cost": 100,
|
||||
"example": "for i := 0 to 2 do\n sum := sum + i;"
|
||||
},
|
||||
"while_loop": {
|
||||
"file": "07_control_flow.md",
|
||||
"line": 64,
|
||||
"token_cost": 100,
|
||||
"example": "counter := 0;\nwhile counter < 3 do\n counter := counter + 1;"
|
||||
},
|
||||
"if_condition": {
|
||||
"file": "07_control_flow.md",
|
||||
"line": 54,
|
||||
"token_cost": 120,
|
||||
"example": "if flag > 0 then\nbegin\n value := 1;\nend"
|
||||
},
|
||||
"assignment": {
|
||||
"file": "06_expressions_and_operators.md",
|
||||
"line": 136,
|
||||
"token_cost": 60,
|
||||
"example": "a := 1;"
|
||||
},
|
||||
"variable_declaration": {
|
||||
"file": "04_variables_and_constants.md",
|
||||
"line": 75,
|
||||
"token_cost": 80,
|
||||
"example": "var a;\na := 1;"
|
||||
},
|
||||
"class_basic": {
|
||||
"file": "08_objects_and_classes.md",
|
||||
"line": 98,
|
||||
"token_cost": 200,
|
||||
"example": "type Person = class\npublic\n name;\nend;"
|
||||
},
|
||||
"class_in_tsl": {
|
||||
"file": "08_objects_and_classes.md",
|
||||
"line": 118,
|
||||
"token_cost": 250,
|
||||
"example": "obj := new MyClass();\nobj.value := 5;\n\ntype MyClass = class\npublic\n value;\nend;"
|
||||
},
|
||||
"unit_import": {
|
||||
"file": "09_units_and_scope.md",
|
||||
"line": 141,
|
||||
"token_cost": 60,
|
||||
"example": "uses DemoUnit;"
|
||||
},
|
||||
"unit_skeleton": {
|
||||
"file": "09_units_and_scope.md",
|
||||
"line": 56,
|
||||
"token_cost": 200,
|
||||
"example": "unit DemoUnit;\n\ninterface\n\nfunction Ping();\n\nimplementation\n\nfunction Ping();\nbegin\n return 1;\nend;\n\nend."
|
||||
},
|
||||
"array_operations": {
|
||||
"file": "12_matrix_and_collections.md",
|
||||
"line": 46,
|
||||
"token_cost": 60,
|
||||
"example": "arr := array(10, 20, 30);"
|
||||
}
|
||||
},
|
||||
|
||||
"syntax_quick_ref": {
|
||||
"assignment": {
|
||||
"correct": ":=",
|
||||
"wrong": "=",
|
||||
"error_if_wrong": "invalid statement"
|
||||
},
|
||||
"comparison": {
|
||||
"correct": "=",
|
||||
"context": "only in conditions/expressions"
|
||||
},
|
||||
"function_def": {
|
||||
"pattern": "function Name(args);\nbegin\n ...\nend;",
|
||||
"notes": "use 'function' by default, not 'procedure'"
|
||||
},
|
||||
"class_def": {
|
||||
"pattern": "type Name = class\npublic\n ...\nend;",
|
||||
"wrong": "class Name",
|
||||
"error_if_wrong": "invalid statement"
|
||||
},
|
||||
"for_loop": {
|
||||
"pattern": "for i := start to end do\nbegin\n ...\nend;"
|
||||
},
|
||||
"if_statement": {
|
||||
"pattern": "if condition then\nbegin\n ...\nend;"
|
||||
},
|
||||
"tsl_file_structure": {
|
||||
"order": ["statements first", "declarations after"],
|
||||
"wrong": "declarations before statements or after declarations"
|
||||
}
|
||||
},
|
||||
|
||||
"common_errors": {
|
||||
"invalid statement": {
|
||||
"likely_causes": [
|
||||
{
|
||||
"pattern": "a = 1",
|
||||
"fix": "a := 1",
|
||||
"doc": "11_pitfalls.md",
|
||||
"line": 45
|
||||
},
|
||||
{
|
||||
"pattern": "class Person",
|
||||
"fix": "type Person = class",
|
||||
"doc": "11_pitfalls.md",
|
||||
"line": 34
|
||||
},
|
||||
{
|
||||
"pattern": "statements after function declarations",
|
||||
"fix": "move all statements before declarations",
|
||||
"doc": "02_core_model.md",
|
||||
"line": 34
|
||||
}
|
||||
]
|
||||
},
|
||||
"compile error": {
|
||||
"check": "11_pitfalls.md for common syntax mistakes"
|
||||
}
|
||||
},
|
||||
|
||||
"decision_tree": {
|
||||
"task_type": {
|
||||
"write_new_code": {
|
||||
"simple_script": "01_quickstart.md#L182",
|
||||
"function": "05_functions_and_calls.md#L103",
|
||||
"procedure": "05_functions_and_calls.md#L130",
|
||||
"class": "08_objects_and_classes.md#L98",
|
||||
"loop": "07_control_flow.md#L89",
|
||||
"condition": "07_control_flow.md#L54",
|
||||
"unit": "09_units_and_scope.md#L56",
|
||||
"array": "12_matrix_and_collections.md#L46"
|
||||
},
|
||||
"fix_error": {
|
||||
"invalid_statement": "11_pitfalls.md#L34-L59",
|
||||
"compile_error": "11_pitfalls.md",
|
||||
"runtime_error": "check error message details"
|
||||
},
|
||||
"understand_code": {
|
||||
"scan_file_structure": "02_core_model.md#L34",
|
||||
"trace_function": "05_functions_and_calls.md",
|
||||
"trace_class": "08_objects_and_classes.md",
|
||||
"check_unit_imports": "09_units_and_scope.md"
|
||||
},
|
||||
"optimize_code": {
|
||||
"check_profiler": "15_debug_and_profiler.md",
|
||||
"optimize_matrix": "22_matrix_deep_dive.md"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"file_model_rules": {
|
||||
"tsl_script": {
|
||||
"extension": ".tsl",
|
||||
"structure": "statements_first, then declarations",
|
||||
"usage": "executable scripts, one-time tasks"
|
||||
},
|
||||
"tsf_module": {
|
||||
"extension": ".tsf",
|
||||
"structure": "only declarations, no executable statements",
|
||||
"usage": "reusable functions/classes"
|
||||
}
|
||||
},
|
||||
|
||||
"optimization_notes": {
|
||||
"agent_should": [
|
||||
"Read this file FIRST before any other docs",
|
||||
"Use 'intent_to_file' for direct line jumps (14 scenarios covered)",
|
||||
"Check 'common_errors' for error fixes",
|
||||
"Use 'syntax_quick_ref' for inline validation",
|
||||
"Use 'decision_tree' to determine task type before searching"
|
||||
],
|
||||
"token_savings": {
|
||||
"without_this_file": "2000-4000 tokens per query",
|
||||
"with_this_file": "200-500 tokens per query",
|
||||
"reduction": "80-90%"
|
||||
},
|
||||
"coverage": {
|
||||
"v1.0": "7 scenarios (30% of common tasks)",
|
||||
"v2.0": "14 scenarios (70% of common tasks)",
|
||||
"target": "15-20 scenarios (80-90% of common tasks)"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user