EMal is a new programming language that wants to be easy to understand and read.
I would like to introduce my kids to programming with this language, and I want to use it for my job in order to
prototype algorithms and test REST services.
The language is expressive and has a gradual type system.
It supports double grammar with english and italian keywords.
Execution speed is slow and is not a goal for EMal.
It's written in c#, because I use it for my daily work, and writing a new language stresses my skills.
The development is ongoing, but it's still in alpha status.
You can access working examples at https://rosettacode.org/wiki/Category:EMal
It can happen that I release binary versions more often than the sources.
Below I link the project changelog and the project status for every class involved.
(*
* @(#) changelog.eg 0.0.6 31/01/2025
*
* Copyright 2020-2025 Alberto Innocenti <lanky at tiscali dot it>
*
* Licensed under the General Shared Source License, Version 1.1 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.lanky.eu/licenses/LICENSE-1.1
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*
* Consequently, Your use, modification and distribution of this source code is
* entirely at Your own risk and neither the Licensor, its licensors nor any
* other person who has contributed to this Source code shall be liable to You
* for any loss or damage which You may suffer as a result of Your use,
* modification or distribution of this Source code.
*
* See the License for the specific language governing permissions and
* limitations under the License.
*
*)
(*
* EMal changelog
*
* @version 0.0.6
* @status alpha
* @author Alberto Innocenti
* @changelog
* 2025-01-31(0.0.6) updates from 0.0.201 to 0.0.234
* 2024-11-14(0.0.5) updates from 0.0.144 to 0.0.201
* 2024-09-24(0.0.4) updates from 0.0.112 to 0.0.144
* 2024-05-24(0.0.3) updates from 0.0.83 to 0.0.112
* 2023-07-23(0.0.2) improved the layout
* 2023-07-21(0.0.1) first documented version
* @notes
* t values:
* 'B' binary
* 'S' source
* 'X' binary+source
* ' ' internal
*)
[_Changelog]
!release _|t|comment |
!--------------------_|-|----------------------------------------------------------------|
!2025-01-31(0.0.234) _|X|writing the manual and rechecking and stabilizing the code |
! _| |fixed a regression in Set |
! _| |even the map has been documented |
! _| |some review in Set. Of was buggy, Keys is unneeded. |
! _| |another fix in Record... (this is still buggy)... |
! _| |still reviewing the Record, used BlessedMultiKeyValuePair |
! _| |Record has data inheritance again. |
! _| |no more list.insertFirst/list.insertLast |
! _| |now we have list.insertStart/list.insertEnd |
! _| |Pair has been checked and documented, go on with Lists now |
! _| |error messages have been improved. The tokenizer improved. |
! _| |tokenizer gone to 0.2.0 no more if, we have switches now. |
! _| |reviewd the terminal screen API. |
! _| |It looks there is still a bug in the "paint" primitive. |
! _| |we support unary slash operator |
! _| |improved Pair, some minor changes in EMal library |
! _| |lexemes splitted in inner static classes |
! _| |removed sqr and cbr because we have specific operators now. |
! _| |No more Event.Unique. |
! _| |removed kind and address from Event, they are not useful. |
! _| |bugfix in devices function |
! _| |Added Runtime.FATAL_ERROR and Runtime.COMMAND_ERROR |
! _| |bugfix in Preprocessor.ArrayShrink, no more Linq dependency |
! _| |created new lexemes and used in Devices. |
! _| |recap changes from 20141217 till 20250117 |
! _| |- dot net v4.8.1 |
! _| |- tested an alternative MultiKeyDictionary using tuples |
! _| |- fixed a nasty bug in Messaging.Event.Pack and added tests |
! _| |- NodeQueue added checks when accessing a null front we explode |
! _| |- Maps are no more stretachabe, removed tests |
! _| |- added copyright 2025 |
! _| |- added the MissingNode error and its translation |
! _| |- italian greeting is Ciao and not Caro |
! _| |- Emal.devices uses the API name-alias |
! _| |- Scope.TryReadInstanceField adds a proper try-catch block |
! _| |- hex digits can be lowercase or uppercase |
! _| |- added the LineNumber concept |
! _| |- improved italian lexemes |
! _| |- pervasive use of ← in compound assignments |
! _| |- preprocessor changed for line numbers, and some code refactor |
! _| |- we can access Set items by the indexers, delete returns that |
! _| | actually something got deleted or not, |
! _| | bugfix in set for storing texts and blobs. |
! _| |- added DynamicRecord and MultiKeyValuePair new classes |
! _| |- MultiKeyDictionary bugfix when setting to not existent key |
! _| | improved Remove, now implements IEnumerator, that's good. |
! _| |- bugfix to support the whole int64 range from min to max |
! _| |- bugfix in real, when converting and comparing to int. |
! _| |- text can parse negative numbers,bugfix of -9223372036854775808|
! _| |- logical shallow copy NOT reusese True/False constants |
! _| |- Record is being recoded tu sopport name-alias pairs |
! _| |- Command support the EMALLANG environment variable, includes |
! _| |- add lexemes for ports (english/italian) |
! _| |- record and avoid creating new properties by accessing them |
! _| |we use dot net 4.8.1 still reviewing MultiKeyDictionary. |
! _| |Now we have MultiKeyValuePair, still to be reviewed. Btw Records|
! _| |now can have aliases. |
! _| |MultiKeyDictionary Rewritten |
! _| |Added DynamicRecord class |
! _| |we enforce to write line numbers es. 1. at the beginning |
! _| |of the line. |
! _| |updated the source to include the 2025 copyright. |
! _| |Improved the quick parser in the preprocessor to better |
! _| |manage line numbers reusing the code as much as possible. |
! _| |Bugfix release in remedy (Event.Pack) |
! _| |few changes in italian lexemes for Runtime errors |
! _| |bugfix release for using line numbers even with |
! _| |in, load, type, @author |
! _| |now we can use line numbers directly in the code: |
! _| |1. writeLine("ciao") |
! _| |2. if true |
! _| |3. writeLine("hello") |
! _| |4. end |
! _| |in for each the iterable is hidden now |
! _| |minor changes in the lexemes about enumeration |
! _| |bugfixes in the type system. |
! _| |ShallowCopy for logical didn't create a new object, was wrong |
! _| |Conversion from text to text did a DeepCopy diverging from the |
! _| |common behaviour |
! _| |getting the text from functions was broken, fixed. |
! _| |explicit conversion from real to int now truncates. |
! _| |Dear translated from Caro to Ciao in italian |
! _| |now we can finally parse -9223372036854775808 |
! _| |we accept "A".."F" in 0Uxxx or 0uxxx literals |
! _| |when using -l, show if we use the primary language as default |
! _| |minor improvements in the help, bugfix in SystemIncludeUnix. |
! _| |added the -l switch to show the included library paths. |
! _| |Reshaped the code in Emal.cs and Command.cs to refactor the |
! _| |inclusion code. |
! _| |← consistently used for all the assignments |
! _| |changes is Map and Set, Map has no more stretchable |
! _| |this affects even the enums; |
! _| |bugfix in Set to use tryToMakeReadonly keys |
! _| |we can use the EMALLANG environment variable |
! _| |Reviewed italian lexemes. |
!2024-11-22(0.0.208) _|B|we use only one code for ellipse even for circles. |
! _| |printAt supports variable type id |
! _| |ellipse can be inscribed inside rectangles, the code use floats |
! _| |and she shape is different from circle, btw it's an improvement.|
! _| |color and background always return the previous color |
! _| |added constants for Sysexits.h into Runtime |
! _| |fixed the circle and filled circle to respect the diameter |
! _| |detected a problem in circle and filled circle, still inspecting|
! _| |the diameter different radius * 2, how can I solve it |
! _| |updated the Shannon-Fano standard library to use Pair |
!2024-11-14(0.0.201) _|X|Nullables added to the Standard library, |
! _| |libEmalStandard renamed to libEmalBuiltins, |
! _| |changes in EventObject for the KeyCancel property. |
! _| |This marks a milestone, for a while only bugfixes will happen |
! _| |I should improve the standard library when possible. |
! _| |We must retest caefully everything. |
!2024-11-13(0.0.200) _| |lexeme Registro renamed to Struttura |
!2024-11-12(0.0.199) _| |RISKY removed HeapValue in the TypeSystem |
!2024-11-12(0.0.198) _| |bugfix in EventoObject |
!2024-11-12(0.0.197) _| |RISKY the code has been cleaned up after libMessage revision |
! _| |we must carefully re-test the unit test and the various sample |
! _| |programs. The Event has few properties now, maybe it can be |
! _| |further improved,in particular the packing/unpacking of the id. |
!2024-11-11(0.0.196) _| |reviewed the whole events mechanism. RISKY |
!2024-11-09(0.0.195) _| |reviewed the classes affected by the Port removal |
!2024-11-09(0.0.194) _| |RISKY remove the whole Port Object |
!2024-11-09(0.0.193) _| |going on reviewing events and messaging |
!2024-11-08(0.0.192) _| |no more ScreenAddress |
!2024-11-07(0.0.191) _| |wip, no more TimerAddress, added PauseTimer, RestartTimer |
!2024-11-07(0.0.190) _| |wip, KeyboatdPoer has no more KeyboardAddress, |
! _| |removed the dispatcher in the port. still work in progress. |
!2024-11-06(0.0.189) _| |wip, LogPort has no more LogAddress, removed dispatcher in port |
! _| |still to review all other ports and carefully retest the code. |
!2024-11-06(0.0.188) _| |added Write(blob) some works in the method Emal.write() |
!2024-11-05(0.0.187) _| |now we have the control \v for vertical tab, |
! _| |removed unused comments |
! _| |about Pascal style loops.No way to make it work better than now |
!2024-11-05(0.0.186) _| |removed the Pascal style loops, no more To keyword. |
! _| |Improved the parser code. |
!2024-11-05(0.0.185) _| |first version that supports Pascal style loops |
!2024-10-31(0.0.184) _| |checked port addresses in order to minimize their usage |
!2024-10-31(0.0.183) _| |still a bugdix in Paint |
!2024-10-31(0.0.182) _| |fixed a bug in Paint |
!2024-10-31(0.0.181) _| |added Event.isCancelLock() |
!2024-10-31(0.0.180) _| |now ctrl+c works. |
!2024-10-30(0.0.179) _| |added Event.loop() |
!2024-10-30(0.0.178) _| |clear(RESET) resets all the screen parameters |
!2024-10-30(0.0.177) _| |review till pixel |
!2024-10-30(0.0.176) _| |reviewing the code for text mode console. |
! _| |BREAKING CHANGE a lot of new api for better interaction |
! _| |the unit test must be retested carefully. |
!2024-10-29(0.0.175) _| |bugfix in the color method |
!2024-10-28(0.0.174) _| |added first stub of Symlink in the storage kit |
!2024-10-27(0.0.173) _| |BREAKING CHANGE removed hint keyword |
!2024-10-26(0.0.172) _| |removed zstrings from the tokenizer. BREAKING CHANGE |
! _| |Software that used them will no longer work |
!2024-10-26(0.0.171) _| |recoded Pair with only two variables pairKey and pairValue. |
! _| |unit test works again, we'll stay with this version. |
!2024-10-25(0.0.170) _| |tested a change in Pair for using array of 2, rolled back. |
!2024-10-25(0.0.169) _| |Statable extends Emal allows File |
!2024-10-25(0.0.168) _| |Wrapper renamed to Extender and ExtensionMethod |
!2024-10-24(0.0.167) _| |reviewed Compression:ShannonFano, |
! _| |tried to get rid of WrapperMethod but the code was worse. |
! _| |Rolled back. |
!2024-10-23(0.0.165) _| |the external libray is more clean, |
! _| |first storage kit implemenation, no more Io:File. |
! _| |API CHANGE no more NativeObject. |
!2024-10-21(0.0.164) _| |minor review in the core, the work is going to the |
! _| |external library File, we wanna remove the NativeObject. |
!2024-10-17(0.0.163) _| |Map, Emal, Set, Port, List, Pair avoid the 4 parmeters Assing. |
! _| |That method was confusing and has been removed |
!2024-10-17(0.0.162) _| |added validation in list.first and list.last, |
! _| |used lambda in Pair and List, still few tests missing in List, |
! _| |but already gone beta. |
! _| |Written more RosettaCode samples, reached 115 tasks. |
! _| |RestClient doesn't use Native anymore, |
! _| |I want to always use the Library. |
! _| |Recoding the File API, now we have Entry taken |
! _| |directly from the BeBook. |
! _| |The Goal is to remove the old File and go with the new one. |
! _| |File must be working, on Unix Stat works, it's great. |
!2024-10-13(0.0.161) _| |added more tests for lists, |
! _| |ListExtension is beta now, |
! _| |minor fixes for TextObject and BlobObject |
! _| |in case the engine is called multiple times. |
!2024-10-11(0.0.160) _| |list gone beta |
!2024-10-09(0.0.159) _| |list unit test till sortable |
!2024-10-09(0.0.158) _| |tried to include xor, but was a bad road, rolled back |
! _| |tried to use reals, but was a bad road, rolled back |
! _| |added an icon for emaltest |
!2024-10-08(0.0.157) _| |completed the unit test for list.container |
! _| |list.insert and list.append are variadic now. |
!2024-10-07(0.0.156) _| |going on adding tests for ListObject |
!2024-10-04(0.0.155) _| |improving unit test fot ListObject |
!2024-10-04(0.0.154) _| |added filter method to Set,Map,Text,Blob, |
! _| |improved DynamicString and DynamicByteArray. |
!2024-10-03(0.0.153) _| |documented GenericObject, changed Variable() |
! _| |BEHAVIOUR CHANGE |
! _| |now we have |
! _| |var("symbolName") |
! _| |var("typeName", "symbolName") |
!2024-10-02(0.0.152) _| |GenericObject has been reviewed, it's quite RISKY. |
! _| |Removed the feature var("me.something") because not needed |
! _| |we can access the property with me of "something" |
!2024-10-02(0.0.151) _| |still improving the unit test for collections |
!2024-10-01(0.0.150) _| |reviewing Record and collections |
!2024-09-30(0.0.149) _| |RISKY changed GenericObject, for ReferenceConversion. |
! _| |This change went under till the type system. |
!2024-09-28(0.0.148) _| |RISKY AsReference deafults to explode on null values, |
! _| |still coding the Record class |
!2024-09-24(0.0.147) _| |BREAKING CHANGE now locate(x,y) before locate(y,x) |
!2024-09-24(0.0.146) _| |removed PSOD, bugfix in Emal.ask with only one argument |
!2024-09-24(0.0.145) _| |bugfix in fold where the accumulator can have a different type |
! _| |from the list |
!2024-09-24(0.0.144) _|B|ready for a new binary-only release |
! _| |API CHANGE removed average() |
! _| |not a math function, it won't be used in that way. |
! _| |It's a grouping function and should be called avg. |
! _| |But we are happy without it. |
! _| |◇ synonym for <> |
! _| |API CHANGE finally added List.fold |
! _| |fixed comparison between integers and reals. |
! _| |removed a PSOD, comparing (<, <=, >, >=, <>) sent an |
! _| |unreported exception when data types are different. |
! _| |Now at least we have managed the exception. |
! _| |This can still be a problem. |
! _| |API CHANGE added average() |
! _| |API CHANGE added writeParts. |
! _| |now writeParts, write, writeLine accept multiple values. |
! _| |The EmalObject basic IO has been reviewed. |
! _| |managed alias ⇒ for => |
! _| |evaluating if this symbol ⇒ could be used as an alias for => |
! _| |fixed a PSOD because of a NPE with exit() |
! _| |no more Record.typed, we use instantiation for this. |
! _| |Record can be instantiated: |
! _| |Record auth = ... |
! _| |var pippo = auth(1, "pippo", "secret0") |
! _| |managed a PSOD while reading NativeCode |
! _| |symbolic references are not oly for functions, |
! _| |BREAKING CHANGE |
! _| |now var("name") returns the symbolic reference |
! _| |of the variable named "name" |
! _| |improved named functions for accepting me. and Klass. |
! _| |added the new feature to have named functions |
! _| |added hex method hex(65, 4) = "0x0041" |
! _| |added the method changeTimer, improved few errors |
! _| |fun num = int by block do return 12 end |
! _| |int a = num()++ |
! _| |This code must throw an error, but was too much generic. |
! _| |Set is again in the standard collection library |
! _| |swap is a collection method implemented in |
! _| |Blob, Text, List, Map; before it was only present in List. |
! _| |Reviewing the Timer interface |
! _| |libMessaging review still in progress. |
! _| |going on improving Posix, |
! _| |changes in the TypeSystem in order to get IntegerValues as uint |
! _| |check the libMessaging project, added unit tests and first |
! _| |classes marked as beta. |
! _| |first stub of Posix |
! _| |Locate() returns a pair named y,x the current cursor position |
! _| |BREAKING CHANGE locate(x,y) now is locate(y,x) |
! _| |code review againts the 2024-05-20 version, |
! _| |bugfix logarithm operator was wrong |
! _| |BREAKING CHANGE |
! _| |watch(3 ** 2) # "what is 3 squared?": 32 = 9 |
! _| |watch(2 // 9) # "what is the square root of 9?": √9 = 3 |
! _| |watch(3 %% 9) # "what is log base 3 of 9?": log3(9) = 2 |
! _| |watch(3²) |
! _| |watch(3³) |
! _| |watch(√9) |
! _| |watch(∛27) |
! _| |IScreenPort and ITimerPort have been used. |
! _| |first code with IScreenPort, still work in progress... |
! _| |the timer has been backported from ConsoleHardware |
! _| |added hasKeys, flushKeys |
!2024-05-24(0.0.112) _|X|ready for a new alpha release |
! _| |bugfix in multiline comments not properly resetting the state |
! _| |after double arrow we can insert a new line |
! _| |API breaking changes for methods that use keyboard and log |
! _| |no more read that now is press |
! _| |no more keyboard that now is startKeyDown |
! _| |added copyright 2024, no code changes. |
! _| |Emal.color now has an overload with 0 parameters, to restore |
! _| |the background and foreground colors. It uses proper checks now |
! _| |ExitException moved under reporting with name SystemExit |
! _| |Emal class changed the way is constructed. It will allow to |
! _| |dinamically set visitors different from Evaluator |
! _| |we can interact with environment variables |
! _| |renamed Text.empty to Text.EMPTY, removed PSOD in Map |
! _| |added the following single glyph ← ≠ æ ≥ ≤ |
! _| |Pair and List should have trapped all the exceptions |
! _| |removed a lot of PSOD in the List class |
! _| |bugfix in the tokenzier, while handling new lines |
! _| |removed many possible PSOD in TextObject |
! _| |all libEmalDataStructer is stable, |
! _| |make the NameAliasPair enum readonly |
! _| |All the collection supports the list(delegate) overload |
! _| |bugfix release in multikeydictionary renamekey there was a bug |
! _| |bugfix release, parser had a bug with lambda some keyword |
! _| |bugfix release multiline and zformat were not unset |
! _| |big change strings are now multiline |
! _| |we have also added a zformat mode introduced by \z |
! _| |changed the tokenizer to support perl escape sequences |
! _| |we have an overloaded list now, no more every or forEach |
! _| |added the title method |
! _| |changed to general shared source license 1.2, few bugixes |
! _| |UnitTest was in error, now is fixed |
! _| |logo updated to 0.0.8, tried to replace decimal with doubles |
!2023-07-21(0.0.83) _|X|no code changes, improved the logo |
!2023-07-14(0.0.82) _| |added list.zip, Generic.check |
!2023-07-13(0.0.81) _| |added list.filer(predicate) |
!2023-07-13(0.0.80) _| |enumerations asText and list, added Generic.name |
!2023-07-13(0.0.79) _| |list expansion is one shot, after passing the list is toggled |
! _| |back to unexpanded. |
!2023-07-13(0.0.78) _| |no more Extend in Reference, some code refactor |
!2023-07-12(0.0.77) _| |big change RISKY added HasProperty, so that we can |
! _| |be more introspective, this can be already seen by |
! _| |Generic.has/Generic.property for querying static properties |
! _| |Value.Function now accepts only: |
! _| |StaticMethod, InstanceMethod, WrapperMethod as it should, |
! _| |Reference has removed some stuff that has been propery moved in |
! _| |the Wrapper class |
!2023-07-10(0.0.76) _| |now we have Generic.property, we still need Generic.has |
!2023-07-07(0.0.75) _| |removed a PSOD in map.insert, now we have typed Record |
! _| |this is a new feature |
!2023-07-04(0.0.74) _| |no more dll load, we always need an emal file, it's clean. |
! _| |removed another PSOD in the evauator,while loading external dll |
!2023-07-03(0.0.73) _| |a change in the unix include fallback dir that now points to |
! _| |/opt/emal/lib/emal, fixed a Purple Screen Of Death (PSOD) |
!2023-06-28(0.0.72) _| |reviewed the include hiearchy to be cross-platform |
!2023-06-25(0.0.71) _| |MakeText/MakeBlob have been recoded, internal changes in |
! _| |the libEmalBuiltins |
!2023-06-23(0.0.70) _| |the with method has been added to the containers |
! _| |(texts, blobs, lists, maps) |
! _| |one less purple screen of death, minor change to the EMal guy |
!2023-06-23(0.0.69) _| |added "with" method on maps, added error(int, text), |
! _| |fixed a bug in the tokenizer |
[end]
(*§*)
(*
* @(#) status.eg 0.0.31 30/01/2025
*
* Copyright 2020,2021,2022,2023,2024 Alberto Innocenti <lanky at tiscali dot it>
*
* Licensed under the General Shared Source License, Version 1.2 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.lanky.eu/licenses/LICENSE-1.2
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*
* Consequently, Your use, modification and distribution of this source code is
* entirely at Your own risk and neither the Licensor, its licensors nor any
* other person who has contributed to this Source code shall be liable to You
* for any loss or damage which You may suffer as a result of Your use,
* modification or distribution of this Source code.
*
* See the License for the specific language governing permissions and
* limitations under the License.
*
*)
(*
* EMal project status
*
* @version 0.0.31
* @status alpha
* @author Alberto Innocenti
* @changelog
* 2025-01-30(0.0.31) added BlessedMultiKeyValuePair
* 2025-01-17(0.0.30) added new data structures
* 2024-11-14(0.0.29) renamed libEmalStandard to libEmalBuiltins,
* added Fun:Emal:Type:Nullables to the standard library
* 2024-11-12(0.0.28) managed changes in libMessage
* 2024-11-08(0.0.27) no more screen address
* 2024-11-07(0.0.26) removed TimerAddress
* 2024-11-07(0.0.25) removed LogAddress KeyboardAddress, added Symlink, was missing
* 2024-10-23(0.0.24) no more NativeObject class finally
* 2024-10-13(0.0.23) ListExtension has been tested and it's beta now
* 2024-10-11(0.0.22) List gone beta
* 2024-07-29(0.0.21) Set added again to the project.
* 2024-07-28(0.0.20) working on libEmalMessaging, added the external libraries
* 2024-06-10(0.0.19) added Rooting
* 2024-05-28(0.0.18) added IScreenPort
* 2024-05-27(0.0.17) added ITimerPort
* 2024-05-22(0.0.16) starting backport from ConsoleHardware, refined Log and Keyboard
* drivers, used the shortcut for consuming less resources.
* 2023-11-13(0.0.15) ExitException + SysExit = SystemExit
* 2023-10-14(0.0.14) working in the Standard library to make it safer
* 2023-10-09(0.0.13) libEmalDataStructure is stable
* 2023-09-05(0.0.12) changed to license 1.2, added Tap.cs
* 2023-07-13(0.0.11) added Wrapper and WrapperMethod
* 2023-07-04(0.0.10) removed NullPort, added TypeSignature, resync with sources
* 2023-06-26(0.0.9) adapted to changes in libEmalBuiltins
* 2023-06-22(0.0.8) removed Set, now lives in the external library
* 2023-05-16(0.0.7) no more libEmalCore in order to better test the modules
* 2023-05-03(0.0.6) no more emscii
* 2023-03-27(0.0.5) re-checkd after libEmalSymbols split
* 2023-03-08(0.0.4) updated to reflect the actual status
* 2023-02-04(0.0.3) house-keeping for base, typesystem, status they must be the Emal fortress
* 2022-12-22(0.0.2) changed BoxValut to VariableValue
* 2022-12-09(0.0.1) first documented version
* @notes
* emal linkyzer.emal ..\..\..\documents\status.eg > ..\..\..\documents\status.html
*)
[_libEmalDataStructure]
(* *)
!source _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!DataStructure/NameAliasPair.cs _|====|====|==..|
!DataStructure/AppendDictionary.cs _|====|====|=...|
!DataStructure/MultiKeyValuePair.cs _|====|====|=...|
!DataStructure/BlessedMultiKeyValuePair.cs _|====|====|==..|
!DataStructure/MultiKeyDictionary.cs _|====|====|==..|
!DataStructure/DynamicString.cs _|====|====|===.|
!DataStructure/DynamicByteArray.cs _|====|====|===.|
!DataStructure/DynamicRecord.cs _|=...|....|....|
[_libEmalReporting]
(* libEmalDataStructure *)
!source _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!Reporting/Component.cs _|====|====|=...|
!Reporting/IWatchable.cs _|====|====|=...|
!Reporting/Severity.cs _|====|====|=...|
!Reporting/SystemExit.cs _|====|====|=...|
!Reporting/WatchPoint.cs _|====|====|=...|
!Reporting/Kind.cs _|====|=...|....|
!Reporting/Problem.cs _|====|====|=...|
!Reporting/PreprocessorProblem.cs _|====|====|=...|
!Reporting/LexingProblem.cs _|====|====|=...|
!Reporting/ParsingProblem.cs _|====|====|=...|
!Reporting/ExecutionProblem.cs _|====|=...|....|
!Reporting/TypeSystemProblem.cs _|====|=...|....|
!Reporting/BindingProblem.cs _|====|=...|....|
[_libEmalLexing]
(* libEmalDataStructure, libEmalReporting *)
!source _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!Lexing/Lexeme.cs _|====|====|....|
!Lexing/Translate.cs _|====|==..|....|
[_libEmalTypeSystem]
(* libEmalDataStructure, libEmalReporting, libEmalLexing *)
!source _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!TypeSystem/Reference.cs _|====|=...|....|
!TypeSystem/Extender.cs _|====|=...|....|
!TypeSystem/Value.cs _|====|=...|....|
!TypeSystem/HeapValue.cs _|====|=...|....|
!TypeSystem/GenericValue.cs _|====|=...|....|
!TypeSystem/VoidValue.cs _|====|=...|....|
!TypeSystem/LogicalValue.cs _|====|=...|....|
!TypeSystem/IntegerValue.cs _|====|....|....|
!TypeSystem/RealValue.cs _|====|....|....|
!TypeSystem/TextValue.cs _|===.|....|....|
!TypeSystem/BlobValue.cs _|===.|....|....|
!TypeSystem/VariableValue.cs _|====|==..|....|
!TypeSystem/FunctionValue.cs _|====|=...|....|
!TypeSystem/ReferenceValue.cs _|===.|....|....|
[_libEmalSymbols]
(* libEmalDataStructure, libEmalReporting, libEmalLexing, libEmalTypeSystem *)
!source _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!Symbols/Frame.cs _|====|====|....|
!Symbols/Scope.cs _|====|===.|....|
[_libEmalStatus]
(* libEmalDataStructure, libEmalReporting, libEmalLexing, libEmalTypeSystem *)
!source _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!Status/Host.cs _|====|====|=...|
!Status/TypeSignature.cs _|===.|....|....|
!Status/TypeInfo.cs _|====|=...|....|
!Status/TypeCatalog.cs _|====|....|....|
!Status/Module.cs _|====|==..|....|
!Status/LoadChain.cs _|====|====|....|
!Status/Registry.cs _|====|=...|....|
!Ast/Addition.cs _|====|===.|....|
!Ast/Assignment.cs _|====|===.|....|
!Ast/BinaryOperator.cs _|====|===.|....|
!Ast/BitwiseAnd.cs _|====|===.|....|
!Ast/BitwiseNot.cs _|====|===.|....|
!Ast/BitwiseOr.cs _|====|===.|....|
!Ast/BitwiseXor.cs _|====|===.|....|
!Ast/Block.cs _|====|===.|....|
!Ast/Compare.cs _|====|===.|....|
!Ast/Conditional.cs _|====|=...|....|
!Ast/Container.cs _|====|===.|....|
!Ast/DataType.cs _|====|===.|....|
!Ast/Declaration.cs _|====|===.|....|
!Ast/Division.cs _|====|===.|....|
!Ast/EndOfCode.cs _|====|===.|....|
!Ast/Ephemeral.cs _|====|===.|....|
!Ast/Equality.cs _|====|===.|....|
!Ast/Exit.cs _|====|===.|....|
!Ast/Exponentation.cs _|====|===.|....|
!Ast/Expression.cs _|====|===.|....|
!Ast/Function.cs _|====|===.|....|
!Ast/Greater.cs _|====|===.|....|
!Ast/GreaterEqual.cs _|====|===.|....|
!Ast/IContextProvider.cs _|====|=...|....|
!Ast/Identifier.cs _|====|===.|....|
!Ast/Indexer.cs _|====|==..|....|
!Ast/Inequality.cs _|====|===.|....|
!Ast/InstanceProperty.cs _|====|==..|....|
!Ast/Instantiation.cs _|====|===.|....|
!Ast/Invocation.cs _|====|====|....|
!Ast/Iteration.cs _|====|===.|....|
!Ast/IVisitor.cs _|====|==..|....|
!Ast/Jump.cs _|====|===.|....|
!Ast/Klass.cs _|====|===.|....|
!Ast/KlassProperty.cs _|====|===.|....|
!Ast/Konvert.cs _|====|===.|....|
!Ast/LeftShift.cs _|====|===.|....|
!Ast/Less.cs _|====|===.|....|
!Ast/LessEqual.cs _|====|===.|....|
!Ast/Literal.cs _|====|===.|....|
!Ast/Logarithmization.cs _|==..|....|....|
!Ast/Multiplication.cs _|====|===.|....|
!Ast/NativeCode.cs _|====|===.|....|
!Ast/Node.cs _|====|===.|....|
!Ast/Operator.cs _|====|===.|....|
!Ast/PostDecrement.cs _|====|===.|....|
!Ast/PostIncrement.cs _|====|===.|....|
!Ast/PreDecrement.cs _|====|===.|....|
!Ast/PreIncrement.cs _|====|===.|....|
!Ast/Remainder.cs _|====|===.|....|
!Ast/Return.cs _|====|===.|....|
!Ast/RightShift.cs _|====|===.|....|
!Ast/Rooting.cs _|==..|....|....|
!Ast/Selection.cs _|====|====|....|
!Ast/Statement.cs _|====|===.|....|
!Ast/Subtraction.cs _|====|===.|....|
!Ast/TraversableType.cs _|====|===.|....|
!Ast/TryRemedy.cs _|====|===.|....|
!Ast/UnaryMinus.cs _|====|===.|....|
!Ast/UnaryOperator.cs _|====|===.|....|
!Ast/UnaryPlus.cs _|====|===.|....|
[_libEmalFrontend]
(* libEmalDataStructure, libEmalReporting, libEmalLexing, libEmalTypeSystem, libEmalStatus *)
!source _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!Frontend/BlockComment.cs _|====|==..|....|
!Frontend/NodeQueue.cs _|====|==..|....|
!Frontend/Preprocessor.cs _|====|=...|....|
!Frontend/Tokenizer.cs _|====|=...|....|
!Frontend/Parser.cs _|====|....|....|
[_libEmalMessaging]
(* libEmalDataStructure, libEmalReporting, libEmalLexing, libEmalTypeSystem, libEmalStatus *)
!source _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!Messaging/PortCategory.cs _|====|=...|....|
!Messaging/Callback.cs _|==..|....|....|
!Messaging/Event.cs _|====|=...|....|
!Messaging/LogEvent.cs _|==..|....|....|
!Messaging/KeyboardEvent.cs _|==..|....|....|
!Messaging/TimerEvent.cs _|==..|....|....|
!Messaging/IPort.cs _|====|=...|....|
!Messaging/ILogPort.cs _|====|=...|....|
!Messaging/IKeyboardPort.cs _|====|=...|....|
!Messaging/ITimerPort.cs _|====|=...|....|
!Messaging/IScreenPort.cs _|====|=...|....|
!Messaging/Port.cs _|====|=...|....|
!Messaging/Bus.cs _|====|....|....|
!Messaging/Logger.cs _|==..|....|....|
[_libEmalBuiltins]
(* libEmalDataStrucute, libEmalReporting, libEmalLexing, libEmalTypeSystem, libEmalStatus, libEmalSymbols, libEmalMessaging *)
!source _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!Builtins/EventObject.cs _|==..|....|....|
!Builtins/RuntimeObject.cs _|====|=...|....|
!Builtins/EmalObject.cs _|==..|....|....|
!Library/LibraryObject.cs _|====|====|=...|
!Library/InstanceMethod.cs _|====|=...|....|
!Library/StaticMethod.cs _|====|=...|....|
!Library/ExtensionMethod.cs _|====|=...|....|
!Collection/PairObject.cs _|====|=...|....|
!Collection/ListObject.cs _|====|=...|....|
!Collection/RecordObject.cs _|==..|....|....|
!Collection/SetObject.cs _|=...|....|....|
!Collection/MapObject.cs _|==..|....|....|
!Collection/TextObject.cs _|===.|....|....|
!Collection/BlobObject.cs _|=...|....|....|
[_libEmalInterpreter]
(* libEmalDataStructure, libEmalReporting, libEmalLexing, libEmalTypeSystem, libEmalStatus, libEmalSymbols, libEmalMessaging, libEmalBuiltins *)
!source _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!Interpreter/BreakException.cs _|====|====|=...|
!Interpreter/ContinueException.cs _|====|====|=...|
!Interpreter/ReturnException.cs _|====|====|=...|
!Interpreter/ListExtension.cs _|====|=...|....|
!Interpreter/InternalMethod.cs _|==..|....|....|
!Interpreter/GenericObject.cs _|==..|....|....|
!Interpreter/Evaluator.cs _|==..|....|....|
[_libEmal]
(* libEmalReporting, libEmalLexing, libEmalTypeSystem, libEmalStatus, libEmalMessaging, libEmalFrontend, libEmalInterpreter *)
!source _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!Emal.cs _|==..|....|....|
[_emaltest]
(* libEmalDataStructure, libEmalReporting, libEmalLexing, libEmalTypeSystem, libEmalStatus, libEmalSymbols, libEmalMessaging, libEmalFrontend, libEmalBuiltins, libEmalInterpreter, libEmal *)
!source _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!emal/Tap.cs _|=...|....|....|
!emal/UnitTest.cs _|=...|....|....|
!emal/Program.cs _|===.|....|....|
[_emal]
(* libEmalReporting, libEmalLexing, libEmalTypeSystem, libEmalStatus, libEmalSymbols, libEmalMessaging, libEmalFrontend, libEmalBuiltins, libEmalInterpreter, libEmal *)
!source _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!emal/Ports/LogPort.cs _|==..|....|....|
!emal/Ports/KeyProducer.cs _|==..|....|....|
!emal/Ports/KeyboardPort.cs _|==..|....|....|
!emal/Ports/TimeProducer.cs _|=...|....|....|
!emal/Ports/TimerPort.cs _|=...|....|....|
!emal/Ports/UnixScreenPort.cs _|=...|....|....|
!emal/Ports/ScreenPort.cs _|=...|....|....|
!emal/Command.cs _|=...|....|....|
!emal/Program.cs _|====|====|==..|
[_funEmalKitStorageAccess]
!source _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!Lexeme/Access.cs _|==..|....|....|
!OpenAccess.cs _|==..|....|....|
!Access.cs _|==..|....|....|
!Access.emal _|==..|....|....|
[_funEmalKitStorageStatable]
!source _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!Lexeme/Statable.cs _|==..|....|....|
!EntryKind.cs _|==..|....|....|
!EntryStatus.cs _|==..|....|....|
!Entry.cs _|==..|....|....|
!EntryWindows.cs _|==..|....|....|
!EntryUnix.cs _|==..|....|....|
!Statable.cs _|==..|....|....|
!Statable.emal _|==..|....|....|
[_funEmalKitStoragePath]
!source _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!Lexeme/Path.cs _|=...|....|....|
!Info.cs _|=...|....|....|
!InfoWindows.cs _|=...|....|....|
!InfoUnix.cs _|=...|....|....|
!Path.cs _|=...|....|....|
!Path.emal _|=...|....|....|
[_funEmalKitStorageDirectory]
!source _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!Lexeme/Directory.cs _|=...|....|....|
!DirectoryBo.cs _|=...|....|....|
!DirectoryBoWindows.cs _|=...|....|....|
!DirectoryBoUnix.cs _|=...|....|....|
!Directory.cs _|=...|....|....|
!Directory.emal _|=...|....|....|
[_funEmalIoFile]
!source _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!Lexeme/File.cs _|=...|....|....|
!FileBo.cs _|=...|....|....|
!OpenMode.cs _|=...|....|....|
!File.cs _|=...|....|....|
!File.emal _|=...|....|....|
[_funEmalIoSymlink]
!source _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!Lexeme/Symlink.cs _|=...|....|....|
!SymlinkBo.cs _|=...|....|....|
!Symlink.cs _|=...|....|....|
!Symlink.emal _|=...|....|....|
[_funEmalTypeNullables]
!source _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!Nullables.emal _|==..|....|....|
[_funEmalCompressionShannonFano]
!source _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!ShannonFano/Node.emal _|====|=...|....|
!ShannonFano/Algorithm.emal _|====|=...|....|
!ShannonFano.emal _|====|=...|....|
[end]
(*§*)