Skip to content

Commit 420b2ff

Browse files
committed
x
1 parent 58da013 commit 420b2ff

4 files changed

Lines changed: 45 additions & 50 deletions

File tree

Cargo.toml

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,22 @@
11
[workspace]
22
resolver = "3"
33
members = [
4-
"compilers/*",
4+
"compilers/python",
5+
"compilers/python-ir",
6+
"compilers/python-lsp",
7+
"compilers/python-macros",
8+
"compilers/python-tools",
9+
"compilers/python-types",
10+
"compilers/python-wasi",
511
]
612
default-members = [
7-
"compilers/*",
13+
"compilers/python",
14+
"compilers/python-ir",
15+
"compilers/python-lsp",
16+
"compilers/python-macros",
17+
"compilers/python-tools",
18+
"compilers/python-types",
19+
"compilers/python-wasi",
820
]
921

1022
[workspace.package]

compilers/python/src/codegen.rs

Lines changed: 28 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
//! This module is responsible for generating bytecode from AST nodes.
44
55
use oak_python::ast::{
6-
BinaryOperator, BoolOperator, CompareOperator as ComparisonOperator, Comprehension, ExceptHandler, Expression, Keyword,
7-
Literal, Parameter, Pattern, Statement, UnaryOperator,
6+
AugmentedOperator, BinaryOperator, BoolOperator, CompareOperator as ComparisonOperator, Comprehension, ExceptHandler, Expression, ImportName, Keyword,
7+
Literal, Parameter, Statement, Type, UnaryOperator, WithItem,
88
};
99
use python_types::PythonResult;
1010
use smallvec::SmallVec;
@@ -162,7 +162,7 @@ impl CodeGenerator {
162162
self.generate_if(Box::new(test), body, orelse)?;
163163
}
164164
Statement::For { target, iter, body, orelse } => {
165-
self.generate_for(Box::new(target), Box::new(iter), body, orelse)?;
165+
self.generate_for(target, iter, body, orelse)?;
166166
}
167167
Statement::While { test, body, orelse } => {
168168
self.generate_while(Box::new(test), body, orelse)?;
@@ -171,17 +171,10 @@ impl CodeGenerator {
171171
self.generate_try(body, handlers, orelse, finalbody)?;
172172
}
173173
Statement::With { items, body } => {
174-
let items = items.into_iter().map(|item| (item.context_expr, item.optional_vars.map(Box::new))).collect();
175174
self.generate_with(items, body)?;
176175
}
177176
Statement::Return(value) => {
178-
self.generate_return(value.map(Box::new))?;
179-
}
180-
Statement::Yield(value) => {
181-
self.generate_yield(value)?;
182-
}
183-
Statement::YieldFrom(value) => {
184-
self.generate_yield_from(value)?;
177+
self.generate_return(value)?;
185178
}
186179
Statement::Break => {
187180
self.instructions.push(Instruction::Break);
@@ -199,11 +192,11 @@ impl CodeGenerator {
199192
self.generate_assert(Box::new(test), msg.map(Box::new))?;
200193
}
201194
Statement::Import { names } => {
202-
let names = names.into_iter().map(|name| (name.name, name.asname)).collect();
195+
let names = names.into_iter().map(|name| (name.name, name.alias)).collect();
203196
self.generate_import(names)?;
204197
}
205-
Statement::ImportFrom { module, names, level: _ } => {
206-
let names = names.into_iter().map(|name| (name.name, name.asname)).collect();
198+
Statement::ImportFrom { module, names } => {
199+
let names = names.into_iter().map(|name| (name.name, name.alias)).collect();
207200
self.generate_import_from(module, names, 0)?;
208201
}
209202
Statement::Global { names } => {
@@ -213,13 +206,12 @@ impl CodeGenerator {
213206
self.generate_nonlocal(names)?;
214207
}
215208
Statement::Assignment { target, value } => {
216-
self.generate_assign(vec![Pattern::Value(target)], Box::new(value))?;
209+
self.generate_assign(target, value)?;
217210
}
218211
Statement::AugmentedAssignment { target, operator, value } => {
219-
self.generate_aug_assign(Box::new(Pattern::Value(target)), operator, Box::new(value))?;
212+
self.generate_aug_assign(target, operator, value)?;
220213
}
221214
Statement::Delete { targets } => {
222-
let targets = targets.into_iter().map(Pattern::Value).collect();
223215
self.generate_del(targets)?;
224216
}
225217
Statement::Expression(value) => {
@@ -409,11 +401,12 @@ impl CodeGenerator {
409401
&mut self,
410402
name: String,
411403
parameters: Vec<Parameter>,
412-
return_type: Option<Box<Expression>>,
404+
return_type: Option<Type>,
413405
body: Vec<Statement>,
414406
decorators: Vec<Expression>,
415407
) -> PythonResult<()> {
416408
// TODO: Implement function definition
409+
let _ = (name, parameters, return_type, body, decorators);
417410
Ok(())
418411
}
419412

@@ -464,12 +457,13 @@ impl CodeGenerator {
464457
/// Generate bytecode for a for statement
465458
fn generate_for(
466459
&mut self,
467-
target: Box<Pattern>,
468-
iter: Box<Expression>,
460+
target: Expression,
461+
iter: Expression,
469462
body: Vec<Statement>,
470463
orelse: Vec<Statement>,
471464
) -> PythonResult<()> {
472465
// TODO: Implement for loop
466+
let _ = (target, iter, body, orelse);
473467
Ok(())
474468
}
475469

@@ -492,15 +486,16 @@ impl CodeGenerator {
492486
}
493487

494488
/// Generate bytecode for a with statement
495-
fn generate_with(&mut self, items: Vec<(Expression, Option<Pattern>)>, body: Vec<Statement>) -> PythonResult<()> {
489+
fn generate_with(&mut self, items: Vec<WithItem>, body: Vec<Statement>) -> PythonResult<()> {
496490
// TODO: Implement with statement
491+
let _ = (items, body);
497492
Ok(())
498493
}
499494

500495
/// Generate bytecode for a return statement
501-
fn generate_return(&mut self, value: Option<Box<Expression>>) -> PythonResult<()> {
496+
fn generate_return(&mut self, value: Option<Expression>) -> PythonResult<()> {
502497
if let Some(value) = value {
503-
self.generate_expression(*value)?;
498+
self.generate_expression(value)?;
504499
}
505500
else {
506501
self.instructions.push(Instruction::PushNull);
@@ -509,35 +504,18 @@ impl CodeGenerator {
509504
Ok(())
510505
}
511506

512-
/// Generate bytecode for a yield statement
513-
fn generate_yield(&mut self, value: Option<Box<Expression>>) -> PythonResult<()> {
514-
if let Some(value) = value {
515-
self.generate_expression(*value)?;
516-
}
517-
else {
518-
self.instructions.push(Instruction::PushNull);
519-
}
520-
self.instructions.push(Instruction::Yield);
521-
Ok(())
522-
}
523-
524-
/// Generate bytecode for a yield from statement
525-
fn generate_yield_from(&mut self, value: Box<Expression>) -> PythonResult<()> {
526-
self.generate_expression(*value)?;
527-
self.instructions.push(Instruction::YieldFrom);
528-
Ok(())
529-
}
530-
531507
/// Generate bytecode for a raise statement
532-
fn generate_raise(&mut self, exc: Option<Box<Expression>>, cause: Option<Box<Expression>>) -> PythonResult<()> {
508+
fn generate_raise(&mut self, exc: Option<Expression>, cause: Option<Expression>) -> PythonResult<()> {
533509
// TODO: Implement raise statement
510+
let _ = (exc, cause);
534511
self.instructions.push(Instruction::Raise);
535512
Ok(())
536513
}
537514

538515
/// Generate bytecode for an assert statement
539-
fn generate_assert(&mut self, test: Box<Expression>, msg: Option<Box<Expression>>) -> PythonResult<()> {
516+
fn generate_assert(&mut self, test: Expression, msg: Option<Expression>) -> PythonResult<()> {
540517
// TODO: Implement assert statement
518+
let _ = (test, msg);
541519
Ok(())
542520
}
543521

@@ -571,20 +549,23 @@ impl CodeGenerator {
571549
}
572550

573551
/// Generate bytecode for an assign statement
574-
fn generate_assign(&mut self, targets: Vec<Pattern>, value: Box<Expression>) -> PythonResult<()> {
552+
fn generate_assign(&mut self, target: Expression, value: Expression) -> PythonResult<()> {
575553
// TODO: Implement assign statement
554+
let _ = (target, value);
576555
Ok(())
577556
}
578557

579558
/// Generate bytecode for an augmented assign statement
580-
fn generate_aug_assign(&mut self, target: Box<Pattern>, op: BinaryOperator, value: Box<Expression>) -> PythonResult<()> {
559+
fn generate_aug_assign(&mut self, target: Expression, op: AugmentedOperator, value: Expression) -> PythonResult<()> {
581560
// TODO: Implement augmented assign statement
561+
let _ = (target, op, value);
582562
Ok(())
583563
}
584564

585565
/// Generate bytecode for a del statement
586-
fn generate_del(&mut self, targets: Vec<Pattern>) -> PythonResult<()> {
566+
fn generate_del(&mut self, targets: Vec<Expression>) -> PythonResult<()> {
587567
// TODO: Implement del statement
568+
let _ = targets;
588569
Ok(())
589570
}
590571

frontends/homepage/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
2+
"private": true,
23
"name": "@nyar/python-homepage",
34
"version": "0.1.0",
45
"description": "RBQ Engine Homepage and Documentation",
5-
"private": true,
66
"type": "module",
77
"scripts": {
88
"dev": "vite",

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
"dev": "pnpm -F @vutex/documentation dev",
1919
"build": "pnpm -F @vutex/documentation build",
2020
"preview": "pnpm -F @vutex/documentation preview",
21+
"dev:home": "pnpm -F @nyar/python-homepage dev",
22+
"build:home": "pnpm -F @nyar/python-homepage build",
2123
"build:release": "tsx scripts/build-release.ts",
2224
"u": "cargo upgrade --workspace",
2325
"p": "cargo workspace publish --resume",

0 commit comments

Comments
 (0)