Module: Collie

Defined in:
lib/collie.rb,
lib/collie/ast.rb,
lib/collie/cli.rb,
lib/collie/config.rb,
lib/collie/version.rb,
lib/collie/linter/base.rb,
lib/collie/parser/lexer.rb,
lib/collie/parser/parser.rb,
lib/collie/reporter/json.rb,
lib/collie/reporter/text.rb,
lib/collie/linter/registry.rb,
lib/collie/reporter/github.rb,
lib/collie/analyzer/conflict.rb,
lib/collie/formatter/options.rb,
lib/collie/analyzer/recursion.rb,
lib/collie/formatter/formatter.rb,
lib/collie/analyzer/reachability.rb,
lib/collie/analyzer/symbol_table.rb,
lib/collie/linter/rules/long_rule.rb,
lib/collie/linter/rules/empty_action.rb,
lib/collie/linter/rules/token_naming.rb,
lib/collie/linter/rules/unused_token.rb,
lib/collie/linter/rules/left_recursion.rb,
lib/collie/linter/rules/duplicate_token.rb,
lib/collie/linter/rules/right_recursion.rb,
lib/collie/linter/rules/prec_improvement.rb,
lib/collie/linter/rules/undefined_symbol.rb,
lib/collie/linter/rules/unreachable_rule.rb,
lib/collie/linter/rules/redundant_epsilon.rb,
lib/collie/linter/rules/circular_reference.rb,
lib/collie/linter/rules/factorizable_rules.rb,
lib/collie/linter/rules/nonterminal_naming.rb,
lib/collie/linter/rules/unused_nonterminal.rb,
lib/collie/linter/rules/trailing_whitespace.rb,
lib/collie/linter/rules/ambiguous_precedence.rb,
lib/collie/linter/rules/missing_start_symbol.rb,
lib/collie/linter/rules/consistent_tag_naming.rb

Overview

Collie is a linter and formatter for Lrama Style BNF grammar files (.y files).

Examples:

Basic usage

require 'collie'

# Parse a grammar file
parser = Collie::Parser::Parser.new(File.read('grammar.y'))
ast = parser.parse

# Run linter
config = Collie::Config.new
linter = Collie::Linter.new(config)
offenses = linter.lint(ast)

# Format the grammar
formatter = Collie::Formatter::Formatter.new(config.formatter_options)
puts formatter.format(ast)

See Also:

Defined Under Namespace

Modules: AST, Analyzer, Formatter, Linter, Parser, Reporter Classes: CLI, Config, Error

Constant Summary collapse

VERSION =
"0.1.0"

Class Method Summary collapse

Class Method Details

.rootString

Returns the root directory of the Collie gem

Returns:

  • (String)

    absolute path to the gem root directory



48
49
50
# File 'lib/collie.rb', line 48

def root
  File.expand_path("..", __dir__)
end