Skip to content

Commit

Permalink
0.9.504
Browse files Browse the repository at this point in the history
- QoL
  • Loading branch information
RobbyV2 committed Nov 27, 2024
1 parent 8140924 commit 62a0c14
Show file tree
Hide file tree
Showing 7 changed files with 55 additions and 38 deletions.
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

[package]
name = "fplc"
version = "0.9.503"
version = "0.9.504"
edition = "2021"
description = "A pseudolang interpreter written in Rust"
repository = "https://github.com/PseudoLang-Software-Foundation/Pseudolang"
Expand Down
4 changes: 2 additions & 2 deletions installer/pseudolang.nsi
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

!define MUI_ICON "Pseudolang-Logo.ico"

Name "PseudoLang Installer v0.9.503"
Name "PseudoLang Installer v0.9.504"
InstallDir "$PROGRAMFILES\PseudoLang\"
OutFile "../release/installer/pseudolang-setup-x64.exe"
BrandingText "(c) 2024 PseudoLang Software Foundation"
Expand Down Expand Up @@ -33,7 +33,7 @@ Section ""
WriteRegStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path" "$INSTDIR;$R0"

WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Pseudolang" "DisplayName" "Pseudolang"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Pseudolang" "DisplayVersion" "0.9.503"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Pseudolang" "DisplayVersion" "0.9.504"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Pseudolang" "Publisher" "Pseudolang Software Foundation"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Pseudolang" "DisplayIcon" "$INSTDIR\Pseudolang-Logo.ico"

Expand Down
2 changes: 1 addition & 1 deletion readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<div align="center">
<p>
<img src="https://github.com/PseudoLang-Software-Foundation/Pseudolang/actions/workflows/build.yml/badge.svg" alt="Build and Test Pseudolang">
<img src="https://img.shields.io/badge/Version-0.9.503-green" alt="Version">
<img src="https://img.shields.io/badge/Version-0.9.504-green" alt="Version">
<a href="https://nightly.link/PseudoLang-Software-Foundation/Pseudolang/workflows/build/main"><img src="https://img.shields.io/badge/Nightly-Releases-purple" alt="Nightly Releases"></a>
</p>
</div>
Expand Down
26 changes: 26 additions & 0 deletions src/core.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
use crate::{interpreter, lexer::Lexer, parser};
use std::fmt::Write;

pub fn execute_code(input: &str, debug: bool, return_output: bool) -> Result<String, String> {
let mut lexer = Lexer::new(input);
Expand All @@ -25,6 +26,31 @@ pub fn execute_code(input: &str, debug: bool, return_output: bool) -> Result<Str
Ok(output)
}

pub fn execute_code_with_capture(input: &str, debug: bool) -> Result<String, String> {
let mut output = String::new();
let mut lexer = Lexer::new(input);
let tokens = lexer.tokenize();

if debug {
writeln!(output, "\n=== Lexer Output ===").unwrap();
writeln!(output, "Tokens: {:?}", tokens).unwrap();
writeln!(output, "\n=== Parser Starting ===").unwrap();
}

let ast = parser::parse(tokens, false)?;

if debug {
writeln!(output, "\n=== Parser Output ===").unwrap();
writeln!(output, "AST: {:#?}", ast).unwrap();
writeln!(output, "\n=== Starting Execution ===").unwrap();
}

let program_output = interpreter::run(ast)?;
writeln!(output, "{}", program_output).unwrap();

Ok(output)
}

pub const HELP_MESSAGE: &str = r#"PseudoLang Usage:
fplc [OPTIONS] COMMAND [ARGS]
Expand Down
55 changes: 23 additions & 32 deletions src/wasm.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,27 @@
#[cfg(all(target_arch = "wasm32", not(feature = "wasi")))]
use crate::core::execute_code;
use crate::core::execute_code_with_capture;
#[cfg(all(target_arch = "wasm32", not(feature = "wasi")))]
use std::fmt::Write;
#[cfg(all(target_arch = "wasm32", not(feature = "wasi")))]
use wasm_bindgen::prelude::*;

include!(concat!(env!("OUT_DIR"), "/version.rs"));

#[cfg(all(target_arch = "wasm32", not(feature = "wasi")))]
#[no_mangle]
pub extern "C" fn get_version_raw() -> u64 {
let version = VERSION.as_bytes();
let ptr = version.as_ptr() as u64;
let len = version.len() as u64;
std::mem::forget(version);
(ptr << 32) | len
}

#[cfg(all(target_arch = "wasm32", not(feature = "wasi")))]
#[wasm_bindgen]
pub fn get_version() -> String {
VERSION.to_string()
}

#[cfg(all(target_arch = "wasm32", not(feature = "wasi")))]
#[no_mangle]
Expand All @@ -11,7 +31,7 @@ pub extern "C" fn run_pseudolang_raw(ptr: *const u8, len: usize, debug: bool) ->
std::str::from_utf8_unchecked(slice)
};

match run_with_debug(input, debug) {
match execute_code_with_capture(input, debug) {
Ok(output) => {
let bytes = output.into_bytes();
let ptr = bytes.as_ptr() as u64;
Expand All @@ -23,40 +43,11 @@ pub extern "C" fn run_pseudolang_raw(ptr: *const u8, len: usize, debug: bool) ->
}
}

#[cfg(all(target_arch = "wasm32", not(feature = "wasi")))]
use wasm_bindgen::prelude::*;

#[cfg(all(target_arch = "wasm32", not(feature = "wasi")))]
#[wasm_bindgen]
pub fn run_pseudolang(input: &str, debug: bool) -> Result<String, JsValue> {
console_error_panic_hook::set_once();
run_with_debug(input, debug).map_err(|e| JsValue::from_str(&e))
}

#[cfg(all(target_arch = "wasm32", not(feature = "wasi")))]
fn run_with_debug(input: &str, debug: bool) -> Result<String, String> {
let mut output = String::new();
let mut lexer = crate::lexer::Lexer::new(input);
let tokens = lexer.tokenize();

if debug {
writeln!(output, "\n=== Lexer Output ===").unwrap();
writeln!(output, "Tokens: {:?}", tokens).unwrap();
writeln!(output, "\n=== Parser Starting ===").unwrap();
}

let ast = crate::parser::parse(tokens, false)?;

if debug {
writeln!(output, "\n=== Parser Output ===").unwrap();
writeln!(output, "AST: {:#?}", ast).unwrap();
writeln!(output, "\n=== Starting Execution ===").unwrap();
}

let program_output = crate::interpreter::run(ast)?;
writeln!(output, "{}", program_output).unwrap();

Ok(output)
execute_code_with_capture(input, debug).map_err(|e| JsValue::from_str(&e))
}

#[cfg(all(target_arch = "wasm32", not(feature = "wasi")))]
Expand Down
2 changes: 1 addition & 1 deletion wapm.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

[package]
name = "pseudolang/fplc"
version = "0.9.503"
version = "0.9.504"
description = "A pseudolang interpreter written in Rust"
license = "MIT"
readme = "readme.md"
Expand Down

0 comments on commit 62a0c14

Please sign in to comment.