Commit graph

21 commits

Author SHA1 Message Date
Kevin Eady
0fa1b893a0 Update core-changes, break-changes for classes support (#719)
* Format testsuite escript

* Format testsuite pol

* Update docs
Switch "attributes" to "members" to better align with Escript terms.

* Add core-changes, breaking-changes
2024-10-10 18:06:04 +02:00
Kevin Eady
0988c17f29 Add classes documentation (#717)
* Add escript guide docs for classes

* Add ClassInstanceRef to objref docs

* Use objref.dot to generate svg
2024-10-10 18:06:04 +02:00
Kevin Eady
a780712ec7
Add spread operator for array initializers, function calls, and method calls (#684)
* Update grammar

* Update parser and AST generator

* Update semantic analysis, tests

* Handle instruction generation

* Executor implementation
- Instruction `ins_storestackcount`
- Instruction `ins_spread`
- Update listfile tests for new `storestackcount`` instruction

* Add tests targetting resource tracker

* Revert "Executor implementation"

This reverts commit f0caede24179cb11b6d98c8cd1fecd91ce546148.

* New instruction implementation
- Introduce `BSpread` object to manage spreading an object at runtime.

* More tests

* Fix memory leak

* Add test spreading non-arrays

* Add failure reason to bfunc method call
Better than getting uninit

* Core changes; docs + accompanying tests for docs

* Resolve CI annotation warnings
- this statement may fall through

* Fix listfile snapshots due to base rebase, whoops
2024-08-06 23:34:24 +02:00
Kevin Eady
93645f0770
Add variable arguments to user functions (#679)
* Update grammar

* Update parser and AST generator

* Update semantic analysis

* Executor implementation
- Move Executor stack modification logic to BFunctionRef
- Handle user function calls
- Handle expression function calls

* Tests

* Update existing listfile snapshots
- Adds variadic boolean to instruction stack
- Changes instruction counts and offsets

* Fix test issue

* Better implementation of calling user functions

* Add var-args-captures test

* Refactor continuation handling + handle variadic args
- Move stack modifications from make/withContinuation into the executor's handling of the continuation
- Only trim args in continuation call if function is not variadic

* Add var-args-continuation test (via array.filter)

* update escriptguide + formatting, docs

* Fix CI annotations
- '=': conversion from 'size_t' to 'unsigned int', possible loss of data
- declaration of 'continuation' hides previous local declaration
2024-08-04 17:13:30 +02:00
Kevin Eady
d1a1bd3afe
Additional escript array functional methods (#674)
* Implementation change for continuation handling

* Implement array methods find, findIndex, map, reduce

* Add tests

* update filter test for coverage

* update docs

* change implementation to not copy

* update tests; add tests for "polyfill" comparison

* update escript guide
2024-08-02 20:39:32 +02:00
Kevin Eady
f381f46dc3
Add compiler support for function expressions (#671)
* initial poc of function expressions
- update grammar
- mock AST builder to return BBoolean(true) for a func expr
- update prettifier for skeleton implementation

* more skeleton work
create AST class FunctionExpression mimicking boolean value

* create ast UserFunction, add to workspace from functexpr

* can generate instructions

* reorg tests; add test for instructions

* can track FunctionDepth in Variable

* can get captures for funcexprs inside funcs.. tbd if this way of nesting works

* Implement create-functor instruction
- Move function depth from Variable to Variables
- Introduce stacking of `Variables` for function expresions via `FunctionVariableScope`
- Add `TOK_FUNCTOR` instruction for 'create-functor'
- Handle emitting a `FunctionExpression` AST node
- Update `emit.declare_variable` and `emit.access_variable` to account for function captures
- Remove `in_function` from instruction generator, as it is tracked via `UserFunction` stack
- Update tests

* Address Discord comments
- Swap pop param order

* Bubble up captured variables through nested functions

* Improve testing infrastructure; add some test cases

* Fix compilation error

* prepend captures to function parameters in funcref mth_call

* update tests

* move from function{} to @{}

* implementation fix

* some more tests

* update docs

* Some cleanup

* fix CI annotation warning
- 'argument': conversion from 'size_t' to 'VariableIndex', possible loss of data

* Address review comments
- Add `passert_always`
- Use better example in docs

* Some cleanup
- Remove unused functions
2024-07-29 22:30:52 +02:00
Kevin Eady
593cfffb83
Add uninit, true, false keywords to grammar (#596)
* Update grammar

* Update expression handling for uninit

* update existing tests

* Add new tests

* Remove fullpath from escriptgrammar generation comment

* fix tests

* Update eScript guide

* Declare escript version 0x11

* Add core-changes

* Add `true` and `false` to grammar

* true/false implementation

* Fix existing tests

* Add new tests

* Update core changes

* add docs

* Fix BooleanValue::describe_to

* bool optimizations

* optimize uninit

* remove unused var assignments

* Update grammar for case labels for uninit, booleans

* Fix case label handling for uninit, true, false

* Tests

* Fix compiler version display v1.1700000017881393 -> v1.17

* optimize boolean binary operations

* fix unary boolean optimizer

* add boolean, uninit optimizer test

* Use new fmt lib apis

* Fix compiler warning

* really fix warning lol

* Add Executor[Module]::getParam for bools, FindSubstance test
2024-01-20 05:38:25 +01:00
Admin-Yukiko
5b1187c437
Updating the references where standard and optional packages might be placed. (#434)
Since adding /pkg/optional as the new location for optional packages, the eScript guide needed updating.
2021-11-07 10:07:27 +01:00
Kevin Eady
0ca7912fcd
Add support for conditional operator (#387)
* Grammar update

* AST generation

* Emit instructions

* Add initial tests

* Additional tests

* Rename to ConditionalOperator

* Add docs
2021-03-14 23:20:20 +01:00
Kevin Eady
e41f70d72e
Add support for interpolated strings ("interstrings") (#369)
* Update grammar to support interpolated strings

* Struct initializers, case switchs are regular strings

* Initial stub for interpolated string in AST
This splits the previous STRING_LITERAL terminal into a production,
stringLiteral, to handle REGULAR_STRING terminal and interpolatedString
production.

* Change interpolated strings to expressions

* Fix mode handling in grammar

* Grammar fixes
- Fix mode handling in lexer
- Interpolated strings only have one expression

* Can successfully parse, stub compile interstrings
$"He {there + print("hello")}";

* Add formatting string to grammar

* Fix tests, and add test stubs

* Rename curleys to brace; better AST generation

* initial work interstring instruction

* Initial work on formatted string instruction: emit

* Formatted string instruction: execution

* Add simple formatted string test

* Add formatted string test src

* Review changes #1
- Rename `FormattedString` to `FormatExpression`
- Rename overloaded `try_to_format()` to `get_formatted()`

* Review changes part 2
- Rename `InterpolatedString` ast node to `InterpolateString`

* Review changes part 3
- Modify `ins_interpolate_string`

* Review changes part 4
- Remove unused formal parameter

* Add negative tests

* Spruce up positive tests

* Fix braces, escape chars inside interstring

* Fix, add tests for escaped char and double brace

* Address differences for new lines in tests

* Update Escript version

* Make empty expression an error

* Add documentation for interpolated strings

* Quick touchup on docs
2021-03-11 22:48:16 +01:00
Admin-Yukiko
2fe96de2fd
Change "logical" to "bitwise". (#258)
* Change name of "logical" operators AND, OR and XOR to "bitwise".

Co-authored-by: Admin-Yukiko <hopelivesproject@gmail.com>
Co-authored-by: Eric Swanson <eric.the.unicorn@gmail.com>
2020-09-05 10:58:53 +02:00
GIB
6d575ea752 Add documented explaination of Elvis Operator to Racalacs EScript Guide. 2020-05-01 09:14:53 +08:00
Admin-Yukiko
21d4921781 A typo fix and a little formatting changes. (#104)
* My first attempt at implementing 'fame' and 'karma' as character members. I am unable to assign values yet but the Core compiles without errors.

* With help from Nando I fixed the issue. I can now read and write the fame and karma members. I want to verify I entered the code in the prefered "get member" function but it WORKS!

* Commented out all my changes until I can learn how to make fame and karma store internally as a struct etc.

* Messed something up. Even the non struct fame and karma did not work. Reverting back to POL before any of my changes. No fame, no karma.

* Changed: pol.cfg settings HideWarningGump and HideWarningItem to ShowWarningGump and ShowWarningItem. This positive logic is consistent with all other console output settings.
Default is zero (0). The output will not be displayed unless set to one (1).

* Forgot to run buildcorechanges.py prior to commiting the previous commit. This rectifies that.

* Reverting my Dev branch to current polserver master.

* Attempt number 2:
Changed: pol.cfg settings HideWarningGump and HideWarningItem to ShowWarningGump and ShowWarningItem.
This positive logic is consistent with all other console output settings.
Default is zero (0). The output will not be displayed unless set to one (1).

* Set default behaviour for ShowWarningGump and ShowWarningItem to display warnings (1).

* Added ShowWarningGump and ShowWarningItem settings to pol.cfg.example.

* Fixed a typo and did minor formatting changes.
2019-11-13 09:32:55 +01:00
Admin-Yukiko
323f9f18a2
Resubit-Adding new operators and a little reformatting. 2019-11-11 08:36:49 +00:00
Admin\Me
5cd18019c0 Added change log info to the escript.inc for the change made earlier and changed the lLast Updated date. 2019-01-11 04:40:09 -06:00
Admin\Me
c32829597f Added one minor adjustment to the tags for escript.inc 2019-01-11 04:21:08 -06:00
Admin\Me
46bb89e2b5 Added code formatting tags for eScript code to escript.inc for my previous documentation addition. I think this will work. 2019-01-11 04:18:33 -06:00
Admin\Me
780d4641f6 Fixed typo in escript.inc. "peopke" should be "people" in the new addition to the docs. 2019-01-11 03:43:43 -06:00
Admin\Me
914b15403d Added docs to escript guide explaining how to find the position of an element within an array. 2019-01-11 02:01:15 -06:00
GIB
771f2884d5 Changes to the way the flags were processed.
Removed references to non-inuse items.
Updated documentation.
Included new Racalac Guide documentation supplied by Yukiko.
Clangified my changes.
Updated change log.
2018-09-07 10:19:17 +08:00
Gabriele Tozzi
88d7c84b6f Updating doc version to POL100 2018-02-11 00:01:46 +01:00
Renamed from docs/docs.polserver.com/pol099/include/escriptguide.inc (Browse further)