Add more placeholders with TODO messages
This commit is contained in:
parent
c93df679d3
commit
975d44e212
|
@ -0,0 +1,10 @@
|
|||
use crate::cst::ModuleContext;
|
||||
use json::JsonValue;
|
||||
|
||||
pub struct CaseStatement {}
|
||||
|
||||
impl CaseStatement {
|
||||
pub fn codegen(_json: &JsonValue, _context: &ModuleContext) {
|
||||
println!("TODO: implement CaseStatement::codegen()");
|
||||
}
|
||||
}
|
|
@ -1,8 +1,45 @@
|
|||
use crate::cst::ModuleContext;
|
||||
use crate::cst::{Expression, ModuleContext, Tag, Tools};
|
||||
use json::JsonValue;
|
||||
|
||||
pub struct ConditionalStatement {}
|
||||
|
||||
impl ConditionalStatement {
|
||||
pub fn codegen(_json: &JsonValue, _context: &ModuleContext) {}
|
||||
pub fn codegen(json: &JsonValue, context: &ModuleContext) {
|
||||
let json_if_header = Tools::match_tags(
|
||||
vec![json],
|
||||
vec![
|
||||
Tag::CONDITIONAL_STATEMENT,
|
||||
Tag::IF_CLAUSE,
|
||||
Tag::IF_HEADER,
|
||||
Tag::PAREN_GROUP,
|
||||
Tag::EXPRESSION,
|
||||
],
|
||||
);
|
||||
assert_eq!(json_if_header.len(), 1);
|
||||
Expression::codegen(json_if_header[0], context);
|
||||
|
||||
let json_if_body = Tools::match_tags(
|
||||
vec![json],
|
||||
vec![Tag::CONDITIONAL_STATEMENT, Tag::IF_CLAUSE, Tag::IF_BODY],
|
||||
);
|
||||
assert_eq!(json_if_body.len(), 1);
|
||||
Self::visit_if_body(json_if_body[0], context);
|
||||
|
||||
let json_else_body = Tools::match_tags(
|
||||
vec![json],
|
||||
vec![Tag::CONDITIONAL_STATEMENT, Tag::ELSE_CLAUSE, Tag::ELSE_BODY],
|
||||
);
|
||||
assert!(json_else_body.len() <= 1);
|
||||
if json_else_body.len() == 1 {
|
||||
Self::visit_else_body(json_else_body[0], context);
|
||||
}
|
||||
}
|
||||
|
||||
fn visit_if_body(_json: &JsonValue, _context: &ModuleContext) {
|
||||
println!("TODO: implement ConditionalStatement::visit_if_body()");
|
||||
}
|
||||
|
||||
fn visit_else_body(_json: &JsonValue, _context: &ModuleContext) {
|
||||
println!("TODO: implement ConditionalStatement::visit_else_body()");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,5 +4,7 @@ use json::JsonValue;
|
|||
pub struct EventExpressionList {}
|
||||
|
||||
impl EventExpressionList {
|
||||
pub fn codegen(_json: &JsonValue, _context: &ModuleContext) {}
|
||||
pub fn codegen(_json: &JsonValue, _context: &ModuleContext) {
|
||||
println!("TODO: implement EventExpressionList::codegen()");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
use crate::cst::ModuleContext;
|
||||
use json::JsonValue;
|
||||
|
||||
pub struct Expression {}
|
||||
|
||||
impl Expression {
|
||||
pub fn codegen(_json: &JsonValue, _context: &ModuleContext) {
|
||||
println!("TODO: implement Expression::codegen()");
|
||||
}
|
||||
}
|
|
@ -1,9 +1,12 @@
|
|||
mod always_statement;
|
||||
mod case_statement;
|
||||
mod conditional_statement;
|
||||
mod context;
|
||||
mod description_list;
|
||||
mod event_expression_list;
|
||||
mod expression;
|
||||
mod module_declaration;
|
||||
mod nonblocking_assignment_statement;
|
||||
mod procedural_timing_control_statement;
|
||||
mod seq_block;
|
||||
mod statement;
|
||||
|
@ -11,13 +14,17 @@ mod tags;
|
|||
mod tools;
|
||||
|
||||
use always_statement::AlwaysStatement;
|
||||
use case_statement::CaseStatement;
|
||||
use conditional_statement::ConditionalStatement;
|
||||
use context::{ArgInfo, ModuleContext};
|
||||
pub use description_list::DescriptionList;
|
||||
use event_expression_list::EventExpressionList;
|
||||
use expression::Expression;
|
||||
use module_declaration::ModuleDeclaration;
|
||||
use nonblocking_assignment_statement::NonblockingAssignmentStatement;
|
||||
use procedural_timing_control_statement::ProceduralTimingControlStatement;
|
||||
use seq_block::SeqBlock;
|
||||
use statement::Statement;
|
||||
|
||||
pub use description_list::DescriptionList;
|
||||
pub use tags::Tag;
|
||||
pub use tools::{CodeReporter, Tools};
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
use crate::cst::ModuleContext;
|
||||
use json::JsonValue;
|
||||
|
||||
pub struct NonblockingAssignmentStatement {}
|
||||
|
||||
impl NonblockingAssignmentStatement {
|
||||
pub fn codegen(_json: &JsonValue, _context: &ModuleContext) {
|
||||
println!("TODO: implement NonblockingAssignmentStatement::codegen()");
|
||||
}
|
||||
}
|
|
@ -1,4 +1,7 @@
|
|||
use crate::cst::{ConditionalStatement, ModuleContext, SeqBlock, Tag};
|
||||
use crate::cst::{
|
||||
CaseStatement, ConditionalStatement, ModuleContext, NonblockingAssignmentStatement, SeqBlock,
|
||||
Tag,
|
||||
};
|
||||
use json::JsonValue;
|
||||
|
||||
pub struct Statement {}
|
||||
|
@ -8,8 +11,12 @@ impl Statement {
|
|||
match json["tag"].as_str() {
|
||||
Some(Tag::SEQ_BLOCK) => SeqBlock::codegen(json, context),
|
||||
Some(Tag::CONDITIONAL_STATEMENT) => ConditionalStatement::codegen(json, context),
|
||||
Some(Tag::CASE_STATEMENT) => CaseStatement::codegen(json, context),
|
||||
Some(Tag::NONBLOCKING_ASSIGNMENT_STATEMENT) => {
|
||||
NonblockingAssignmentStatement::codegen(json, context)
|
||||
}
|
||||
Some(x) => {
|
||||
println!("{}", x);
|
||||
println!("FIXME: missing {}", x);
|
||||
}
|
||||
_ => panic!(),
|
||||
};
|
||||
|
|
|
@ -28,7 +28,16 @@ impl Tag {
|
|||
pub const EVENT_EXPRESSION_LIST: &'static str = "kEventExpressionList";
|
||||
pub const SEQ_BLOCK: &'static str = "kSeqBlock";
|
||||
pub const BLOCK_ITEM_STATEMENT_LIST: &'static str = "kBlockItemStatementList";
|
||||
|
||||
pub const CONDITIONAL_STATEMENT: &'static str = "kConditionalStatement";
|
||||
pub const IF_CLAUSE: &'static str = "kIfClause";
|
||||
pub const IF_HEADER: &'static str = "kIfHeader";
|
||||
pub const IF_BODY: &'static str = "kIfBody";
|
||||
pub const ELSE_CLAUSE: &'static str = "kElseClause";
|
||||
pub const ELSE_BODY: &'static str = "kElseBody";
|
||||
|
||||
pub const NONBLOCKING_ASSIGNMENT_STATEMENT: &'static str = "kNonblockingAssignmentStatement";
|
||||
pub const CASE_STATEMENT: &'static str = "kCaseStatement";
|
||||
|
||||
pub const SYMBOL_IDENTIFIER: &'static str = "SymbolIdentifier";
|
||||
pub const DEC_NUMBER: &'static str = "TK_DecNumber";
|
||||
|
|
Loading…
Reference in New Issue