Skip to content

Commit dc628df

Browse files
committed
remove builtin functions, add AzLang-Std submodule, unified print with ValueType
1 parent d3e16c4 commit dc628df

54 files changed

Lines changed: 133 additions & 1753 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,6 @@ bin/*
77
diff.txt
88
zig-cache/
99
.zig-cache/
10+
11+
# SDK - tracked as separate submodule
12+
sdk/

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "sdk"]
2+
path = sdk
3+
url = git@github.com:AzLangProgramingLanguage/AzLang-Std.git

compiler/src/lib.rs

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -42,27 +42,14 @@ fn bin_create_dir() -> Result<PathBuf, FileSystemError> {
4242
fs::create_dir(bin_path)?;
4343
}
4444
let zig_path = get_zig_path();
45-
// dbg!(
46-
// Command::new(zig_path)
47-
// .arg("init")
48-
// .current_dir("./bin")
49-
// .get_current_dir()
50-
// );
51-
let output = Command::new("ls")
52-
.arg("-la")
53-
.current_dir("./bin") // Sets the working directory
54-
.output()
55-
.expect("Failed to execute command");
56-
57-
println!("{}", String::from_utf8_lossy(&output.stdout));
58-
assert!(false);
45+
Command::new(zig_path).arg("init").current_dir("./bin");
5946
let deps_src = Path::new("./dependencies");
6047
let deps_dest = bin_path.join("dependencies");
6148
if deps_src.exists() {
6249
copy_dir_all(deps_src, &deps_dest)?;
6350
}
6451

65-
Ok(bin_path.join("main.zig"))
52+
Ok(bin_path.join("src/main.zig"))
6653
}
6754

6855
fn copy_dir_all(src: impl AsRef<Path>, dst: impl AsRef<Path>) -> Result<(), FileSystemError> {

compiler/src/tests/compiler_test.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ use transpiler::TranspileContext;
33

44
#[test]
55
fn compiler_variable_test() {
6-
let sdk = file_system::read_file("../examples/float.az").expect("Fayl oxunamadı");
6+
const PATH: &str = "../examples/float.az";
7+
let sdk = file_system::read_file(PATH).expect("Fayl oxunamadı");
78

89
let parsed_program = parser(sdk).expect("Parse oluna bilinmedi ");
910

@@ -22,7 +23,7 @@ fn compiler_variable_test() {
2223
std::process::exit(err.code());
2324
});
2425

25-
build(output_zig.to_str().unwrap(), "../examples/float.az").expect("Build oluna bilinmedi");
26+
build(output_zig.to_str().unwrap(), PATH).expect("Build oluna bilinmedi");
2627
}
2728
#[test]
2829
fn compiler_binary_op_test() {

crates/parser/src/ast.rs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::shared_ast::{BuiltInFunction, Type};
1+
use crate::shared_ast::Type;
22
use core::fmt;
33
use std::{
44
collections::HashMap,
@@ -182,10 +182,6 @@ pub enum Expr {
182182
},
183183
TemplateString(Vec<TemplateChunk>),
184184

185-
BuiltInCall {
186-
function: BuiltInFunction,
187-
args: Vec<Expr>,
188-
},
189185
Call {
190186
target: Option<Box<Expr>>,
191187
name: Box<Expr>,

crates/parser/src/binary_op.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ fn parse_binary_op_with_precedence(
8282
return Err(ParserError::RParenNotFound(Token::Eof));
8383
}
8484
_ => {
85-
args.push(parse_single_expr(tokens)?);
85+
args.push(parse_expression(tokens)?);
8686
}
8787
}
8888
}

crates/parser/src/builtin.rs

Lines changed: 0 additions & 95 deletions
This file was deleted.

crates/parser/src/errors.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ pub enum ParserError {
1010
UnexpectedEOF,
1111
NotUserDirectValue,
1212
MethodNameNotFound(Token),
13-
UnsupportedBuiltInFunction(Token),
1413
ExpectedToken(Token, Token),
1514
LoopVarNameNotFound(Token),
1615
StructNameNotFound(Token),
@@ -51,9 +50,6 @@ impl Display for ParserError {
5150
"Metod və ya sahə adı gözlənilirdi amma bu tapıldı: '{token}'"
5251
)
5352
}
54-
ParserError::UnsupportedBuiltInFunction(token) => {
55-
write!(f, "Dəstəklənməyən funksiya: '{token}'")
56-
}
5753
ParserError::ExpectedToken(expected, found) => {
5854
write!(f, "Gözlənilirdi '{expected}', tapıldı '{found}'")
5955
}

crates/parser/src/expressions.rs

Lines changed: 1 addition & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ use std::collections::HashMap;
33
use crate::{
44
ast::{Expr, Operation, Statement},
55
binary_op::{parse_expression, parse_statement},
6-
builtin::parse_builtin,
76
errors::ParserError,
87
function::parse_function_def,
98
identifier::parse_identifier,
@@ -100,84 +99,7 @@ pub fn parse_single_expr(tokens: &mut Tokens) -> Result<Expr, ParserError> {
10099
..
101100
} => Ok(Expr::Continue),
102101

103-
SpannedToken {
104-
token: Token::Print,
105-
..
106-
}
107-
| SpannedToken {
108-
token: Token::Input,
109-
..
110-
}
111-
| SpannedToken {
112-
token: Token::Len, ..
113-
}
114-
| SpannedToken {
115-
token: Token::NumberFn,
116-
..
117-
}
118-
| SpannedToken {
119-
token: Token::Sum, ..
120-
}
121-
| SpannedToken {
122-
token: Token::RangeFn,
123-
..
124-
}
125-
| SpannedToken {
126-
token: Token::LastWord,
127-
..
128-
}
129-
| SpannedToken {
130-
token: Token::Sqrt, ..
131-
}
132-
| SpannedToken {
133-
token: Token::Timer,
134-
..
135-
}
136-
| SpannedToken {
137-
token: Token::Max, ..
138-
}
139-
| SpannedToken {
140-
token: Token::StrUpper,
141-
..
142-
}
143-
| SpannedToken {
144-
token: Token::StrLower,
145-
..
146-
}
147-
| SpannedToken {
148-
token: Token::Min, ..
149-
}
150-
| SpannedToken {
151-
token: Token::Zig, ..
152-
}
153-
| SpannedToken {
154-
token: Token::Mod, ..
155-
}
156-
| SpannedToken {
157-
token: Token::Trim, ..
158-
}
159-
| SpannedToken {
160-
token: Token::StrReverse,
161-
..
162-
}
163-
| SpannedToken {
164-
token: Token::ConvertString,
165-
..
166-
}
167-
| SpannedToken {
168-
token: Token::Round,
169-
..
170-
}
171-
| SpannedToken {
172-
token: Token::Floor,
173-
..
174-
}
175-
| SpannedToken {
176-
token: Token::Ceil, ..
177-
} => {
178-
let result = parse_builtin(token, tokens)?;
179-
Ok(result)
180-
}
102+
181103
SpannedToken {
182104
token: Token::Backtick,
183105
..

crates/parser/src/function.rs

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ pub fn parse_external_function_def(tokens: &mut Tokens) -> Result<Statement, Par
7878
if matches!(tok.token, Token::MutableDecl | Token::ConstantDecl) {
7979
tokens.next();
8080
}
81-
let param_type = parse_type(tokens)?;
81+
let param_type = param_typ(tokens, is_mutable)?;
8282
let param_name = match tokens.next() {
8383
Some(SpannedToken {
8484
token: Token::Identifier(s),
@@ -180,7 +180,8 @@ pub fn parse_function_def(tokens: &mut Tokens) -> Result<Statement, ParserError>
180180
if matches!(tok.token, Token::MutableDecl | Token::ConstantDecl) {
181181
tokens.next();
182182
}
183-
let param_type = parse_type(tokens)?;
183+
let param_typ = param_typ(tokens, is_mutable)?;
184+
184185
let param_name = match tokens.next() {
185186
Some(SpannedToken {
186187
token: Token::Identifier(s),
@@ -192,7 +193,7 @@ pub fn parse_function_def(tokens: &mut Tokens) -> Result<Statement, ParserError>
192193
};
193194
params.push(Parameter {
194195
name: param_name,
195-
typ: param_type,
196+
typ: param_typ,
196197
is_pointer: is_mutable,
197198
});
198199
match tokens.peek() {
@@ -254,3 +255,13 @@ pub fn parse_function_def(tokens: &mut Tokens) -> Result<Statement, ParserError>
254255
params,
255256
})
256257
}
258+
fn param_typ(tokens: &mut Tokens, is_mutable: bool) -> Result<Type, ParserError> {
259+
let mut param_type = parse_type(tokens)?;
260+
match (&param_type, &is_mutable) {
261+
(Type::String(S), false) => {
262+
param_type = Type::String(crate::shared_ast::StringEnum::LiteralConstString);
263+
}
264+
_ => {}
265+
}
266+
Ok(param_type)
267+
}

0 commit comments

Comments
 (0)