From 4b4b78be49231b66044f10e73a11e8d14e5b34d5 Mon Sep 17 00:00:00 2001 From: dalance Date: Tue, 9 Jul 2019 10:44:14 +0900 Subject: [PATCH] Fix compile error --- src/lib.rs | 1 + src/parser.rs | 6 ++ src/parser/general/identifiers.rs | 1 - src/parser/primitive_instances/mod.rs | 2 + .../primitive_instantiation_and_instances.rs | 18 +++++ src/parser/source_text/mod.rs | 2 + src/parser/source_text/package_items.rs | 68 +++++++++++++++++++ src/parser/specify_section/mod.rs | 4 ++ .../specify_block_declaration.rs | 18 +++++ .../specify_block_terminals.rs | 61 +++++++++++++++++ .../udp_declaration_and_instantiation/mod.rs | 4 ++ .../udp_declaration.rs | 18 +++++ .../udp_instantiation.rs | 18 +++++ 13 files changed, 220 insertions(+), 1 deletion(-) create mode 100644 src/parser/primitive_instances/mod.rs create mode 100644 src/parser/primitive_instances/primitive_instantiation_and_instances.rs create mode 100644 src/parser/source_text/package_items.rs create mode 100644 src/parser/specify_section/mod.rs create mode 100644 src/parser/specify_section/specify_block_declaration.rs create mode 100644 src/parser/specify_section/specify_block_terminals.rs create mode 100644 src/parser/udp_declaration_and_instantiation/mod.rs create mode 100644 src/parser/udp_declaration_and_instantiation/udp_declaration.rs create mode 100644 src/parser/udp_declaration_and_instantiation/udp_instantiation.rs diff --git a/src/lib.rs b/src/lib.rs index 67c567f..f757266 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1 +1,2 @@ +#![recursion_limit = "128"] pub mod parser; diff --git a/src/parser.rs b/src/parser.rs index cf2bc21..9db42ec 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -3,12 +3,18 @@ pub mod declarations; pub mod expressions; pub mod general; pub mod instantiations; +pub mod primitive_instances; pub mod source_text; +pub mod specify_section; +pub mod udp_declaration_and_instantiation; pub mod utils; pub use behavioral_statements::*; pub use declarations::*; pub use expressions::*; pub use general::*; pub use instantiations::*; +pub use primitive_instances::*; pub use source_text::*; +pub use specify_section::*; +pub use udp_declaration_and_instantiation::*; pub use utils::*; diff --git a/src/parser/general/identifiers.rs b/src/parser/general/identifiers.rs index bc83491..2c8c762 100644 --- a/src/parser/general/identifiers.rs +++ b/src/parser/general/identifiers.rs @@ -3,7 +3,6 @@ use nom::branch::*; use nom::bytes::complete::*; use nom::combinator::*; use nom::error::*; -use nom::multi::*; use nom::sequence::*; use nom::{Err, IResult}; diff --git a/src/parser/primitive_instances/mod.rs b/src/parser/primitive_instances/mod.rs new file mode 100644 index 0000000..4038f47 --- /dev/null +++ b/src/parser/primitive_instances/mod.rs @@ -0,0 +1,2 @@ +pub mod primitive_instantiation_and_instances; +pub use primitive_instantiation_and_instances::*; diff --git a/src/parser/primitive_instances/primitive_instantiation_and_instances.rs b/src/parser/primitive_instances/primitive_instantiation_and_instances.rs new file mode 100644 index 0000000..4ad556d --- /dev/null +++ b/src/parser/primitive_instances/primitive_instantiation_and_instances.rs @@ -0,0 +1,18 @@ +use crate::parser::*; +//use nom::branch::*; +//use nom::combinator::*; +use nom::error::*; +use nom::{Err, IResult}; + +// ----------------------------------------------------------------------------- + +#[derive(Debug)] +pub struct GateInstantiation<'a> { + pub nodes: (Identifier<'a>,), +} + +// ----------------------------------------------------------------------------- + +pub fn gate_instantiation(s: &str) -> IResult<&str, GateInstantiation> { + Err(Err::Error(make_error(s, ErrorKind::Fix))) +} diff --git a/src/parser/source_text/mod.rs b/src/parser/source_text/mod.rs index e2e0592..fc58f3f 100644 --- a/src/parser/source_text/mod.rs +++ b/src/parser/source_text/mod.rs @@ -6,6 +6,7 @@ pub mod interface_items; pub mod library_source_text; pub mod module_items; pub mod module_parameters_and_ports; +pub mod package_items; pub mod program_items; pub mod system_verilog_source_text; pub use checker_items::*; @@ -16,5 +17,6 @@ pub use interface_items::*; pub use library_source_text::*; pub use module_items::*; pub use module_parameters_and_ports::*; +pub use package_items::*; pub use program_items::*; pub use system_verilog_source_text::*; diff --git a/src/parser/source_text/package_items.rs b/src/parser/source_text/package_items.rs new file mode 100644 index 0000000..f04aa0b --- /dev/null +++ b/src/parser/source_text/package_items.rs @@ -0,0 +1,68 @@ +use crate::parser::*; +//use nom::branch::*; +//use nom::combinator::*; +use nom::error::*; +use nom::{Err, IResult}; + +// ----------------------------------------------------------------------------- + +#[derive(Debug)] +pub enum PackageItem<'a> { + PackageOrGenerateItemDeclaration(PackageOrGenerateItemDeclaration<'a>), + AnonymousProgram(AnonymousProgram<'a>), + PackageExportDeclaration(PackageExportDeclaration<'a>), + TimeunitsDeclaration(TimeunitsDeclaration<'a>), +} + +#[derive(Debug)] +pub enum PackageOrGenerateItemDeclaration<'a> { + NetDeclaration(NetDeclaration<'a>), + DataDeclaration(DataDeclaration<'a>), + TaskDeclaration(TaskDeclaration<'a>), + FunctionDeclaration(FunctionDeclaration<'a>), + CheckerDeclaration(CheckerDeclaration<'a>), + DpiImportExport(DpiImportExport<'a>), + ExternConstraintDeclaration(ExternConstraintDeclaration<'a>), + ClassDeclaration(ClassDeclaration<'a>), + ClassConstructorDeclaration(ClassConstructorDeclaration<'a>), + LocalParameterDeclaration(LocalParameterDeclaration<'a>), + ParameterDeclaration(ParameterDeclaration<'a>), + CovergroupDeclaration(CovergroupDeclaration<'a>), + AssertionItemDeclaration(AssertionItemDeclaration<'a>), + Empty, +} + +#[derive(Debug)] +pub struct AnonymousProgram<'a> { + pub nodes: (Vec>,), +} + +#[derive(Debug)] +pub enum AnonymousProgramItem<'a> { + TaskDeclaration(TaskDeclaration<'a>), + FunctionDeclaration(FunctionDeclaration<'a>), + ClassDeclaration(ClassDeclaration<'a>), + CovergroupDeclaration(CovergroupDeclaration<'a>), + ClassConstructorDeclaration(ClassConstructorDeclaration<'a>), + Empty, +} + +// ----------------------------------------------------------------------------- + +pub fn package_item(s: &str) -> IResult<&str, PackageItem> { + Err(Err::Error(make_error(s, ErrorKind::Fix))) +} + +pub fn package_or_generate_item_declaration( + s: &str, +) -> IResult<&str, PackageOrGenerateItemDeclaration> { + Err(Err::Error(make_error(s, ErrorKind::Fix))) +} + +pub fn anonymous_program(s: &str) -> IResult<&str, AnonymousProgram> { + Err(Err::Error(make_error(s, ErrorKind::Fix))) +} + +pub fn anonymous_program_item(s: &str) -> IResult<&str, AnonymousProgramItem> { + Err(Err::Error(make_error(s, ErrorKind::Fix))) +} diff --git a/src/parser/specify_section/mod.rs b/src/parser/specify_section/mod.rs new file mode 100644 index 0000000..39cdce5 --- /dev/null +++ b/src/parser/specify_section/mod.rs @@ -0,0 +1,4 @@ +pub mod specify_block_declaration; +pub mod specify_block_terminals; +pub use specify_block_declaration::*; +pub use specify_block_terminals::*; diff --git a/src/parser/specify_section/specify_block_declaration.rs b/src/parser/specify_section/specify_block_declaration.rs new file mode 100644 index 0000000..cf8be2e --- /dev/null +++ b/src/parser/specify_section/specify_block_declaration.rs @@ -0,0 +1,18 @@ +use crate::parser::*; +//use nom::branch::*; +//use nom::combinator::*; +use nom::error::*; +use nom::{Err, IResult}; + +// ----------------------------------------------------------------------------- + +#[derive(Debug)] +pub struct SpecifyBlock<'a> { + pub nodes: (Identifier<'a>,), +} + +// ----------------------------------------------------------------------------- + +pub fn specify_block(s: &str) -> IResult<&str, SpecifyBlock> { + Err(Err::Error(make_error(s, ErrorKind::Fix))) +} diff --git a/src/parser/specify_section/specify_block_terminals.rs b/src/parser/specify_section/specify_block_terminals.rs new file mode 100644 index 0000000..a8758dc --- /dev/null +++ b/src/parser/specify_section/specify_block_terminals.rs @@ -0,0 +1,61 @@ +use crate::parser::*; +//use nom::branch::*; +//use nom::combinator::*; +use nom::error::*; +use nom::{Err, IResult}; + +// ----------------------------------------------------------------------------- + +#[derive(Debug)] +pub struct SpecifyInputTerminalDescriptor<'a> { + pub nodes: (InputIdentifier<'a>, Option>), +} + +#[derive(Debug)] +pub struct SpecifyOutputTerminalDescriptor<'a> { + pub nodes: (OutputIdentifier<'a>, Option>), +} + +#[derive(Debug)] +pub enum InputIdentifier<'a> { + InputPortIdentifier(InputPortIdentifier<'a>), + InoutPortIdentifier(InoutPortIdentifier<'a>), + Interface(InputIdentifierInterface<'a>), +} + +#[derive(Debug)] +pub struct InputIdentifierInterface<'a> { + pub nodes: (InterfaceIdentifier<'a>, PortIdentifier<'a>), +} + +#[derive(Debug)] +pub enum OutputIdentifier<'a> { + OutputPortIdentifier(OutputPortIdentifier<'a>), + InoutPortIdentifier(InoutPortIdentifier<'a>), + Interface(OutputIdentifierInterface<'a>), +} + +#[derive(Debug)] +pub struct OutputIdentifierInterface<'a> { + pub nodes: (InterfaceIdentifier<'a>, PortIdentifier<'a>), +} + +// ----------------------------------------------------------------------------- + +pub fn specify_input_terminal_descriptor(s: &str) -> IResult<&str, SpecifyInputTerminalDescriptor> { + Err(Err::Error(make_error(s, ErrorKind::Fix))) +} + +pub fn specify_output_terminal_descriptor( + s: &str, +) -> IResult<&str, SpecifyOutputTerminalDescriptor> { + Err(Err::Error(make_error(s, ErrorKind::Fix))) +} + +pub fn input_identifier(s: &str) -> IResult<&str, InputIdentifier> { + Err(Err::Error(make_error(s, ErrorKind::Fix))) +} + +pub fn output_identifier(s: &str) -> IResult<&str, OutputIdentifier> { + Err(Err::Error(make_error(s, ErrorKind::Fix))) +} diff --git a/src/parser/udp_declaration_and_instantiation/mod.rs b/src/parser/udp_declaration_and_instantiation/mod.rs new file mode 100644 index 0000000..a55f775 --- /dev/null +++ b/src/parser/udp_declaration_and_instantiation/mod.rs @@ -0,0 +1,4 @@ +pub mod udp_declaration; +pub mod udp_instantiation; +pub use udp_declaration::*; +pub use udp_instantiation::*; diff --git a/src/parser/udp_declaration_and_instantiation/udp_declaration.rs b/src/parser/udp_declaration_and_instantiation/udp_declaration.rs new file mode 100644 index 0000000..b62f677 --- /dev/null +++ b/src/parser/udp_declaration_and_instantiation/udp_declaration.rs @@ -0,0 +1,18 @@ +use crate::parser::*; +//use nom::branch::*; +//use nom::combinator::*; +use nom::error::*; +use nom::{Err, IResult}; + +// ----------------------------------------------------------------------------- + +#[derive(Debug)] +pub struct UdpDeclaration<'a> { + pub nodes: (Identifier<'a>,), +} + +// ----------------------------------------------------------------------------- + +pub fn udp_declaration(s: &str) -> IResult<&str, UdpDeclaration> { + Err(Err::Error(make_error(s, ErrorKind::Fix))) +} diff --git a/src/parser/udp_declaration_and_instantiation/udp_instantiation.rs b/src/parser/udp_declaration_and_instantiation/udp_instantiation.rs new file mode 100644 index 0000000..fd5b5bf --- /dev/null +++ b/src/parser/udp_declaration_and_instantiation/udp_instantiation.rs @@ -0,0 +1,18 @@ +use crate::parser::*; +//use nom::branch::*; +//use nom::combinator::*; +use nom::error::*; +use nom::{Err, IResult}; + +// ----------------------------------------------------------------------------- + +#[derive(Debug)] +pub struct UdpInstantiation<'a> { + pub nodes: (Identifier<'a>,), +} + +// ----------------------------------------------------------------------------- + +pub fn udp_instantiation(s: &str) -> IResult<&str, UdpInstantiation> { + Err(Err::Error(make_error(s, ErrorKind::Fix))) +}