1. Purpose and scope
Shobdo is a programming language whose keywords, syntax, error messages and tooling are in Bangla. This SRS covers the reference interpreter (v0.1) and lists later goals. Companion document: the PRD (bangla-lang-prd.html). The license is not yet decided.
2. Overall description
- Reference implementation: TypeScript on Node.js, tree-walking interpreter.
- Users: Bangla-speaking learners and developers.
- Constraint: zero budget, free tooling only.
- Source files:
.shobdo(the.শব্দextension is planned).
3. Functional requirements
| ID | Requirement | v0.1 status |
|---|---|---|
| FR-1 | Lex Bangla identifiers, Bangla/Latin digits, strings with {} interpolation, comments | Implemented |
| FR-2 | Latin transliteration keyword aliases | Implemented |
| FR-3 | Variables ধরি, constants ধ্রুব | Implemented |
| FR-4 | Conditionals, while, for-in, break, continue | Implemented |
| FR-5 | Functions, closures, lambdas, default args, recursion | Implemented |
| FR-6 | Classes, single inheritance, উর্ধ্ব, private methods | Implemented |
| FR-7 | try/catch/throw | Implemented |
| FR-8 | Lists, maps, ranges, ভিতরে, ??, ?., ternary | Implemented |
| FR-9 | No implicit truthiness | Implemented |
| FR-10 | Bangla error messages with line numbers and "did you mean" | Implemented (line only, no column caret) |
| FR-11 | Stdlib: output, input, math, string/list/map methods | Partial |
| FR-12 | CLI run and repl | Implemented |
| FR-13 | Traits, structs, মেলাও pattern matching | Not implemented |
| FR-14 | Modules আনো, async/await, পুনঃলেখ checks | Not implemented |
| FR-15 | Formatter, LSP, test runner, package manager | Not implemented |
| FR-16 | Shobdo Web framework | Not implemented |
4. Non-functional requirements
- NFR-1: Unicode NFC normalization of source (done). য় canonicalization and ZWJ/ZWNJ diagnostics: not done.
- NFR-2: Digits display in Bangla by default, switchable with
--latin-digits(done). - NFR-3: Performance targets are not set or measured.
- NFR-4: Grapheme-aware string length and carets: not done (length counts code points).
5. Sample
ধরি বয়স = ২৫
যদি বয়স >= ১৮ { লেখো("প্রাপ্তবয়স্ক") } নাহলে { লেখো("অপ্রাপ্তবয়স্ক") }
কাজ যোগ(ক, খ) { ফেরত ক + খ }
6. Acceptance
v0.1 is accepted when npm test in shobdo/ passes and shobdo run examples/hello.shobdo prints the expected output.