grammar-inference-engine/experiments/results/flask_gbnf.json
tobjend e62fffc6e0 feat: grammar_structure_score + min_structure filter
Quantifies how structured a SORE is (0.0=flat bag, 1.0=fully structured).
Flat bags are CRX over-approximations — they list symbols without ordering.

With min_structure=0.2:
  Flask:   2 kept (was 5),  9 dropped
  RAGSAK: 10 kept (was 19), 114 dropped
  FastAPI: 47 kept (was 106), 95 dropped
  Total: 59 useful grammars, 218 noise removed

CLI: --min-structure 0.2 (default: 0, keep all)
2026-07-12 03:02:50 +02:00

92 lines
No EOL
2.3 KiB
JSON

[
{
"package": "examples/celery/src/task_app",
"ext": ".py",
"methods": 11,
"skip": "too_diverse",
"structure_score": 0
},
{
"package": "examples/javascript/tests",
"ext": ".py",
"methods": 5,
"skip": "too_diverse",
"structure_score": 0
},
{
"package": "examples/tutorial/flaskr",
"ext": ".py",
"methods": 18,
"skip": "too_diverse",
"structure_score": 0
},
{
"package": "examples/tutorial/tests",
"ext": ".py",
"methods": 25,
"skip": "too_diverse",
"structure_score": 0
},
{
"package": "src/flask",
"ext": ".py",
"methods": 216,
"skip": "too_diverse",
"structure_score": 0
},
{
"package": "src/flask/json",
"ext": ".py",
"methods": 50,
"skip": "low_structure",
"structure_score": 0.042105263157894736
},
{
"package": "src/flask/sansio",
"ext": ".py",
"methods": 102,
"skip": "low_structure",
"structure_score": 0.009523809523809525
},
{
"package": "tests",
"ext": ".py",
"methods": 962,
"skip": "low_structure",
"structure_score": 0.021897810218978103
},
{
"package": "tests/test_apps",
"ext": ".py",
"methods": 3,
"skip": "too_diverse",
"structure_score": 0
},
{
"package": "tests/test_apps/blueprintapp/apps",
"ext": ".py",
"methods": 4,
"skip": "",
"structure_score": 0.2857142857142857,
"sore": "return.render_template+",
"gbnf": "root ::= \"return\" \"render_template\"+",
"gbnf_ok": true
},
{
"package": "tests/type_check",
"ext": ".py",
"methods": 24,
"skip": "",
"structure_score": 0.5597014925373135,
"sore": "def?.(Generator+encode+for+in+iter+range+return+show+str+t+x+yield)+?.stream_template+?.(Response+code+jsonify)+?.render_template+?.HTTPStatus?.name+?.self?.OK?.template_name+?",
"gbnf": "root ::= \"def\"? (\"Generator\" | \"encode\" | \"for\" | \"in\" | \"iter\" | \"range\" | \"return\" | \"show\" | \"str\" | \"t\" | \"x\" | \"yield\")* \"stream_template\"* (\"Response\" | \"code\" | \"jsonify\")* \"render_template\"* \"HTTPStatus\"? \"name\"* \"self\"? \"OK\"? \"template_name\"*",
"gbnf_ok": true
},
{
"package": "(other)",
"ext": ".py",
"methods": 4,
"skip": "",
"structure_score": 0
}
]