Add empty methods to go through "fpga_hdl_defect/"

This commit is contained in:
Guojie Luo 2022-02-24 08:19:27 +08:00
parent 403d0d3112
commit c93df679d3
5 changed files with 44 additions and 2 deletions

View File

@ -0,0 +1,8 @@
use crate::cst::ModuleContext;
use json::JsonValue;
pub struct ConditionalStatement {}
impl ConditionalStatement {
pub fn codegen(_json: &JsonValue, _context: &ModuleContext) {}
}

View File

@ -1,19 +1,23 @@
mod always_statement; mod always_statement;
mod conditional_statement;
mod context; mod context;
mod description_list; mod description_list;
mod event_expression_list; mod event_expression_list;
mod module_declaration; mod module_declaration;
mod procedural_timing_control_statement; mod procedural_timing_control_statement;
mod seq_block;
mod statement; mod statement;
mod tags; mod tags;
mod tools; mod tools;
use always_statement::AlwaysStatement; use always_statement::AlwaysStatement;
use conditional_statement::ConditionalStatement;
use context::{ArgInfo, ModuleContext}; use context::{ArgInfo, ModuleContext};
pub use description_list::DescriptionList; pub use description_list::DescriptionList;
use event_expression_list::EventExpressionList; use event_expression_list::EventExpressionList;
use module_declaration::ModuleDeclaration; use module_declaration::ModuleDeclaration;
use procedural_timing_control_statement::ProceduralTimingControlStatement; use procedural_timing_control_statement::ProceduralTimingControlStatement;
use seq_block::SeqBlock;
use statement::Statement; use statement::Statement;
pub use tags::Tag; pub use tags::Tag;
pub use tools::{CodeReporter, Tools}; pub use tools::{CodeReporter, Tools};

View File

@ -0,0 +1,20 @@
use crate::cst::{ModuleContext, Statement, Tag, Tools};
use json::JsonValue;
pub struct SeqBlock {}
impl SeqBlock {
pub fn codegen(json: &JsonValue, context: &ModuleContext) {
let json_block_item_statement_list = {
let json_nodes = Tools::match_tags(
vec![json],
vec![Tag::SEQ_BLOCK, Tag::BLOCK_ITEM_STATEMENT_LIST],
);
assert_eq!(json_nodes.len(), 1);
json_nodes[0]
};
for json_statement in json_block_item_statement_list["children"].members() {
Statement::codegen(json_statement, context);
}
}
}

View File

@ -1,8 +1,17 @@
use crate::cst::ModuleContext; use crate::cst::{ConditionalStatement, ModuleContext, SeqBlock, Tag};
use json::JsonValue; use json::JsonValue;
pub struct Statement {} pub struct Statement {}
impl Statement { impl Statement {
pub fn codegen(_json: &JsonValue, _context: &ModuleContext) {} pub fn codegen(json: &JsonValue, context: &ModuleContext) {
match json["tag"].as_str() {
Some(Tag::SEQ_BLOCK) => SeqBlock::codegen(json, context),
Some(Tag::CONDITIONAL_STATEMENT) => ConditionalStatement::codegen(json, context),
Some(x) => {
println!("{}", x);
}
_ => panic!(),
};
}
} }

View File

@ -28,6 +28,7 @@ impl Tag {
pub const EVENT_EXPRESSION_LIST: &'static str = "kEventExpressionList"; pub const EVENT_EXPRESSION_LIST: &'static str = "kEventExpressionList";
pub const SEQ_BLOCK: &'static str = "kSeqBlock"; pub const SEQ_BLOCK: &'static str = "kSeqBlock";
pub const BLOCK_ITEM_STATEMENT_LIST: &'static str = "kBlockItemStatementList"; pub const BLOCK_ITEM_STATEMENT_LIST: &'static str = "kBlockItemStatementList";
pub const CONDITIONAL_STATEMENT: &'static str = "kConditionalStatement";
pub const SYMBOL_IDENTIFIER: &'static str = "SymbolIdentifier"; pub const SYMBOL_IDENTIFIER: &'static str = "SymbolIdentifier";
pub const DEC_NUMBER: &'static str = "TK_DecNumber"; pub const DEC_NUMBER: &'static str = "TK_DecNumber";