{"id":20771527,"url":"https://github.com/stenbror/activeoberon","last_synced_at":"2025-09-28T02:30:38.070Z","repository":{"id":206834056,"uuid":"717798384","full_name":"stenbror/ActiveOberon","owner":"stenbror","description":"Native 64bits ActiveOberon compiler for ARM v8 and x86-64 with inline assembler.","archived":false,"fork":false,"pushed_at":"2023-12-21T00:06:24.000Z","size":381,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-09T14:22:30.149Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stenbror.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-11-12T16:25:44.000Z","updated_at":"2024-12-25T20:28:41.000Z","dependencies_parsed_at":"2023-11-19T20:31:08.666Z","dependency_job_id":"5b9bfba3-137b-4e87-a84f-0d329f83a16a","html_url":"https://github.com/stenbror/ActiveOberon","commit_stats":null,"previous_names":["stenbror/activeoberon"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/stenbror/ActiveOberon","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stenbror%2FActiveOberon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stenbror%2FActiveOberon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stenbror%2FActiveOberon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stenbror%2FActiveOberon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stenbror","download_url":"https://codeload.github.com/stenbror/ActiveOberon/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stenbror%2FActiveOberon/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":277315628,"owners_count":25797670,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-28T02:00:08.834Z","response_time":79,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-17T12:15:21.544Z","updated_at":"2025-09-28T02:30:37.778Z","avatar_url":"https://github.com/stenbror.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ActiveOberon\nNative 64-bit ActiveOberon compiler for ARM v8 and x86-64 with inline assembler under Linux, Mac OS, and Windows.\n\nI am starting to write the compiler front end. That is a scanner and parser with a symbol table handler and driver for taking commands from the command line.\nIn addition, it will be UnitTests for all scanners and parser and symbol tables before I move on to build the backend for ARM and X86-64 and also the inline\nassembler will be added later.\n\nI am just starting this project, so you will have very little to do with the compiler for quite some time. The compiler is expected to run only under Linux at this time.\n\nI first started this product in C++ but will use Rust instead for ease of testing and building the project. C++ does not have any good build system and testing frameworks.\nRust also has enum types that replace a lot of C++ classes in Symbols and Nodes.\n\n## Building the bootstrap compiler in \u003cB\u003e Rust \u003c/B\u003e\n\nI also write a bootstrap compiler in \u003cB\u003e Rust \u003c/B\u003e that can bootstrap the final compiler written in ActiveOberon later in a three-step build of the final compiler.\nTo build it and execute its unit tests follow the below instructions: \u003cBR /\u003e\n\nInstall a rust build system, if you don't already have one on your computer. Easy install by executing the following command under Linux and Mac OS 'curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh' , \non Windows search internet for 'rustup'. About every 6 weeks, the build system is updated and you just run 'rustup update' to get the latest version. \u003cBR /\u003e\n\n\ncd active_oberon_compiler \u003cBR /\u003e\ncargo build \u003cBR /\u003e\ncargo test \u003cBR /\u003e\ncargo run \u003cBR /\u003e \u003cBR /\u003e\n\nFor now, you can create a small Active Oberon program and check its syntax with the command 'active_oberon_compiler compile test.mod' , you need to write the test.mod file and place it in the same directory as the executable.\n\nEven if the final compiler will be written in ActiveOberon language, it will need to be compiled the first time by the bootstrap compiler written in Rust and also maybe\na version written in C++. This Rust-based bootstrap compiler will be fully functional and contain all the functions of the final one. You can choose to use the bootstrap\ncompiler instead of the final product if you like.\n\n### To build an optimized release version ( Simply an early version only! )\n\ncargo build --release \u003cBR /\u003e\nstrip ./target/release/active_oberon_compiler \u003cBR /\u003e\n\njust execute the resulting file: \u003cBR /\u003e \u003cBR /\u003e\nls -la target/release \u003cBR /\u003e\ntarget/release/active_oberon_compiler ( Executes the compiler as is at the moment, not producing anything! )\n\n\n\n## What is Active Oberon\n\nActive Oberon is the latest member of the Algol family of languages. Derived directly from the language Oberon (-2) and languages such as Modula, Pascal, etc.\n\nI will first write a complete compiler/linker/build system with an inline assembler for ARM v8 and X86-64 instruction sets. With it, a minimum of support\nlibraries as source code will be compiled and optimized each time you create your own programs. The design goal is to remove waste and bloated executables\nthat most languages and systems are used to now.\n\nCode will be native and optimized with only the library functions you need to be packed into a single executable file in ELF format.\n\nIf we get enough interest for the project, I am thinking about writing the compiler/linker / build tool in Active Oberon later, and using the Rust version as\na bootstrap for the real compiler and system. Regardless will the Rust version be as complete as the final product? It will be up to you which you will use and\nall libraries will be available without changes for both.\n\nActive Oberon is a highly typed and garbage-collected language for system programming.\n\n## Bootstrapping the system in the future\n\n* You will first compile the Rust version of the Active Oberon compiler/linker / build tool.\n* Then you will build the Active Oberon-based compiler with the help of the Rust bootstrap compiler.\n* Finally you will use the finished Active Oberon-based compiler to build itself and you have the final product.\n\n## Language overview\n\nThis is not a full description of the language, but a good start for understanding what the language \u003cb\u003e Active Oberon \u003c/b\u003e is all about.\n\n### Reserved keywords\n\n\u003cTABLE\u003e\n  \u003cTR\u003e \u003cTD\u003e ASYNC \u003c/TD\u003e \u003cTD\u003e BEGIN \u003c/TD\u003e \u003cTD\u003e BY \u003c/TD\u003e \u003cTD\u003e CONST \u003c/TD\u003e \u003cTD\u003e CASE \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e \u003cTD\u003e CELL \u003c/TD\u003e \u003cTD\u003e CELLNET \u003c/TD\u003e \u003cTD\u003e CODE \u003c/TD\u003e \u003cTD\u003e DO \u003c/TD\u003e \u003cTD\u003e DIV \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e \u003cTD\u003e END \u003c/TD\u003e \u003cTD\u003e ENUM \u003c/TD\u003e \u003cTD\u003e ELSE \u003c/TD\u003e \u003cTD\u003e ELSIF \u003c/TD\u003e \u003cTD\u003e EXIT \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e \u003cTD\u003e EXTERN \u003c/TD\u003e \u003cTD\u003e FALSE \u003c/TD\u003e \u003cTD\u003e FOR \u003c/TD\u003e \u003cTD\u003e FINALLY \u003c/TD\u003e \u003cTD\u003e IF \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e \u003cTD\u003e IGNORE \u003c/TD\u003e \u003cTD\u003e IMAG \u003c/TD\u003e \u003cTD\u003e IN \u003c/TD\u003e \u003cTD\u003e IS \u003c/TD\u003e \u003cTD\u003e IMPORT \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e \u003cTD\u003e LOOP \u003c/TD\u003e \u003cTD\u003e MODULE \u003c/TD\u003e \u003cTD\u003e MOD \u003c/TD\u003e \u003cTD\u003e NIL \u003c/TD\u003e \u003cTD\u003e OF \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e \u003cTD\u003e OR \u003c/TD\u003e \u003cTD\u003e OUT \u003c/TD\u003e \u003cTD\u003e OPERATOR \u003c/TD\u003e \u003cTD\u003e PROCEDURE \u003c/TD\u003e \u003cTD\u003e PORT \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e \u003cTD\u003e REPEAT \u003c/TD\u003e \u003cTD\u003e RETURN \u003c/TD\u003e \u003cTD\u003e SELF \u003c/TD\u003e \u003cTD\u003e NEW \u003c/TD\u003e \u003cTD\u003e RESULT \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e \u003cTD\u003e THEN \u003c/TD\u003e \u003cTD\u003e TRUE \u003c/TD\u003e \u003cTD\u003e TO \u003c/TD\u003e \u003cTD\u003e TYPE \u003c/TD\u003e \u003cTD\u003e UNTIL \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e \u003cTD\u003e VAR \u003c/TD\u003e \u003cTD\u003e WHILE \u003c/TD\u003e \u003cTD\u003e WITH \u003c/TD\u003e \u003cTD\u003e  \u003c/TD\u003e \u003cTD\u003e  \u003c/TD\u003e \u003c/TR\u003e\n\u003c/TABLE\u003e\n\n\u003cBR /\u003e \n\n\u003ctABLE\u003e\n  \u003cTR\u003e \u003cTD\u003e ARRAY \u003c/TD\u003e \u003cTD\u003e OBJECT \u003c/TD\u003e \u003cTD\u003e POINTER \u003c/TD\u003e \u003cTD\u003e RECORD \u003c/TD\u003e \u003cTD\u003e ADDRESS \u003c/TD\u003e \u003cTD\u003e SIZE \u003c/TD\u003e \u003cTD\u003e ALIAS \u003c/TD\u003e \u003c/TR\u003e\n\u003c/tABLE\u003e\n\nAll reserved keywords must be in upper case. Code editors should support you in writing lowercase keywords and then make them uppercase automatically in your code, \nor else you will need to be friends with the caps lock on your keyboard.\n\n### Operators and delimiters\n\n\u003cTABLE\u003e\n   \u003cTR\u003e  \u003cTD\u003e ( \u003c/TD\u003e \u003cTD\u003e ) \u003c/TD\u003e \u003cTD\u003e [ \u003c/TD\u003e \u003cTD\u003e ] \u003c/TD\u003e \u003cTD\u003e { \u003c/TD\u003e \u003cTD\u003e } \u003c/TD\u003e \u003cTD\u003e | \u003c/TD\u003e \u003cTD\u003e \" \u003c/TD\u003e \u003cTD\u003e ' \u003c/TD\u003e \u003cTD\u003e , \u003c/TD\u003e \u003cTD\u003e ` \u003c/TD\u003e \u003c/TR\u003e\n   \u003cTR\u003e  \u003cTD\u003e . \u003c/TD\u003e \u003cTD\u003e .. \u003c/TD\u003e \u003cTD\u003e : \u003c/TD\u003e \u003cTD\u003e ; \u003c/TD\u003e \u003cTD\u003e \u0026 \u003c/TD\u003e \u003cTD\u003e ~ \u003c/TD\u003e \u003cTD\u003e ^ \u003c/TD\u003e \u003cTD\u003e ? \u003c/TD\u003e \u003cTD\u003e # \u003c/TD\u003e \u003cTD\u003e .# \u003c/TD\u003e \u003cTD\u003e .= \u003c/TD\u003e \u003c/TR\u003e\n   \u003cTR\u003e  \u003cTD\u003e \u0026lt;  \u003c/TD\u003e \u003cTD\u003e .\u0026lt; \u003c/TD\u003e \u003cTD\u003e \u0026lt;= \u003c/TD\u003e \u003cTD\u003e .\u0026lt;= \u003c/TD\u003e \u003cTD\u003e \u0026gt; \u003c/TD\u003e \u003cTD\u003e .\u0026gt; \u003c/TD\u003e \u003cTD\u003e \u0026gt;= \u003c/TD\u003e \u003cTD\u003e .\u0026gt;= \u003c/TD\u003e \u003cTD\u003e + \u003c/TD\u003e \u003cTD\u003e +* \u003c/TD\u003e \u003cTD\u003e - \u003c/TD\u003e \u003c/TR\u003e\n   \u003cTR\u003e  \u003cTD\u003e * \u003c/TD\u003e \u003cTD\u003e ** \u003c/TD\u003e \u003cTD\u003e / \u003c/TD\u003e \u003cTD\u003e ./ \u003c/TD\u003e \u003cTD\u003e \\ \u003c/TD\u003e \u003cTD\u003e = \u003c/TD\u003e \u003c/TR\u003e\n\u003c/TABLE\u003e\n\n### Additional reserved keywords for built-in procedures and types\n\nThese can not be used for variable names etc. Just for the intended use of types and procedures provided by the system.\n\n\u003cTABLE\u003e\n  \u003cTR\u003e \u003cTD\u003e ABS \u003c/TD\u003e \u003cTD\u003e ADDRESS \u003c/TD\u003e \u003cTD\u003e ADDRESSOF \u003c/TD\u003e \u003cTD\u003e ALL \u003c/TD\u003e \u003cTD\u003e ANY \u003c/TD\u003e \u003cTD\u003e ASH \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e \u003cTD\u003e ASSERT \u003c/TD\u003e \u003cTD\u003e BOOLEAN \u003c/TD\u003e \u003cTD\u003e CAP \u003c/TD\u003e \u003cTD\u003e CAS \u003c/TD\u003e \u003cTD\u003e CHAR \u003c/TD\u003e \u003cTD\u003e CHR \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e \u003cTD\u003e COMPLEX \u003c/TD\u003e \u003cTD\u003e COMPLEX32 \u003c/TD\u003e \u003cTD\u003e COMPLEX64 \u003c/TD\u003e \u003cTD\u003e COPY \u003c/TD\u003e \u003cTD\u003e DEC \u003c/TD\u003e \u003cTD\u003e DECMUL \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e \u003cTD\u003e DIM \u003c/TD\u003e \u003cTD\u003e ENTER \u003c/TD\u003e \u003cTD\u003e ENTIERH \u003c/TD\u003e \u003cTD\u003e EXCL \u003c/TD\u003e \u003cTD\u003e FIRST \u003c/TD\u003e \u003cTD\u003e FLOAT32 \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e \u003cTD\u003e FLOAT64 \u003c/TD\u003e \u003cTD\u003e FLOOR \u003c/TD\u003e \u003cTD\u003e HALT \u003c/TD\u003e \u003cTD\u003e IM \u003c/TD\u003e \u003cTD\u003e INC \u003c/TD\u003e \u003cTD\u003e INCL \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e \u003cTD\u003e INCMUL \u003c/TD\u003e \u003cTD\u003e INCR \u003c/TD\u003e \u003cTD\u003e INTEGER \u003c/TD\u003e \u003cTD\u003e INTEGERSET \u003c/TD\u003e \u003cTD\u003e LAST \u003c/TD\u003e \u003cTD\u003e LEN \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e  \u003cTD\u003e LONG \u003c/TD\u003e \u003cTD\u003e LONGINTEGER \u003c/TD\u003e \u003cTD\u003e LSH \u003c/TD\u003e \u003cTD\u003e MAX \u003c/TD\u003e \u003cTD\u003e MIN \u003c/TD\u003e \u003cTD\u003e OBJECT \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e  \u003cTD\u003e ODD \u003c/TD\u003e \u003cTD\u003e RANGE \u003c/TD\u003e \u003cTD\u003e RE \u003c/TD\u003e \u003cTD\u003e REAL \u003c/TD\u003e \u003cTD\u003e RESHAPE \u003c/TD\u003e \u003cTD\u003e ROL \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e  \u003cTD\u003e ROR \u003c/TD\u003e \u003cTD\u003e ROT \u003c/TD\u003e \u003cTD\u003e SET \u003c/TD\u003e \u003cTD\u003e SET8 \u003c/TD\u003e \u003cTD\u003e SET16 \u003c/TD\u003e \u003cTD\u003e SET32 \u003c/TD\u003e  \u003c/TR\u003e\n  \u003cTR\u003e  \u003cTD\u003e SET64 \u003c/TD\u003e \u003cTD\u003e SHL \u003c/TD\u003e \u003cTD\u003e SHORT \u003c/TD\u003e \u003cTD\u003e SHR \u003c/TD\u003e \u003cTD\u003e SIGNED8 \u003c/TD\u003e \u003cTD\u003e SIGNED16 \u003c/TD\u003e  \u003c/TR\u003e\n  \u003cTR\u003e  \u003cTD\u003e SIGNED32 \u003c/TD\u003e \u003cTD\u003e SIGNED64 \u003c/TD\u003e \u003cTD\u003e SIZE \u003c/TD\u003e \u003cTD\u003e SIZEOF \u003c/TD\u003e \u003cTD\u003e STEP \u003c/TD\u003e \u003cTD\u003e SUM \u003c/TD\u003e  \u003c/TR\u003e\n  \u003cTR\u003e  \u003cTD\u003e UNSIGNED8 \u003c/TD\u003e \u003cTD\u003e UNSIGNED16 \u003c/TD\u003e \u003cTD\u003e UNSIGNED32 \u003c/TD\u003e \u003cTD\u003e UNSIGNED64 \u003c/TD\u003e  \u003c/TR\u003e\n\u003c/TABLE\u003e\n\n### The system module is built in and contains the following procedures\n\n\u003cTABLE\u003e\n  \u003cTR\u003e  \u003cTD\u003e SYSTEM.BYTE \u003c/TD\u003e \u003cTD\u003e SYSTEM.GET \u003c/TD\u003e \u003cTD\u003e SYSTEM.PUT \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e  \u003cTD\u003e SYSTEM.PUT8 \u003c/TD\u003e \u003cTD\u003e SYSTEM.PUT16 \u003c/TD\u003e \u003cTD\u003e SYSTEM.PUT32 \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e  \u003cTD\u003e SYSTEM.PUT64 \u003c/TD\u003e \u003cTD\u003e SYSTEM.SET \u003c/TD\u003e \u003cTD\u003e SYSTEM.GET8 \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e  \u003cTD\u003e SYSTEM.GET16 \u003c/TD\u003e \u003cTD\u003e SYSTEM.GET32 \u003c/TD\u003e \u003cTD\u003e SYSTEM.GET64 \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e  \u003cTD\u003e SYSTEM.VAL \u003c/TD\u003e \u003cTD\u003e SYSTEM.MOVE \u003c/TD\u003e \u003cTD\u003e SYSTEM.REF \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e  \u003cTD\u003e SYSTEM.NEW \u003c/TD\u003e \u003cTD\u003e SYSTEM.TYPECODE \u003c/TD\u003e \u003cTD\u003e SYSTEM.HALT \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e  \u003cTD\u003e SYSTEM.SIZE \u003c/TD\u003e \u003cTD\u003e SYSTEM.ADR \u003c/TD\u003e \u003cTD\u003e SYSTEM.MSK \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e  \u003cTD\u003e SYSTEM.BIT \u003c/TD\u003e \u003cTD\u003e SYSTEM.Time \u003c/TD\u003e \u003cTD\u003e SYSTEM.Date \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e  \u003cTD\u003e SYSTEM.GetStackPointer \u003c/TD\u003e \u003cTD\u003e SYSTEM.SetStackPointer \u003c/TD\u003e \u003cTD\u003e SYSTEM.GetFRameBuffer \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e  \u003cTD\u003e SYSTEM.SetFramePointer \u003c/TD\u003e \u003cTD\u003e SYSTEM.GetActivity \u003c/TD\u003e \u003cTD\u003e SYSTEM.SetActivity \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e  \u003cTD\u003e \u003c/TD\u003e \u003cTD\u003e \u003c/TD\u003e \u003cTD\u003e \u003c/TD\u003e \u003c/TR\u003e\n\u003c/TABLE\u003e\n\n\n### Fundamental types\n\nBelow we describe the fundamental types available to the programmer that are directly mapped to the hardware it runs on.\n\n\u003cTABLE\u003e\n  \u003cTR\u003e \u003cTH\u003e Typename \u003c/TH\u003e \u003cTH\u003e Size \u003c/TH\u003e \u003cTH\u003e Valid values \u003c/TH\u003e \u003c/TR\u003e\n  \u003cTR\u003e \u003cTD\u003e BOOLEAN \u003c/TD\u003e \u003cTD\u003e 1 byte \u003c/TD\u003e \u003cTD\u003e TRUE, FALSE \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e \u003cTD\u003e CHAR \u003c/TD\u003e \u003cTD\u003e 4 bytes \u003c/TD\u003e \u003cTD\u003e UNICODE UTF32 \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e \u003cTD\u003e SIGNED8 \u003c/TD\u003e \u003cTD\u003e 1 byte \u003c/TD\u003e \u003cTD\u003e -2^7 .. 2^7 - 1 \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e \u003cTD\u003e SIGNED16 \u003c/TD\u003e \u003cTD\u003e 2 bytes \u003c/TD\u003e \u003cTD\u003e -2^15 .. 2^15 - 1 \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e \u003cTD\u003e SIGNED32 \u003c/TD\u003e \u003cTD\u003e 4 bytes \u003c/TD\u003e \u003cTD\u003e -2^31 .. 2^31 - 1 \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e \u003cTD\u003e SIGNED32 \u003c/TD\u003e \u003cTD\u003e 8 bytes \u003c/TD\u003e \u003cTD\u003e -2^63 .. 2^63 - 1 \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e \u003cTD\u003e UNSIGNED8 \u003c/TD\u003e \u003cTD\u003e 1 byte \u003c/TD\u003e \u003cTD\u003e 0 .. 2^8 -1 \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e \u003cTD\u003e UNSIGNED16 \u003c/TD\u003e \u003cTD\u003e 2 bytes \u003c/TD\u003e \u003cTD\u003e 0 .. 2^16 -1 \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e \u003cTD\u003e UNSIGNED32 \u003c/TD\u003e \u003cTD\u003e 4 bytes \u003c/TD\u003e \u003cTD\u003e 0 .. 2^32 -1 \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e \u003cTD\u003e UNSIGNED64 \u003c/TD\u003e \u003cTD\u003e 8 bytes \u003c/TD\u003e \u003cTD\u003e 0 .. 2^64 -1 \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e \u003cTD\u003e FLOAT32 \u003c/TD\u003e \u003cTD\u003e 4 bytes \u003c/TD\u003e \u003cTD\u003e -3.4028^38 .. +3.4028^38 \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e \u003cTD\u003e FLOAT64 \u003c/TD\u003e \u003cTD\u003e 8 bytes \u003c/TD\u003e \u003cTD\u003e -1.7976^308 .. +1.7976^308 \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e \u003cTD\u003e SET8 \u003c/TD\u003e \u003cTD\u003e 1 byte \u003c/TD\u003e \u003cTD\u003e Flags between 0 and 7 \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e \u003cTD\u003e SET16 \u003c/TD\u003e \u003cTD\u003e 2 bytes \u003c/TD\u003e \u003cTD\u003e Flags between 0 and 15 \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e \u003cTD\u003e SET32 \u003c/TD\u003e \u003cTD\u003e 4 bytes \u003c/TD\u003e \u003cTD\u003e Flags between 0 and 31 \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e \u003cTD\u003e SET64 \u003c/TD\u003e \u003cTD\u003e 8 bytes \u003c/TD\u003e \u003cTD\u003e Flags between 0 and 63 \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e \u003cTD\u003e REAL \u003c/TD\u003e \u003cTD\u003e \u003c/TD\u003e \u003cTD\u003e Default floating point type. double in C \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e \u003cTD\u003e INTEGER \u003c/TD\u003e \u003cTD\u003e Machine word \u003c/TD\u003e \u003cTD\u003e signed integer in machine word size \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e \u003cTD\u003e ADDRESS \u003c/TD\u003e \u003cTD\u003e Address width \u003c/TD\u003e \u003cTD\u003e unsigned integer in address range \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e \u003cTD\u003e SIZE \u003c/TD\u003e \u003cTD\u003e Address width \u003c/TD\u003e \u003cTD\u003e signed inteher in address range \u003c/TD\u003e \u003c/TR\u003e\n  \u003cTR\u003e \u003cTD\u003e SET \u003c/TD\u003e \u003cTD\u003e Address width \u003c/TD\u003e \u003cTD\u003e Set with address width \u003c/TD\u003e \u003c/TR\u003e\n\u003c/TABLE\u003e\n\n#### Literal name\n\nAll literal names must be in the form:  \u003cI\u003e Letter { Letter | Digit |  '_' } \u003c/I\u003e Example: 'Build_Compiler12'\n\n#### Numbers\n\nNumbers are either integers or real numbers. Numbers can be decimal or hexadecimal. \u003cBR /\u003e\n\n*  7FF0 is a 16-bit number ( Like 0x7ff0 in C++ )\n*   Real numbers in the format like \u003cI\u003e 0.45D-11 \u003c/I\u003e ( FLOAT32 )\n*   Real numbers in the format like \u003cI\u003e 7.11E+8 \u003c/I\u003e ( FLOAT64 )\n\n#### Character\n\nAll characters are internally handled as UTF-32 characters, so a char is between 0 and FFFFFFFF , but only valid character codes in Unicode. Also in the format of 'x' etc.\n\n#### Strings\n\nAll strings are arrays of UTF-32 characters. Defined as \" Text goes here! \"\n\n#### Simplest program to parse possible\n\n\u003cCode\u003eMODULE test; \u003cBR /\u003eEND test. \u003c/Code\u003e \u003cBR /\u003e \u003cBR /\u003e\n \n\u003cB\u003e More to come later! \u003c/B\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstenbror%2Factiveoberon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstenbror%2Factiveoberon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstenbror%2Factiveoberon/lists"}