# [[[ HEADER ]]] ## no critic qw(Capitalization ProhibitMultiplePackages ProhibitReusedNames) # SYSTEM DEFAULT 3: allow multiple & lower case package names package # hide from PAUSE indexing rperlrules; # yes, yes it does use strict; use warnings; our $VERSION = 0.001_100; #use RPerl; # NEED UPGRADE: make Grammars first-class citizens for full Perl 6 compatibility, we should have it done by Christmas XD #use parent qw(RPerl::GrammarComponent) # all following rules lists highest-to-lowest level # [[[ COMPILE UNITS ]]] use RPerl::CompileUnit; use RPerl::CompileUnit::Program; use RPerl::CompileUnit::Module; use RPerl::CompileUnit::Module::Class::Generator; use RPerl::CompileUnit::Module::Header; use RPerl::CompileUnit::Module::Package; use RPerl::CompileUnit::Include; use RPerl::CompileUnit::Critic; use RPerl::CompileUnit::Constant; use RPerl::CodeBlock; use RPerl::CodeBlock::Subroutine; use RPerl::CodeBlock::Subroutine::Method; use RPerl::CodeBlock::Subroutine::Method::Arguments; use RPerl::NonGenerator; # [[[ OPERATIONS ]]] use RPerl::Operation; use RPerl::Operation::Expression; use RPerl::Operation::Expression::Operator; use RPerl::Operation::Expression::ConstantCall; # grammar rule & operation use RPerl::Operation::Expression::SubroutineCall; # grammar rule & operation use RPerl::Operation::Expression::SubroutineCall::MethodCall; # grammar rule & operation use RPerl::Operation::Expression::SubroutineCall::MethodCall::ConstructorCall; # grammar rule & operation use RPerl::Operation::Statement; use RPerl::Operation::Statement::Conditional; # grammar rule & operation use RPerl::Operation::Statement::Loop; # grammar rule & operation use RPerl::Operation::Statement::Loop::For; # grammar rule & operation use RPerl::Operation::Statement::Loop::ForEach; # grammar rule & operation use RPerl::Operation::Statement::Loop::While; # grammar rule & operation use RPerl::Operation::Statement::OperatorVoid; use RPerl::Operation::Statement::OperatorVoid::Named; use RPerl::CodeBlock; # [[[ VARIABLES & TYPES ]]] use RPerl::Operation::Expression::SubExpression::Variable; use RPerl::Operation::Expression::SubExpression::Variable::Retrieval; use RPerl::Operation::Expression::SubExpression::Literal; use RPerl::Operation::Expression::SubExpression::Literal::Number; use RPerl::Operation::Expression::SubExpression::Literal::String; use RPerl::Operation::Expression::SubExpression::Literal::Undefined; use RPerl::Operation::Expression::SubExpression::Parenthesis; use RPerl::Operation::Expression::SubExpression::ArrayDereference; use RPerl::Operation::Expression::SubExpression::HashDereference; use RPerl::Operation::Statement::VariableDeclaration; use RPerl::Operation::Statement::VariableModification; use RPerl::DataStructure::Array::ListElements; use RPerl::DataStructure::Array::ListElement; use RPerl::DataStructure::Hash::Entry; use RPerl::DataType::TypeInner; # [[[ INPUT / OUTPUT ]]] use RPerl::InputOutput::FilehandleIn; use RPerl::InputOutput::Stdin; # [[[ OBJECT-ORIENTED ]]] use RPerl::CompileUnit::Module::Class; use RPerl::DataStructure::Hash::Properties; use RPerl::CodeBlock::Subroutine::Method; # Method is the only item that is both a Data Type & a Grammar Rule 1;