From 5444a7b9dde1944ce16c2225f466071cd513fe5d Mon Sep 17 00:00:00 2001 From: xolatile Date: Sat, 28 Sep 2024 13:33:22 -0400 Subject: [PATCH] Porting older program... --- .gitignore | 1 + LICENSE | 625 ++++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 21 ++ compile.sh | 7 + install.sh | 8 + language/ada.h | 33 +++ language/assembly.h | 57 +++++ language/c++.h | 36 +++ language/c.h | 31 +++ language/eaxhla.h | 69 ++++++ language/flat.h | 66 ++++++ language/fortran.h | 41 ++++ language/xofya.h | 32 +++ xarbon.c | 270 +++++++++++++++++++++++ xarbon.png | Bin 0 -> 137679 bytes xarbon_font.png | Bin 0 -> 1406 bytes 16 files changed, 1297 insertions(+) create mode 100644 .gitignore create mode 100755 LICENSE create mode 100755 README.md create mode 100755 compile.sh create mode 100755 install.sh create mode 100644 language/ada.h create mode 100644 language/assembly.h create mode 100644 language/c++.h create mode 100644 language/c.h create mode 100644 language/eaxhla.h create mode 100644 language/flat.h create mode 100644 language/fortran.h create mode 100644 language/xofya.h create mode 100644 xarbon.c create mode 100644 xarbon.png create mode 100644 xarbon_font.png diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..78c8e66 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +xarbon diff --git a/LICENSE b/LICENSE new file mode 100755 index 0000000..e142a52 --- /dev/null +++ b/LICENSE @@ -0,0 +1,625 @@ +GNU GENERAL PUBLIC LICENSE + +Version 3, 29 June 2007 + +Copyright © 2007 Free Software Foundation, Inc. + +Everyone is permitted to copy and distribute verbatim copies of this license +document, but changing it is not allowed. + +Preamble + +The GNU General Public License is a free, copyleft license for software and +other kinds of works. + +The licenses for most software and other practical works are designed to take +away your freedom to share and change the works. By contrast, the GNU General +Public License is intended to guarantee your freedom to share and change all +versions of a program--to make sure it remains free software for all its users. +We, the Free Software Foundation, use the GNU General Public License for most +of our software; it applies also to any other work released this way by its +authors. You can apply it to your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our +General Public Licenses are designed to make sure that you have the freedom +to distribute copies of free software (and charge for them if you wish), that +you receive source code or can get it if you want it, that you can change +the software or use pieces of it in new free programs, and that you know you +can do these things. + +To protect your rights, we need to prevent others from denying you these rights +or asking you to surrender the rights. Therefore, you have certain responsibilities +if you distribute copies of the software, or if you modify it: responsibilities +to respect the freedom of others. + +For example, if you distribute copies of such a program, whether gratis or +for a fee, you must pass on to the recipients the same freedoms that you received. +You must make sure that they, too, receive or can get the source code. And +you must show them these terms so they know their rights. + +Developers that use the GNU GPL protect your rights with two steps: (1) assert +copyright on the software, and (2) offer you this License giving you legal +permission to copy, distribute and/or modify it. + +For the developers' and authors' protection, the GPL clearly explains that +there is no warranty for this free software. For both users' and authors' +sake, the GPL requires that modified versions be marked as changed, so that +their problems will not be attributed erroneously to authors of previous versions. + +Some devices are designed to deny users access to install or run modified +versions of the software inside them, although the manufacturer can do so. +This is fundamentally incompatible with the aim of protecting users' freedom +to change the software. The systematic pattern of such abuse occurs in the +area of products for individuals to use, which is precisely where it is most +unacceptable. Therefore, we have designed this version of the GPL to prohibit +the practice for those products. If such problems arise substantially in other +domains, we stand ready to extend this provision to those domains in future +versions of the GPL, as needed to protect the freedom of users. + +Finally, every program is threatened constantly by software patents. States +should not allow patents to restrict development and use of software on general-purpose +computers, but in those that do, we wish to avoid the special danger that +patents applied to a free program could make it effectively proprietary. To +prevent this, the GPL assures that patents cannot be used to render the program +non-free. + +The precise terms and conditions for copying, distribution and modification +follow. + +TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + +"Copyright" also means copyright-like laws that apply to other kinds of works, +such as semiconductor masks. + +"The Program" refers to any copyrightable work licensed under this License. +Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals +or organizations. + +To "modify" a work means to copy from or adapt all or part of the work in +a fashion requiring copyright permission, other than the making of an exact +copy. The resulting work is called a "modified version" of the earlier work +or a work "based on" the earlier work. + +A "covered work" means either the unmodified Program or a work based on the +Program. + +To "propagate" a work means to do anything with it that, without permission, +would make you directly or secondarily liable for infringement under applicable +copyright law, except executing it on a computer or modifying a private copy. +Propagation includes copying, distribution (with or without modification), +making available to the public, and in some countries other activities as +well. + +To "convey" a work means any kind of propagation that enables other parties +to make or receive copies. Mere interaction with a user through a computer +network, with no transfer of a copy, is not conveying. + +An interactive user interface displays "Appropriate Legal Notices" to the +extent that it includes a convenient and prominently visible feature that +(1) displays an appropriate copyright notice, and (2) tells the user that +there is no warranty for the work (except to the extent that warranties are +provided), that licensees may convey the work under this License, and how +to view a copy of this License. If the interface presents a list of user commands +or options, such as a menu, a prominent item in the list meets this criterion. + + 1. Source Code. + +The "source code" for a work means the preferred form of the work for making +modifications to it. "Object code" means any non-source form of a work. + +A "Standard Interface" means an interface that either is an official standard +defined by a recognized standards body, or, in the case of interfaces specified +for a particular programming language, one that is widely used among developers +working in that language. + +The "System Libraries" of an executable work include anything, other than +the work as a whole, that (a) is included in the normal form of packaging +a Major Component, but which is not part of that Major Component, and (b) +serves only to enable use of the work with that Major Component, or to implement +a Standard Interface for which an implementation is available to the public +in source code form. A "Major Component", in this context, means a major essential +component (kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to produce +the work, or an object code interpreter used to run it. + +The "Corresponding Source" for a work in object code form means all the source +code needed to generate, install, and (for an executable work) run the object +code and to modify the work, including scripts to control those activities. +However, it does not include the work's System Libraries, or general-purpose +tools or generally available free programs which are used unmodified in performing +those activities but which are not part of the work. For example, Corresponding +Source includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically linked +subprograms that the work is specifically designed to require, such as by +intimate data communication or control flow between those subprograms and +other parts of the work. + +The Corresponding Source need not include anything that users can regenerate +automatically from other parts of the Corresponding Source. + + The Corresponding Source for a work in source code form is that same work. + + 2. Basic Permissions. + +All rights granted under this License are granted for the term of copyright +on the Program, and are irrevocable provided the stated conditions are met. +This License explicitly affirms your unlimited permission to run the unmodified +Program. The output from running a covered work is covered by this License +only if the output, given its content, constitutes a covered work. This License +acknowledges your rights of fair use or other equivalent, as provided by copyright +law. + +You may make, run and propagate covered works that you do not convey, without +conditions so long as your license otherwise remains in force. You may convey +covered works to others for the sole purpose of having them make modifications +exclusively for you, or provide you with facilities for running those works, +provided that you comply with the terms of this License in conveying all material +for which you do not control copyright. Those thus making or running the covered +works for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of your copyrighted +material outside their relationship with you. + +Conveying under any other circumstances is permitted solely under the conditions +stated below. Sublicensing is not allowed; section 10 makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + +No covered work shall be deemed part of an effective technological measure +under any applicable law fulfilling obligations under article 11 of the WIPO +copyright treaty adopted on 20 December 1996, or similar laws prohibiting +or restricting circumvention of such measures. + +When you convey a covered work, you waive any legal power to forbid circumvention +of technological measures to the extent such circumvention is effected by +exercising rights under this License with respect to the covered work, and +you disclaim any intention to limit operation or modification of the work +as a means of enforcing, against the work's users, your or third parties' +legal rights to forbid circumvention of technological measures. + + 4. Conveying Verbatim Copies. + +You may convey verbatim copies of the Program's source code as you receive +it, in any medium, provided that you conspicuously and appropriately publish +on each copy an appropriate copyright notice; keep intact all notices stating +that this License and any non-permissive terms added in accord with section +7 apply to the code; keep intact all notices of the absence of any warranty; +and give all recipients a copy of this License along with the Program. + +You may charge any price or no price for each copy that you convey, and you +may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + +You may convey a work based on the Program, or the modifications to produce +it from the Program, in the form of source code under the terms of section +4, provided that you also meet all of these conditions: + +a) The work must carry prominent notices stating that you modified it, and +giving a relevant date. + +b) The work must carry prominent notices stating that it is released under +this License and any conditions added under section 7. This requirement modifies +the requirement in section 4 to "keep intact all notices". + +c) You must license the entire work, as a whole, under this License to anyone +who comes into possession of a copy. This License will therefore apply, along +with any applicable section 7 additional terms, to the whole of the work, +and all its parts, regardless of how they are packaged. This License gives +no permission to license the work in any other way, but it does not invalidate +such permission if you have separately received it. + +d) If the work has interactive user interfaces, each must display Appropriate +Legal Notices; however, if the Program has interactive interfaces that do +not display Appropriate Legal Notices, your work need not make them do so. + +A compilation of a covered work with other separate and independent works, +which are not by their nature extensions of the covered work, and which are +not combined with it such as to form a larger program, in or on a volume of +a storage or distribution medium, is called an "aggregate" if the compilation +and its resulting copyright are not used to limit the access or legal rights +of the compilation's users beyond what the individual works permit. Inclusion +of a covered work in an aggregate does not cause this License to apply to +the other parts of the aggregate. + + 6. Conveying Non-Source Forms. + +You may convey a covered work in object code form under the terms of sections +4 and 5, provided that you also convey the machine-readable Corresponding +Source under the terms of this License, in one of these ways: + +a) Convey the object code in, or embodied in, a physical product (including +a physical distribution medium), accompanied by the Corresponding Source fixed +on a durable physical medium customarily used for software interchange. + +b) Convey the object code in, or embodied in, a physical product (including +a physical distribution medium), accompanied by a written offer, valid for +at least three years and valid for as long as you offer spare parts or customer +support for that product model, to give anyone who possesses the object code +either (1) a copy of the Corresponding Source for all the software in the +product that is covered by this License, on a durable physical medium customarily +used for software interchange, for a price no more than your reasonable cost +of physically performing this conveying of source, or (2) access to copy the +Corresponding Source from a network server at no charge. + +c) Convey individual copies of the object code with a copy of the written +offer to provide the Corresponding Source. This alternative is allowed only +occasionally and noncommercially, and only if you received the object code +with such an offer, in accord with subsection 6b. + +d) Convey the object code by offering access from a designated place (gratis +or for a charge), and offer equivalent access to the Corresponding Source +in the same way through the same place at no further charge. You need not +require recipients to copy the Corresponding Source along with the object +code. If the place to copy the object code is a network server, the Corresponding +Source may be on a different server (operated by you or a third party) that +supports equivalent copying facilities, provided you maintain clear directions +next to the object code saying where to find the Corresponding Source. Regardless +of what server hosts the Corresponding Source, you remain obligated to ensure +that it is available for as long as needed to satisfy these requirements. + +e) Convey the object code using peer-to-peer transmission, provided you inform +other peers where the object code and Corresponding Source of the work are +being offered to the general public at no charge under subsection 6d. + +A separable portion of the object code, whose source code is excluded from +the Corresponding Source as a System Library, need not be included in conveying +the object code work. + +A "User Product" is either (1) a "consumer product", which means any tangible +personal property which is normally used for personal, family, or household +purposes, or (2) anything designed or sold for incorporation into a dwelling. +In determining whether a product is a consumer product, doubtful cases shall +be resolved in favor of coverage. For a particular product received by a particular +user, "normally used" refers to a typical or common use of that class of product, +regardless of the status of the particular user or of the way in which the +particular user actually uses, or expects or is expected to use, the product. +A product is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent the +only significant mode of use of the product. + +"Installation Information" for a User Product means any methods, procedures, +authorization keys, or other information required to install and execute modified +versions of a covered work in that User Product from a modified version of +its Corresponding Source. The information must suffice to ensure that the +continued functioning of the modified object code is in no case prevented +or interfered with solely because modification has been made. + +If you convey an object code work under this section in, or with, or specifically +for use in, a User Product, and the conveying occurs as part of a transaction +in which the right of possession and use of the User Product is transferred +to the recipient in perpetuity or for a fixed term (regardless of how the +transaction is characterized), the Corresponding Source conveyed under this +section must be accompanied by the Installation Information. But this requirement +does not apply if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has been installed +in ROM). + +The requirement to provide Installation Information does not include a requirement +to continue to provide support service, warranty, or updates for a work that +has been modified or installed by the recipient, or for the User Product in +which it has been modified or installed. Access to a network may be denied +when the modification itself materially and adversely affects the operation +of the network or violates the rules and protocols for communication across +the network. + +Corresponding Source conveyed, and Installation Information provided, in accord +with this section must be in a format that is publicly documented (and with +an implementation available to the public in source code form), and must require +no special password or key for unpacking, reading or copying. + + 7. Additional Terms. + +"Additional permissions" are terms that supplement the terms of this License +by making exceptions from one or more of its conditions. Additional permissions +that are applicable to the entire Program shall be treated as though they +were included in this License, to the extent that they are valid under applicable +law. If additional permissions apply only to part of the Program, that part +may be used separately under those permissions, but the entire Program remains +governed by this License without regard to the additional permissions. + +When you convey a copy of a covered work, you may at your option remove any +additional permissions from that copy, or from any part of it. (Additional +permissions may be written to require their own removal in certain cases when +you modify the work.) You may place additional permissions on material, added +by you to a covered work, for which you have or can give appropriate copyright +permission. + +Notwithstanding any other provision of this License, for material you add +to a covered work, you may (if authorized by the copyright holders of that +material) supplement the terms of this License with terms: + +a) Disclaiming warranty or limiting liability differently from the terms of +sections 15 and 16 of this License; or + +b) Requiring preservation of specified reasonable legal notices or author +attributions in that material or in the Appropriate Legal Notices displayed +by works containing it; or + +c) Prohibiting misrepresentation of the origin of that material, or requiring +that modified versions of such material be marked in reasonable ways as different +from the original version; or + +d) Limiting the use for publicity purposes of names of licensors or authors +of the material; or + +e) Declining to grant rights under trademark law for use of some trade names, +trademarks, or service marks; or + +f) Requiring indemnification of licensors and authors of that material by +anyone who conveys the material (or modified versions of it) with contractual +assumptions of liability to the recipient, for any liability that these contractual +assumptions directly impose on those licensors and authors. + +All other non-permissive additional terms are considered "further restrictions" +within the meaning of section 10. If the Program as you received it, or any +part of it, contains a notice stating that it is governed by this License +along with a term that is a further restriction, you may remove that term. +If a license document contains a further restriction but permits relicensing +or conveying under this License, you may add to a covered work material governed +by the terms of that license document, provided that the further restriction +does not survive such relicensing or conveying. + +If you add terms to a covered work in accord with this section, you must place, +in the relevant source files, a statement of the additional terms that apply +to those files, or a notice indicating where to find the applicable terms. + +Additional terms, permissive or non-permissive, may be stated in the form +of a separately written license, or stated as exceptions; the above requirements +apply either way. + + 8. Termination. + +You may not propagate or modify a covered work except as expressly provided +under this License. Any attempt otherwise to propagate or modify it is void, +and will automatically terminate your rights under this License (including +any patent licenses granted under the third paragraph of section 11). + +However, if you cease all violation of this License, then your license from +a particular copyright holder is reinstated (a) provisionally, unless and +until the copyright holder explicitly and finally terminates your license, +and (b) permanently, if the copyright holder fails to notify you of the violation +by some reasonable means prior to 60 days after the cessation. + +Moreover, your license from a particular copyright holder is reinstated permanently +if the copyright holder notifies you of the violation by some reasonable means, +this is the first time you have received notice of violation of this License +(for any work) from that copyright holder, and you cure the violation prior +to 30 days after your receipt of the notice. + +Termination of your rights under this section does not terminate the licenses +of parties who have received copies or rights from you under this License. +If your rights have been terminated and not permanently reinstated, you do +not qualify to receive new licenses for the same material under section 10. + + 9. Acceptance Not Required for Having Copies. + +You are not required to accept this License in order to receive or run a copy +of the Program. Ancillary propagation of a covered work occurring solely as +a consequence of using peer-to-peer transmission to receive a copy likewise +does not require acceptance. However, nothing other than this License grants +you permission to propagate or modify any covered work. These actions infringe +copyright if you do not accept this License. Therefore, by modifying or propagating +a covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + +Each time you convey a covered work, the recipient automatically receives +a license from the original licensors, to run, modify and propagate that work, +subject to this License. You are not responsible for enforcing compliance +by third parties with this License. + +An "entity transaction" is a transaction transferring control of an organization, +or substantially all assets of one, or subdividing an organization, or merging +organizations. If propagation of a covered work results from an entity transaction, +each party to that transaction who receives a copy of the work also receives +whatever licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the Corresponding +Source of the work from the predecessor in interest, if the predecessor has +it or can get it with reasonable efforts. + +You may not impose any further restrictions on the exercise of the rights +granted or affirmed under this License. For example, you may not impose a +license fee, royalty, or other charge for exercise of rights granted under +this License, and you may not initiate litigation (including a cross-claim +or counterclaim in a lawsuit) alleging that any patent claim is infringed +by making, using, selling, offering for sale, or importing the Program or +any portion of it. + + 11. Patents. + +A "contributor" is a copyright holder who authorizes use under this License +of the Program or a work on which the Program is based. The work thus licensed +is called the contributor's "contributor version". + +A contributor's "essential patent claims" are all patent claims owned or controlled +by the contributor, whether already acquired or hereafter acquired, that would +be infringed by some manner, permitted by this License, of making, using, +or selling its contributor version, but do not include claims that would be +infringed only as a consequence of further modification of the contributor +version. For purposes of this definition, "control" includes the right to +grant patent sublicenses in a manner consistent with the requirements of this +License. + +Each contributor grants you a non-exclusive, worldwide, royalty-free patent +license under the contributor's essential patent claims, to make, use, sell, +offer for sale, import and otherwise run, modify and propagate the contents +of its contributor version. + +In the following three paragraphs, a "patent license" is any express agreement +or commitment, however denominated, not to enforce a patent (such as an express +permission to practice a patent or covenant not to sue for patent infringement). +To "grant" such a patent license to a party means to make such an agreement +or commitment not to enforce a patent against the party. + +If you convey a covered work, knowingly relying on a patent license, and the +Corresponding Source of the work is not available for anyone to copy, free +of charge and under the terms of this License, through a publicly available +network server or other readily accessible means, then you must either (1) +cause the Corresponding Source to be so available, or (2) arrange to deprive +yourself of the benefit of the patent license for this particular work, or +(3) arrange, in a manner consistent with the requirements of this License, +to extend the patent license to downstream recipients. "Knowingly relying" +means you have actual knowledge that, but for the patent license, your conveying +the covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that country +that you have reason to believe are valid. + +If, pursuant to or in connection with a single transaction or arrangement, +you convey, or propagate by procuring conveyance of, a covered work, and grant +a patent license to some of the parties receiving the covered work authorizing +them to use, propagate, modify or convey a specific copy of the covered work, +then the patent license you grant is automatically extended to all recipients +of the covered work and works based on it. + +A patent license is "discriminatory" if it does not include within the scope +of its coverage, prohibits the exercise of, or is conditioned on the non-exercise +of one or more of the rights that are specifically granted under this License. +You may not convey a covered work if you are a party to an arrangement with +a third party that is in the business of distributing software, under which +you make payment to the third party based on the extent of your activity of +conveying the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory patent +license (a) in connection with copies of the covered work conveyed by you +(or copies made from those copies), or (b) primarily for and in connection +with specific products or compilations that contain the covered work, unless +you entered into that arrangement, or that patent license was granted, prior +to 28 March 2007. + +Nothing in this License shall be construed as excluding or limiting any implied +license or other defenses to infringement that may otherwise be available +to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + +If conditions are imposed on you (whether by court order, agreement or otherwise) +that contradict the conditions of this License, they do not excuse you from +the conditions of this License. If you cannot convey a covered work so as +to satisfy simultaneously your obligations under this License and any other +pertinent obligations, then as a consequence you may not convey it at all. +For example, if you agree to terms that obligate you to collect a royalty +for further conveying from those to whom you convey the Program, the only +way you could satisfy both those terms and this License would be to refrain +entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + +Notwithstanding any other provision of this License, you have permission to +link or combine any covered work with a work licensed under version 3 of the +GNU Affero General Public License into a single combined work, and to convey +the resulting work. The terms of this License will continue to apply to the +part which is the covered work, but the special requirements of the GNU Affero +General Public License, section 13, concerning interaction through a network +will apply to the combination as such. + + 14. Revised Versions of this License. + +The Free Software Foundation may publish revised and/or new versions of the +GNU General Public License from time to time. Such new versions will be similar +in spirit to the present version, but may differ in detail to address new +problems or concerns. + +Each version is given a distinguishing version number. If the Program specifies +that a certain numbered version of the GNU General Public License "or any +later version" applies to it, you have the option of following the terms and +conditions either of that numbered version or of any later version published +by the Free Software Foundation. If the Program does not specify a version +number of the GNU General Public License, you may choose any version ever +published by the Free Software Foundation. + +If the Program specifies that a proxy can decide which future versions of +the GNU General Public License can be used, that proxy's public statement +of acceptance of a version permanently authorizes you to choose that version +for the Program. + +Later license versions may give you additional or different permissions. However, +no additional obligations are imposed on any author or copyright holder as +a result of your choosing to follow a later version. + + 15. Disclaimer of Warranty. + +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE +LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER +EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM +PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR +CORRECTION. + + 16. Limitation of Liability. + +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL +ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM +AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, +INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO +USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED +INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE +PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER +PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + +If the disclaimer of warranty and limitation of liability provided above cannot +be given local legal effect according to their terms, reviewing courts shall +apply local law that most closely approximates an absolute waiver of all civil +liability in connection with the Program, unless a warranty or assumption +of liability accompanies a copy of the Program in return for a fee. END OF +TERMS AND CONDITIONS + +How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest possible +use to the public, the best way to achieve this is to make it free software +which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest to attach +them to the start of each source file to most effectively state the exclusion +of warranty; and each file should have at least the "copyright" line and a +pointer to where the full notice is found. + + + +Copyright (C) + +This program is free software: you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free Software +Foundation, either version 3 of the License, or (at your option) any later +version. + +This program is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + +If the program does terminal interaction, make it output a short notice like +this when it starts in an interactive mode: + + Copyright (C) + +This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + +This is free software, and you are welcome to redistribute it under certain +conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands might +be different; for a GUI interface, you would use an "about box". + +You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. For +more information on this, and how to apply and follow the GNU GPL, see . + +The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General Public +License instead of this License. But first, please read . diff --git a/README.md b/README.md new file mode 100755 index 0000000..1a8aa2c --- /dev/null +++ b/README.md @@ -0,0 +1,21 @@ +# xarbon + +xarbon -- Program for rendering source code as PNG image, offline, without Mac terminal! + +- Right now I'm doing the stupid shortcut of copying a font to a place it shouldn't be in... +- Everything related to my libraries is clean of all warning options on Clang, GCC and Valgrind. +- You can easily add new syntax support with it, for your own language or some that I didn't include. +- There are 3 ways to use this program, you can see them below, or use -h / --help to see it. +- There's many things to add, like highlighting for good and normal programming languages. + +Compile: `$ sh compile.sh` +Install: `$ sudo sh install.sh` + +How the hell do I use this thing: +``` +$ xarbon my_program.ext -- "This way, language is selected by the extension." +$ cat my_program.ext | xarbon [extension] -- "You need to specify the language, check -h / --help." +$ xarbon [extension] < my_program.ext -- "Again, since it's reading from standard stream..." +``` + +![screenshot](xarbon.png) diff --git a/compile.sh b/compile.sh new file mode 100755 index 0000000..a3a7f62 --- /dev/null +++ b/compile.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +set -xe + +gcc -ansi -Wall -Wextra -Wpedantic -Werror -Ofast -o xarbon xarbon.c -lpng + +exit diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..f5d8c84 --- /dev/null +++ b/install.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +set -xe + +cp xarbon /usr/local/bin/xarbon +cp xarbon_font.png /usr/local/bin/xarbon_font.png + +exit diff --git a/language/ada.h b/language/ada.h new file mode 100644 index 0000000..1dc7479 --- /dev/null +++ b/language/ada.h @@ -0,0 +1,33 @@ +static void highlight_ada (void) { + char * separators = ".,:;<=>+-*/&|()\" \t\r\n"; + + char * keywords [] = { + "abort", "else", "new", "return", "abs", "elsif", "not", "reverse", + "abstract", "end", "null", "accept", "entry", "select", "access", "of", + "separate", "aliased", "exit", "or", "some", "all", "others", "subtype", + "and", "for", "out", "array", "function", "at", "tagged", "generic", + "package", "task", "begin", "goto", "pragma", "body", "private", "then", + "type", "case", "in", "constant", "until", "is", "raise", "use", + "if", "declare", "range", "delay", "limited", "record", "when", "delta", + "loop", "rem", "while", "digits", "renames", "with", "do", "mod", + "requeue", "xor", "procedure", "protected", "interface", "synchronized", "exception", "overriding", + "terminate" + }; + + int word; + + syntax_define (false, false, "--", "\n", '\0', (int) 0xff777777, 0); + syntax_define (false, false, "'", "'", '\\', (int) 0xff7733cc, 0); + syntax_define (false, false, "\"", "\"", '\\', (int) 0xffcc3377, 0); + + for (word = 0; word != (int) (sizeof (keywords) / sizeof (keywords [0])); ++word) { + syntax_define (false, true, keywords [word], separators, '\0', (int) 0xff33ccee, 0); + } + + syntax_define (true, false, "()", "", '\0', (int) 0xffee5533, 0); + syntax_define (true, false, ".,:;<=>+-*/&|'", "", '\0', (int) 0xffeeaa33, 0); + + syntax_define (true, true, "0123456789", separators, '\0', (int) 0xffee33aa, 0); + syntax_define (true, true, "abcdefghijklmnopqrstuvwxyz", separators, '\0', (int) 0xffcccccc, 0); + syntax_define (true, true, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", separators, '\0', (int) 0xffeeeeee, 0); +} diff --git a/language/assembly.h b/language/assembly.h new file mode 100644 index 0000000..6d769bb --- /dev/null +++ b/language/assembly.h @@ -0,0 +1,57 @@ +static void highlight_assembly (void) { + char * separators = ".,+-[]<> \t\r\n"; + + char * instructions [] = { + "mov", "movabs", "movapd", "movaps", "movebe", "movsd", "movsx", "movzx", + "movsxd", "movd", "movq", "movs", "movsb", "movsw", "movsd", "movsq", + "cmovmp", "cmovrcxz", "cmovc", "cmovnc", "cmove", "cmovne", "cmovz", "cmovnz", + "cmovg", "cmovng", "cmovge", "cmovnge", "cmovl", "cmovnl", "cmovle", "cmovnle", + "cmova", "cmovna", "cmovae", "cmovnae", "cmovb", "cmovnb", "cmovbe", "cmovnbe", + "cmovs", "cmovns", "cmovo", "cmovno", "cmovp", "cmovnp", "cmovpo", "cmovpe", + "cmp", "cmps", "cmpsb", "cmpsw", "cmpsd", "cmpsq", "cmpxchg", "lea", + "monitor", "cpuid", "in", "out", "syscall", "sysenter", "sysret", "sysexit", + "swap", "bswap", "pop", "push", "call", "ret", "enter", "leave", + "and", "or", "not", "neg", "sal", "sar", "shl", "shr", + "inc", "dec", "add", "sub", "mul", "div", "imul", "idiv", + "nop", "fnop", "adc", "sbb", "aaa", "aas", "aam", "aad", + "jmp", "jrcxz", "jc", "jnc", "je", "jne", "jz", "jnz", + "jg", "jng", "jge", "jnge", "jl", "jnl", "jle", "jnle", + "ja", "jna", "jae", "jnae", "jb", "jnb", "jbe", "jnbe", + "js", "jns", "jo", "jno", "jp", "jnp", "jpo", "jpe", + "rep", "repe", "repz", "repne", "repnz", "loop", "loope", "loopne" + }; + + char * registers [] = { + "rax", "rcx", "rdx", "rbx", "rsp", "rbp", "rsi", "rdi", + "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15", + "eax", "ecx", "edx", "ebx", "esp", "ebp", "esi", "edi", + "r8d", "r9d", "r10d", "r11d", "r12d", "r13d", "r14d", "r15d", + "ax", "cx", "dx", "bx", "sp", "bp", "si", "di", + "r8w", "r9w", "r10w", "r11w", "r12w", "r13w", "r14w", "r15w", + "al", "cl", "dl", "bl", "spl", "bpl", "sil", "dil", + "r8b", "r9b", "r10b", "r11b", "r12b", "r13b", "r14b", "r15b", + "ah", "ch", "dh", "bh" + }; + + int word; + + syntax_define (false, false, ";", "\n", '\0', (int) 0xff777777, 0); + syntax_define (false, false, "'", "'", '\\', (int) 0xff7733cc, 0); + syntax_define (false, false, "\"", "\"", '\\', (int) 0xffcc3377, 0); + + for (word = 0; word != (int) (sizeof (instructions) / sizeof (instructions [0])); ++word) { + syntax_define (false, true, instructions [word], separators, '\0', (int) 0xff33ccee, 0); + } + + for (word = 0; word != (int) (sizeof (registers) / sizeof (registers [0])); ++word) { + syntax_define (false, true, registers [word], separators, '\0', (int) 0xffccaa77, 0); + } + + syntax_define (true, false, "()[]{}", "", '\0', (int) 0xffee5533, 0); + syntax_define (true, false, ".,+*-/%$<>", "", '\0', (int) 0xffeeaa33, 0); + + syntax_define (true, true, "0123456789", separators, '\0', (int) 0xffee33aa, 0); + syntax_define (true, true, "abcdefghijklmnopqrstuvwxyz", separators, '\0', (int) 0xffcccccc, 0); + syntax_define (true, true, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", separators, '\0', (int) 0xffeeeeee, 0); + syntax_define (true, true, "_", separators, '\0', (int) 0xffaaaaaa, 0); +} diff --git a/language/c++.h b/language/c++.h new file mode 100644 index 0000000..b8aa5fa --- /dev/null +++ b/language/c++.h @@ -0,0 +1,36 @@ +static void highlight_cpp (void) { + char * separators = ".,:;<=>+-*/%!&~^?|()[]{}'\" \t\r\n"; + + char * keywords [] = { + "alignas", "alignof", "and", "asm", "auto", "bool", "break", "case", + "catch", "char", "class", "compl", "concept", "const", "consteval", "constexpr", + "constinit", "continue", "decltype", "default", "delete", "do", "double", "else", + "enum", "explicit", "export", "extern", "false", "float", "for", "friend", + "goto", "if", "inline", "int", "long", "mutable", "namespace", "new", + "noexcept", "not", "nullptr", "operator", "or", "private", "protected", "public", + "reflexpr", "register", "requires", "return", "short", "signed", "sizeof", "static", + "struct", "switch", "synchronized", "template", "this", "throw", "true", "try", + "typedef", "typeid", "typename", "union", "unsigned", "using", "virtual", "void", + "volatile", "while", "xor", "final", "override", "import", "module" + }; + + int word; + + syntax_define (false, false, "/*", "*/", '\0', (int) 0xff777777, 0); + syntax_define (false, false, "//", "\n", '\0', (int) 0xff777777, 0); + syntax_define (false, false, "#", "\n", '\\', (int) 0xff3377aa, 0); + syntax_define (false, false, "'", "'", '\\', (int) 0xff7733cc, 0); + syntax_define (false, false, "\"", "\"", '\\', (int) 0xffcc3377, 0); + + for (word = 0; word != (int) (sizeof (keywords) / sizeof (keywords [0])); ++word) { + syntax_define (false, true, keywords [word], separators, '\0', (int) 0xff33ccee, 0); + } + + syntax_define (true, false, "()[]{}", "", '\0', (int) 0xffee5533, 0); + syntax_define (true, false, ".,:;<=>+*-/%!&~^?|", "", '\0', (int) 0xffeeaa33, 0); + + syntax_define (true, true, "0123456789", separators, '\0', (int) 0xffee33aa, 0); + syntax_define (true, true, "abcdefghijklmnopqrstuvwxyz", separators, '\0', (int) 0xffcccccc, 0); + syntax_define (true, true, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", separators, '\0', (int) 0xffeeeeee, 0); + syntax_define (true, true, "_", separators, '\0', (int) 0xffaaaaaa, 0); +} diff --git a/language/c.h b/language/c.h new file mode 100644 index 0000000..044f18c --- /dev/null +++ b/language/c.h @@ -0,0 +1,31 @@ +static void highlight_c (void) { + char * separators = ".,:;<=>+-*/%!&~^?|()[]{}'\" \t\r\n"; + + char * keywords [] = { + "register", "volatile", "auto", "const", "static", "extern", "if", "else", + "do", "while", "for", "continue", "switch", "case", "default", "break", + "enum", "union", "struct", "typedef", "goto", "void", "return", "sizeof", + "char", "short", "int", "long", "signed", "unsigned", "float", "double" + }; + + int word; + + syntax_define (false, false, "/*", "*/", '\0', (int) 0xff777777, 0); + syntax_define (false, false, "/**", "*/", '\0', (int) 0xff775555, 0); + syntax_define (false, false, "//", "\n", '\0', (int) 0xff777777, 0); + syntax_define (false, false, "#", "\n", '\\', (int) 0xff3377aa, 0); + syntax_define (false, false, "'", "'", '\\', (int) 0xff7733cc, 0); + syntax_define (false, false, "\"", "\"", '\\', (int) 0xffcc3377, 0); + + for (word = 0; word != (int) (sizeof (keywords) / sizeof (keywords [0])); ++word) { + syntax_define (false, true, keywords [word], separators, '\0', (int) 0xff33ccee, 0); + } + + syntax_define (true, false, "()[]{}", "", '\0', (int) 0xffee5533, 0); + syntax_define (true, false, ".,:;<=>+*-/%!&~^?|", "", '\0', (int) 0xffeeaa33, 0); + + syntax_define (true, true, "0123456789", separators, '\0', (int) 0xffee33aa, 0); + syntax_define (true, true, "abcdefghijklmnopqrstuvwxyz", separators, '\0', (int) 0xffcccccc, 0); + syntax_define (true, true, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", separators, '\0', (int) 0xffeeeeee, 0); + syntax_define (true, true, "_", separators, '\0', (int) 0xffaaaaaa, 0); +} diff --git a/language/eaxhla.h b/language/eaxhla.h new file mode 100644 index 0000000..eb2834c --- /dev/null +++ b/language/eaxhla.h @@ -0,0 +1,69 @@ +static void highlight_eaxhla (void) { + char * separators = ".,+-[]<> \t\r\n"; + + char * declarations [] = { + "s8", "s16", "s32", "s64", "u8", "u16", "u32", "u64", + "f32", "f64", "f80", "v0", "s128", "s256", "u128", "u256", + "program", "procedure", "machine", "library", "fast", "unix", "begin", "end", + "if", "then", "else", "repeat", "break", "continue", "until", "exit" + }; + + char * instructions [] = { + "jnpe", "jpo", "jnpo", "jpe", "jnb", "jae", "jnbe", "ja", + "jna", "jbe", "jnae", "jb", "jnl", "jge", "jnle", "jg", + "jng", "jle", "jnge", "jl", "cmovng", "cmovle", "cmovnge", "cmovl", + "cmovnpe", "cmovpo", "cmovnpo", "cmovpe", "cmovnb", "cmovae", "cmovnbe", "cmova", + "cmovna", "cmovbe", "cmovnae", "cmovb", "cmovnl", "cmovge", "cmovnle", "cmovg", + "setnpe", "setpo", "setnpo", "setpe", "setnb", "setae", "setnbe", "seta", + "setna", "setbe", "setnae", "setb", "setnl", "setge", "setnle", "setg", + "setng", "setle", "setnge", "setl", "enter", "call", "jmp", "mov", + "add", "or", "adc", "sbb", "and", "sub", "xor", "cmp", + "inc", "dec", "not", "neg", "mul", "imul", "div", "idiv", + "fadd", "fmul", "fcom", "fcomp", "fsub", "fsubr", "fdiv", "fdivr", + "rol", "ror", "rcl", "rcr", "sal", "shr", "shl", "sar", + "nop", "retn", "retf", "leave", "popf", "pushf", "in", "out", + "syscall", "cpuid", "fnop", "fchs", "fabs", "ftst", "fxam", "fld1", + "fldl2t", "fldl2e", "fldpi", "fldlg2", "fldln2", "fldz", "f2xm1", "fyl2x", + "fptan", "fpatan", "fxtract", "fprem1", "fdecstp", "fincstp", "fprem", "fyl2xp1", + "fsqrt", "fsincos", "frndint", "fscale", "fsin", "fcos", "pop", "push", + "bswap", "bsf", "bsr", "loop", "loope", "loopne" + }; + + char * registers [] = { + "rax", "rcx", "rdx", "rbx", "rsp", "rbp", "rsi", "rdi", + "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15", + "eax", "ecx", "edx", "ebx", "esp", "ebp", "esi", "edi", + "r8d", "r9d", "r10d", "r11d", "r12d", "r13d", "r14d", "r15d", + "ax", "cx", "dx", "bx", "sp", "bp", "si", "di", + "r8w", "r9w", "r10w", "r11w", "r12w", "r13w", "r14w", "r15w", + "al", "cl", "dl", "bl", "spl", "bpl", "sil", "dil", + "r8b", "r9b", "r10b", "r11b", "r12b", "r13b", "r14b", "r15b" + }; + + int word; + + syntax_define (false, false, "#", "\n", '\0', (int) 0xff775555, 0); + syntax_define (false, false, "//", "\n", '\0', (int) 0xff777777, 0); + syntax_define (false, false, "'", "'", '\\', (int) 0xff7733cc, 0); + syntax_define (false, false, "\"", "\"", '\\', (int) 0xffcc3377, 0); + + for (word = 0; word != (int) (sizeof (declarations) / sizeof (declarations [0])); ++word) { + syntax_define (false, true, declarations [word], separators, '\0', (int) 0xff33ccee, 0); + } + + for (word = 0; word != (int) (sizeof (instructions) / sizeof (instructions [0])); ++word) { + syntax_define (false, true, instructions [word], separators, '\0', (int) 0xff55aacc, 0); + } + + for (word = 0; word != (int) (sizeof (registers) / sizeof (registers [0])); ++word) { + syntax_define (false, true, registers [word], separators, '\0', (int) 0xffccaa77, 0); + } + + syntax_define (true, false, "()[]{}", "", '\0', (int) 0xffee5533, 0); + syntax_define (true, false, ".,+*-/%$<>", "", '\0', (int) 0xffeeaa33, 0); + + syntax_define (true, true, "0123456789", separators, '\0', (int) 0xffee33aa, 0); + syntax_define (true, true, "abcdefghijklmnopqrstuvwxyz", separators, '\0', (int) 0xffcccccc, 0); + syntax_define (true, true, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", separators, '\0', (int) 0xffeeeeee, 0); + syntax_define (true, true, "_", separators, '\0', (int) 0xffaaaaaa, 0); +} diff --git a/language/flat.h b/language/flat.h new file mode 100644 index 0000000..01e5c5d --- /dev/null +++ b/language/flat.h @@ -0,0 +1,66 @@ +static void highlight_flat (void) { + char * separators = ".,+-=:;(){}[]%$<> \t\r\n"; + + char * instructions [] = { + "mov", "movabs", "movapd", "movaps", "movebe", "movsd", "movsx", "movzx", + "movsxd", "movd", "movq", "movs", "movsb", "movsw", "movsd", "movsq", + "cmovmp", "cmovrcxz", "cmovc", "cmovnc", "cmove", "cmovne", "cmovz", "cmovnz", + "cmovg", "cmovng", "cmovge", "cmovnge", "cmovl", "cmovnl", "cmovle", "cmovnle", + "cmova", "cmovna", "cmovae", "cmovnae", "cmovb", "cmovnb", "cmovbe", "cmovnbe", + "cmovs", "cmovns", "cmovo", "cmovno", "cmovp", "cmovnp", "cmovpo", "cmovpe", + "cmp", "cmps", "cmpsb", "cmpsw", "cmpsd", "cmpsq", "cmpxchg", "lea", + "monitor", "cpuid", "in", "out", "syscall", "sysenter", "sysret", "sysexit", + "swap", "bswap", "pop", "push", "call", "ret", "enter", "leave", + "and", "or", "not", "neg", "sal", "sar", "shl", "shr", + "inc", "dec", "add", "sub", "mul", "div", "imul", "idiv", + "nop", "fnop", "adc", "sbb", "aaa", "aas", "aam", "aad", + "jmp", "jrcxz", "jc", "jnc", "je", "jne", "jz", "jnz", + "jg", "jng", "jge", "jnge", "jl", "jnl", "jle", "jnle", + "ja", "jna", "jae", "jnae", "jb", "jnb", "jbe", "jnbe", + "js", "jns", "jo", "jno", "jp", "jnp", "jpo", "jpe", + "rep", "repe", "repz", "repne", "repnz", "loop", "loope", "loopne" + }; + + char * registers [] = { + "rax", "rcx", "rdx", "rbx", "rsp", "rbp", "rsi", "rdi", + "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15", + "eax", "ecx", "edx", "ebx", "esp", "ebp", "esi", "edi", + "r8d", "r9d", "r10d", "r11d", "r12d", "r13d", "r14d", "r15d", + "ax", "cx", "dx", "bx", "sp", "bp", "si", "di", + "r8w", "r9w", "r10w", "r11w", "r12w", "r13w", "r14w", "r15w", + "al", "cl", "dl", "bl", "spl", "bpl", "sil", "dil", + "r8b", "r9b", "r10b", "r11b", "r12b", "r13b", "r14b", "r15b", + "ah", "ch", "dh", "bh" + }; + + char * keywords [] = { + "format", "executable", "readable", "writable", "segment", "sector", "entry", "macro", + "db", "dw", "dd", "dq", "rb", "rw", "rd", "rq" + }; + + int word; + + syntax_define (false, false, ";", "\n", '\0', (int) 0xff777777, 0); + syntax_define (false, false, "'", "'", '\\', (int) 0xff7733cc, 0); + syntax_define (false, false, "\"", "\"", '\\', (int) 0xffcc3377, 0); + + for (word = 0; word != (int) (sizeof (instructions) / sizeof (instructions [0])); ++word) { + syntax_define (false, true, instructions [word], separators, '\0', (int) 0xff33ccee, 0); + } + + for (word = 0; word != (int) (sizeof (registers) / sizeof (registers [0])); ++word) { + syntax_define (false, true, registers [word], separators, '\0', (int) 0xffccaa77, 0); + } + + for (word = 0; word != (int) (sizeof (keywords) / sizeof (keywords [0])); ++word) { + syntax_define (false, true, keywords [word], separators, '\0', (int) 0xff55aacc, 0); + } + + syntax_define (true, false, "()[]{}", "", '\0', (int) 0xffee5533, 0); + syntax_define (true, false, ".,+-=:;%$<>", "", '\0', (int) 0xffeeaa33, 0); + + syntax_define (true, true, "0123456789", separators, '\0', (int) 0xffee33aa, 0); + syntax_define (true, true, "abcdefghijklmnopqrstuvwxyz", separators, '\0', (int) 0xffcccccc, 0); + syntax_define (true, true, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", separators, '\0', (int) 0xffeeeeee, 0); + syntax_define (true, true, "_", separators, '\0', (int) 0xffaaaaaa, 0); +} diff --git a/language/fortran.h b/language/fortran.h new file mode 100644 index 0000000..8ac2ad9 --- /dev/null +++ b/language/fortran.h @@ -0,0 +1,41 @@ +static void highlight_fortran (void) { + char * separators = ",:<=>+-*/&()[]\"\' \t\r\n"; + + char * keywords [] = { + "allocatable", "allocate", "associate", "backspace", "block", "call", "case", "common", + "contains", "cycle", "data", "deallocate", "d0", "do", "else", "elseif", + "end", "enddo", "endfile", "endif", "entry", "equivalence", "exit", "external", + "forall", "format", "function", "goto", "if", "implicit", "inquire", "intent", + "intrinsic", "module", "namelist", "none", "nullify", "only", "open", "optional", + "parameter", "pointer", "print", "private", "program", "public", "read", "recursive", + "return", "rewind", "save", "select", "sequence", "stop", "subroutine", "target", + "then", "to", "type", "use", "where", "write" + }; + + char * constants [] = { + ".and.", ".or.", ".not.", ".true.", ".false.", "in", "out", "character", + "integer", "logical", "real", "complex", "dimension", "modulo", "len", "advance" + }; + + int word; + + syntax_define (false, false, "!", "\n", '\0', (int) 0xff777777, 0); + syntax_define (false, false, "'", "'", '\\', (int) 0xff7733cc, 0); + syntax_define (false, false, "\"", "\"", '\\', (int) 0xffcc3377, 0); + + for (word = 0; word != (int) (sizeof (keywords) / sizeof (keywords [0])); ++word) { + syntax_define (false, true, keywords [word], separators, '\0', (int) 0xff33ccee, 0); + } + + for (word = 0; word != (int) (sizeof (constants) / sizeof (constants [0])); ++word) { + syntax_define (false, true, constants [word], separators, '\0', (int) 0xff55aacc, 0); + } + + syntax_define (true, false, "()[]", "", '\0', (int) 0xffee5533, 0); + syntax_define (true, false, ",:<=>+-*/&", "", '\0', (int) 0xffeeaa33, 0); + + syntax_define (true, true, "0123456789", separators, '\0', (int) 0xffee33aa, 0); + syntax_define (true, true, "abcdefghijklmnopqrstuvwxyz", separators, '\0', (int) 0xffcccccc, 0); + syntax_define (true, true, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", separators, '\0', (int) 0xffeeeeee, 0); + syntax_define (true, true, "_", separators, '\0', (int) 0xffaaaaaa, 0); +} diff --git a/language/xofya.h b/language/xofya.h new file mode 100644 index 0000000..75b378e --- /dev/null +++ b/language/xofya.h @@ -0,0 +1,32 @@ +static void highlight_xofya (void) { + char * separators = ".,:;<=>+-*/%!&~^?|(){}'\" \t\r\n"; + + char * keywords [] = { + "character", "natural", "integer", "logical", "address", "pointer", "union", "enter", + "array", "iterate", "enumerate", "include", "exclude", "execute", "if", "else", + "match", "for", "break", "cycle", "and", "or", "not", "true", + "false", "nil", "range", "then", "terminate", "procedure", "program", "package" + }; + + int word; + + syntax_define (false, false, "!", "\n", '\0', (int) 0xff775555, 0); + syntax_define (false, false, "---", "\n", '\0', (int) 0xff777777, 0); + syntax_define (false, false, "--!", "!--", '\0', (int) 0xff777777, 0); + syntax_define (false, false, "@", "\n", '\0', (int) 0xffcc7755, 0); + syntax_define (false, false, "", "\n", '\0', (int) 0xff5555cc, 0); + syntax_define (false, false, "\"", "\"", '\\', (int) 0xff7733cc, 0); + syntax_define (false, false, "'", "'", '\\', (int) 0xffcc3377, 0); + + for (word = 0; word != (int) (sizeof (keywords) / sizeof (keywords [0])); ++word) { + syntax_define (false, true, keywords [word], separators, '\0', (int) 0xff33ccee, 0); + } + + syntax_define (true, false, "(){}", "", '\0', (int) 0xffee5533, 0); + syntax_define (true, false, ".,:;<=>+*-/%!&~^?|", "", '\0', (int) 0xffeeaa33, 0); + + syntax_define (true, true, "0123456789", separators, '\0', (int) 0xffee33aa, 0); + syntax_define (true, true, "abcdefghijklmnopqrstuvwxyz", separators, '\0', (int) 0xffcccccc, 0); + syntax_define (true, true, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", separators, '\0', (int) 0xffeeeeee, 0); + syntax_define (true, true, "_", separators, '\0', (int) 0xffaaaaaa, 0); +} diff --git a/xarbon.c b/xarbon.c new file mode 100644 index 0000000..125242e --- /dev/null +++ b/xarbon.c @@ -0,0 +1,270 @@ +#include + +#include + +#include "language/ada.h" +#include "language/assembly.h" +#include "language/c.h" +#include "language/c++.h" +#include "language/eaxhla.h" +#include "language/flat.h" +#include "language/fortran.h" +#include "language/xofya.h" + +static struct { + void (* highlighter) (void); + char * option_short; + char * option_long; +} const language [] = { + { highlight_ada, "-A", "--ada" }, + { highlight_assembly, "-S", "--assembly" }, + { highlight_c, "-C", "--c" }, + { highlight_cpp, "-P", "--c++" }, + { highlight_eaxhla, "-E", "--eaxhla" }, + { highlight_flat, "-T", "--flat" }, + { highlight_fortran, "-F", "--fortran" }, + { highlight_xofya, "-X", "--xofya" } +}; + +static int background = 0xff181818; +static int tab_width = 8; +static int render_border = 10; +static int * render_image = null; +static int render_width = 0; +static int render_height = 0; +static int * font_source = null; +static int font_width = 0; +static int font_height = 0; +static int line_number = 0; +static int line_digits = 0; + +static void import_png_as_glyphmap (const char * path) { + png_image image = { 0 }; + + image.version = PNG_IMAGE_VERSION; + + png_image_begin_read_from_file (& image, path); + + image.format = PNG_FORMAT_RGBA; + + font_width = image.width / 16; + font_height = image.height / 6; + + font_source = allocate (image.width * image.height * (int) sizeof (* font_source)); + + png_image_finish_read (& image, null, font_source, 0, null); + + png_image_free (& image); +} + +static void export_render_as_png (const char * path) { + png_image image = { 0 }; + + image.version = PNG_IMAGE_VERSION; + image.format = PNG_FORMAT_RGBA; + image.width = (unsigned int) render_width; + image.height = (unsigned int) render_height; + + png_image_write_to_file (& image, path, 0, render_image, 0, null); + + png_image_free (& image); +} + +static int fetch_width (const char * data) { + int image_width = 0; + int count = 0; + + do { + if (* data == '\t') { + count += tab_width; + } else if (* data == '\n') { + image_width = (++count > image_width) ? count : image_width; + count = 0; + } else { + ++count; + } + } while (* (++data) != '\0'); + + return (image_width - 1); +} + +static int fetch_height (const char * data) { + int image_height = 0; + int count = 0; + + do { + if (* data == '\n') { + ++image_height; + } + } while (* (++data) != '\0'); + + count = image_height + 1; + + do { + ++line_digits; + + count /= 10; + } while (count > 0); + + return (image_height + 1); +} + +static int interpolate_pixel (int pixel, int colour) { + int r, g, b, a; + + a = (pixel >> 24) & 0xff; + + if (a == 0x00) { + return (background); + } else if (a == 0xff) { + return (colour); + } else { + r = (((background >> 0) & 0xff) * (0xff - a) + ((colour >> 0) & 0xff) * a) / 0xff; + g = (((background >> 8) & 0xff) * (0xff - a) + ((colour >> 8) & 0xff) * a) / 0xff; + b = (((background >> 16) & 0xff) * (0xff - a) + ((colour >> 16) & 0xff) * a) / 0xff; + + return ((r << 0) | (g << 8) | (b << 16) | 0xff000000); + } +} + +static void render_character (char character, int * x, int * y, int colour) { + int offset_x = 0; + int offset_y = 0; + int offset_u = (character - ' ') % 16; + int offset_v = (character - ' ') / 16; + + for (offset_y = 0; offset_y < font_height; ++offset_y) { + for (offset_x = 0; offset_x < font_width; ++offset_x) { + int destination = (* y + offset_y) * render_width + (* x + offset_x); + int source = (offset_v * font_height + offset_y) * font_width * 16 + (offset_u * font_width + offset_x); + + render_image [destination] = interpolate_pixel (font_source [source], colour); + } + } + + * x += font_width; +} + +static void render_string (char * string, int length, int * x, int * y, int colour) { + int offset; + + for (offset = 0; offset < length; ++offset) { + if (string [offset] == '\t') { + * x += font_width * tab_width; + } else if (string [offset] == '\n') { + * y += font_height; + * x = render_border; + + render_string (format_to_string (++line_number, false, 10, line_digits, ' '), line_digits, x, y, (int) 0xffeeeeee); + + * x += font_width; + } else { + render_character (string [offset], x, y, colour); + } + } +} + +int main (int argc, char * * argv) { + int offset = 0; + int select = 0; + int length = 0; + int x = render_border; + int y = render_border; + char * buffer = null; + + if (argc != 1) { + if (string_compare (argv [1], "-v") || string_compare (argv [1], "--version")) { + echo ("xarbon: Source code renderer (version 144)\n"); + exit (log_success); + } else if (string_compare (argv [1], "-l") || string_compare (argv [1], "--license")) { + echo ("xarbon: Source code renderer (GNU/GPLv3)\n"); + exit (log_success); + } else if (string_compare (argv [1], "-a") || string_compare (argv [1], "--author")) { + echo ("xarbon: Source code renderer (Ognjen 'xolatile' Milan Robovic)\n"); + exit (log_success); + } else if (string_compare (argv [1], "-h") || string_compare (argv [1], "--help")) { + echo ("xarbon: Source code renderer:\n"); + echo ("Example usage:\n"); + echo ("\t$ cat file.ext | xarbon [flag] -- You need to pass language flag in this case.\n"); + echo ("\t$ xarbon [flag] < file.ext -- You need to pass language flag in this case.\n"); + echo ("\t$ xarbon file.ext -- Language is automatically detected in this case.\n"); + echo ("Supported languages:\n"); + echo ("\t -C --c -- C syntax\n"); + echo ("\t -A --ada -- Ada syntax\n"); + echo ("\t -P --cpp -- C++ syntax \n"); + echo ("\t -S --assembly -- General assembly syntax\n"); + echo ("\t -T --flat -- Flat assembly syntax\n"); + echo ("\t -F --fortran -- Fortran syntax\n"); + echo ("\t -X --xofya -- Xofya syntax\n"); + exit (log_success); + } else { + int index; + + for (index = 0; index < (int) (sizeof (language) / sizeof (* language)); ++index) { + if ((string_compare (argv [1], language [index].option_short) == true) + || (string_compare (argv [1], language [index].option_long) == true)) { + language [index].highlighter (); + break; + } + } + + if (syntax_active == false) { + select = file_type (argv [1]); + buffer = file_import (argv [1]); + } + } + } + + if (buffer == null) { + buffer = record (); + } + + if (syntax_active == false) { + if ((select == file_type_c_source) || (select == file_type_c_header)) { + highlight_c (); + } else if ((select == file_type_ada_body) || (select == file_type_ada_specification)) { + highlight_ada (); + } else if ((select == file_type_cpp_source) || (select == file_type_cpp_header)) { + highlight_cpp (); + } else if (select == file_type_common_assembly) { + highlight_assembly (); + } else if (select == file_type_flat_assembly) { + highlight_flat (); + } else if (select == file_type_fortran_90) { + highlight_fortran (); + /*} else if (select == file_type_xofya) { + highlight_xofya ();*/ + } + } + + import_png_as_glyphmap ("/usr/local/bin/xarbon_font.png"); + + render_width = fetch_width (buffer) * font_width + 2 * render_border; + render_height = fetch_height (buffer) * font_height + 2 * render_border; + + render_width += (line_digits + 1) * font_width; + + render_image = allocate (render_width * render_height * (int) sizeof (* render_image)); + + for (offset = 0; offset < render_width * render_height; ++offset) { + render_image [offset] = background; + } + + render_string (format_to_string (++line_number, false, 10, line_digits, ' '), line_digits, & x, & y, (int) 0xffeeeeee); + + x += font_width; + + for (offset = 0; buffer [offset] != '\0'; offset += length) { + select = syntax_select (& buffer [offset], & length); + + render_string (& buffer [offset], length, & x, & y, (select >= syntax_count) ? (int) background : syntax_colour [select]); + } + + export_render_as_png ("./xarbon.png"); + + render_image = deallocate (render_image); + font_source = deallocate (font_source); + buffer = deallocate (buffer); + + return (log_success); +} diff --git a/xarbon.png b/xarbon.png new file mode 100644 index 0000000000000000000000000000000000000000..ab492c0e5bc30e3e18d39059f03a87e517d51a24 GIT binary patch literal 137679 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%0D&4y3!G#x@-&o0}N^U=3E|7=Xk*Al>1R+1*< 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 M07*qoM6N<$f>KAB7XSbN literal 0 HcmV?d00001