98 lines
5.8 KiB
Markdown
98 lines
5.8 KiB
Markdown
---
|
|
Title: Stack Language Specification
|
|
Prev:
|
|
Next:
|
|
---
|
|
|
|
# Stack Language Specification
|
|
|
|
**Version**: 0.8.2
|
|
**Status**: Draft Specification
|
|
**Changes**:
|
|
- 0.5 (AI)
|
|
1. **Escape sequences** - Added a complete list of escape sequences for string literals
|
|
2. **Type Tuples** - Defined them as function signatures representing stack effects
|
|
3. **Control flow TokenStrings** - Clarified that `if`, `while`, `match`, etc. use TokenStrings
|
|
4. **Generic constructs** - Clarified that generics need trait constraints when operations are performed
|
|
5. **Stack manipulation traits** - Combined into a single `Stackable` trait
|
|
6. **Size trait** - Added proper definition inheriting from `Addable`, `Comparable`, and `Convertible`
|
|
7. **Empty traits** - Clarified that traits can be empty (especially when used with inheritance)
|
|
8. **Trait inheritance** - Fixed syntax to require both `inher` and `trait` declarations
|
|
9. **Array combinators** - Clarified that the functions inside parse their TokenStrings
|
|
10. **`::` in TokenStrings** - Clarified it should NOT be used in trait/impl contexts
|
|
- 0.5.1 (Human)
|
|
1. Created TODOs
|
|
2. Made various corrections (not everything was corrected)
|
|
3. Reviewed and corrected some code blocks
|
|
4. Made a few adjustments manually
|
|
- 0.6 (AI)
|
|
1. **Operator descriptions** - Added natural language descriptions for all built-in operators
|
|
2. **Operators vs Functions** - Clarified distinction and naming rules
|
|
3. **Generic trait syntax** - Documented `<>` syntax for generic traits
|
|
4. **Generic trait inheritance** - Clarified rules for inheriting from generic traits
|
|
5. **Code block types** - Distinguished actual language definitions from examples
|
|
6. **Trait appendix** - Created comprehensive trait definitions appendix
|
|
7. **TokenString contexts** - Listed all control flow operators and their parsing behavior
|
|
8. **Lambda operator** - Added specification for lambda operator
|
|
9. **Type parameter enforcement** - Documented current parsing behavior
|
|
10. **Identifier literal requirements** - Specified `::` rules for different contexts
|
|
11. **Trait implementation rules** - Clarified implementation semantics
|
|
12. **Type conversions** - Changed to explicit conversion functions
|
|
13. **Memory management** - Moved to appendix as future feature
|
|
14. **Module system** - Added appendix entry for future imports
|
|
15. **Examples section** - Moved to appendix
|
|
16. **Syntax summary** - Moved to appendix and expanded
|
|
- 0.6.1 (AI)
|
|
1. **Variadic arguments** - Decision: Use array syntax for variable arguments (no special variadic syntax yet)
|
|
2. **Inheritance before trait** - Decision: Yes, inheritance declarations must come before trait definition
|
|
3. **`inher` operator** - Decision: No, merge inheritance into trait operator (removed `inher`)
|
|
4. **Separate `inher` vs `impl`** - Decision: Keep them separate (impl is for implementations only)
|
|
- 0.6.2 (Human)
|
|
1. Created TODOs
|
|
2. Made various corrections (not everything was corrected)
|
|
3. Reviewed and corrected some code blocks
|
|
4. Made a few adjustments manually
|
|
5. Reversed removing `inher`
|
|
- 0.7 (AI)
|
|
1. **Operator definition** - Clarified that operators can be user/library defined via trait implementation
|
|
2. **Generic function syntax** - Fixed to use trait constraints in type tuple, not generic parameters
|
|
3. **Variable arguments with Iterable** - Changed array syntax to Iterable trait for variable args
|
|
4. **Example classifications** - Cleaned up "Actual Language Definitions" vs examples distinction
|
|
5. **Struct field access** - Clarified that get and set consume their arguments
|
|
6. **Section 6 rename** - Renamed "Operators (Postfix)" to "Built-in Operators"
|
|
7. **Module syntax** - Added `::` prefix for module imports
|
|
8. **Module alias options** - Added multiple alias syntax options
|
|
- 0.7.1 (Human)
|
|
1. Formatting changes
|
|
- 0.7.2 (Human)
|
|
1. Removed AI editing restrictions of reviewed code blocks
|
|
- 0.8 (AI)
|
|
1. **Document reorganization** - Restructured for user-focused learning
|
|
2. **Section consolidation** - Moved implementation details to appendices
|
|
3. **Minimal duplication** - Added cross-references instead of repeating content
|
|
4. **Shorter sections** - Split large sections into focused subsections
|
|
5. **New appendices** - Added Standard Library and Operator references
|
|
6. **Tutorial content** - Added beginner tutorials to Appendix G
|
|
7. **Trait reference** - Consolidated all trait definitions in Appendix B
|
|
8. **Grammar simplification** - Referenced Implementable trait instead of repeating
|
|
- 0.8.1 (Human)
|
|
1. Added links
|
|
- 0.8.2 (AI)
|
|
1. **Constants** - Added constant definition syntax and semantics
|
|
2. **Enhanced literals** - Added underscore separators, character literals, octal syntax
|
|
3. **Mathematical functions** - Added sqrt, abs, trig functions, rounding, min/max
|
|
4. **Randomness** - Added rand and seed operators
|
|
5. **Array enhancements** - Added typed array syntax and arrays of structs
|
|
6. **Collection functions** - Added zip, enumerate, sum, mean, foldl, foldr
|
|
7. **String utilities** - Added replace, trim, find, starts_with, ends_with, format
|
|
8. **Testing support** - Added assert operator for inline testing
|
|
9. **Reflection operators** - Added type_of and implements for runtime introspection
|
|
10. **Compiler directives** - Added mention of implementation-specific directives
|
|
11. **Type reference** - Added Appendix H with complete type reference
|
|
12. **Math trait** - Added comprehensive Math trait to Appendix B
|
|
13. **Overflow behavior** - Documented integer wrap and float IEEE behavior
|
|
14. **Grammar updates** - Expanded Appendix D with new syntax forms
|
|
15. **Cross-references** - Updated all references to include new operators and functions
|
|
|
|
---
|