commit 928e49a90ea271b75f092ca9ee85fb6e2d2e45cc Author: CyberMages LLC Date: Thu Jan 30 19:17:46 2025 -0500 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7a0ec7f --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +# Added by cargo + +/target diff --git a/.rustfmt.toml b/.rustfmt.toml new file mode 100644 index 0000000..b85c2b1 --- /dev/null +++ b/.rustfmt.toml @@ -0,0 +1,79 @@ +max_width = 80 +hard_tabs = false +tab_spaces = 3 +newline_style = "Unix" +indent_style = "Visual" +use_small_heuristics = "Default" +fn_call_width = 60 +attr_fn_like_width = 70 +struct_lit_width = 18 +struct_variant_width = 35 +array_width = 60 +chain_width = 60 +single_line_if_else_max_width = 50 +single_line_let_else_max_width = 50 +wrap_comments = true +format_code_in_doc_comments = true +doc_comment_code_block_width = 80 +comment_width = 80 +normalize_comments = true +normalize_doc_attributes = true +format_strings = true +format_macro_matchers = true +format_macro_bodies = true +skip_macro_invocations = [] +hex_literal_case = "Preserve" +empty_item_single_line = true +struct_lit_single_line = true +fn_single_line = false +where_single_line = true +imports_indent = "Visual" +imports_layout = "Horizontal" +imports_granularity = "Module" +group_imports = "StdExternalCrate" +reorder_imports = true +reorder_modules = true +reorder_impl_items = true +type_punctuation_density = "Wide" +space_before_colon = false +space_after_colon = true +spaces_around_ranges = false +binop_separator = "Back" +remove_nested_parens = true +combine_control_expr = false +short_array_element_width_threshold = 10 +overflow_delimited_expr = false +struct_field_align_threshold = 0 +enum_discrim_align_threshold = 0 +match_arm_blocks = true +match_arm_leading_pipes = "Never" +force_multiline_blocks = true +fn_params_layout = "Compressed" +brace_style = "AlwaysNextLine" +control_brace_style = "AlwaysNextLine" +trailing_semicolon = true +trailing_comma = "Never" +match_block_trailing_comma = false +blank_lines_upper_bound = 3 +blank_lines_lower_bound = 0 +edition = "2021" +style_edition = "2021" +inline_attribute_width = 0 +format_generated_files = true +generated_marker_line_search_limit = 5 +merge_derives = true +use_try_shorthand = false +use_field_init_shorthand = false +force_explicit_abi = true +condense_wildcard_suffixes = false +color = "Always" +required_version = "1.8.0" +unstable_features = true +disable_all_formatting = false +skip_children = false +show_parse_errors = true +error_on_line_overflow = false +error_on_unformatted = false +ignore = [] +emit_mode = "Files" +make_backup = false diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..be41227 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "arcanum" +version = "0.0.0" +edition = "2021" +description = "A programming language compiler." +repository = "/CyberMages/arcanum" +authors = ["CyberMages LLC ", "Jason Travis Smith "] +readme = "README.md" +license-file = "LICENSE.md" + + + +[dependencies] diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..0a2e8d7 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,69 @@ +Copyright (c) <2025> CyberMages LLC + +Redistribution and use in source and binary forms, with or +without modification, are permitted provided that the +following conditions are met: + +1. Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +2. Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +Subject to the terms and conditions of this license, each +copyright holder and contributor hereby grants to those +receiving rights under this license a perpetual, +worldwide, non-exclusive, no-charge, royalty-free, +irrevocable (except for failure to satisfy the conditions +of this license) patent license to make, have made, use, +offer to sell, sell, import, and otherwise transfer this +software, where such license applies only to those patent +claims, already acquired or hereafter acquired, licensable +by such copyright holder or contributor that are +necessarily infringed by: + + (a) their Contribution(s) (the licensed copyrights of + copyright holders and non-copyrightable additions + of contributors, in source or binary form) alone; + + -- or -- + + (b) combination of their Contribution(s) with the work + of authorship to which such Contribution(s) was + added by such copyright holder or contributor, if, + at the time the Contribution is added, such + addition causes such combination to be necessarily + infringed. The patent license shall not apply to + any other combinations which include the + Contribution. + +Except as expressly stated above, no rights or licenses +from any copyright holder or contributor is granted under +this license, whether expressly, by implication, estoppel +or otherwise. + + +DISCLAIMER + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT DESIGNED, +LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, +OPERATION OR MAINTENANCE OF ANY MILITARY FACILITY OR +RELIGIOUS INSTITUTION. diff --git a/README.md b/README.md new file mode 100644 index 0000000..ef23085 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# arcanum + +A programming language compiler. diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..8e31ac4 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,20 @@ +//! A programming language compiler. + + + +mod project; + + + +/// Print the version of the project. +fn print_version() +{ + println!("{} v{}", project::get_name(), project::get_version()); +} + + +/// The usual starting point of your project. +fn main() +{ + print_version(); +} diff --git a/src/project.rs b/src/project.rs new file mode 100644 index 0000000..a977e1c --- /dev/null +++ b/src/project.rs @@ -0,0 +1,33 @@ +//! This is where the Projects build information can be retreived from. + + + +/// The environment variable defined by Cargo for the name. +const NAME: Option<&str> = option_env!("CARGO_PKG_NAME"); + +/// The environment variable defined by Cargo for the version. +const VERSION: Option<&str> = option_env!("CARGO_PKG_VERSION"); + +/// The string to display if a value is not defined during compile time. +const NOT_DEFINED: &'static str = "UNDEFINED"; + + + +/// Returns the name of the program as defined by the CARGO_PKG_NAME. This is +/// set at compile time and comes from the Cargo.toml file. +/// +/// If a value is not found, then it will return the not defined value. +pub fn get_name() -> &'static str +{ + NAME.unwrap_or(NOT_DEFINED) +} + + +/// Returns the name of the program as defined by the CARGO_PKG_VERSION. This is +/// set at compile time and comes from the Cargo.toml file. +/// +/// If a value is not found, then it will return the not defined value. +pub fn get_version() -> &'static str +{ + VERSION.unwrap_or(NOT_DEFINED) +}