Sha256: 9f8334640aec7068824592cebcb8bd57de7b4a1259f28f11c9d9c6e1862f8265

Contents?: true

Size: 1.48 KB

Versions: 9

Compression:

Stored size: 1.48 KB

Contents

grammar SpdxGrammar

  rule license_expression
    compound_expression / none / no_assertion
  end

  rule compound_expression
    or_expression / and_expression / expression / grouped_expression
  end

  rule and_expression
    ( expression space <Operand> / grouped_expression space? <Operand> ) "AND" ( space ( and_expression / expression ) <Operand> / space? grouped_expression <Operand> ) <LogicalAnd>
  end

  rule or_expression
    ( ( and_expression / expression ) space <Operand> / grouped_expression space? <Operand> ) "OR"  ( space compound_expression <Operand> / space? grouped_expression <Operand> ) <LogicalOr>
  end

  rule expression
    simple_expression space "WITH" space license_exception_id <With> /
    simple_expression
  end

  rule grouped_expression
    '(' compound_expression ')' <GroupedExpression>
  end

  rule simple_expression
    license_id '+' <LicensePlus> / license_id / ref
  end

  rule ref
    document_ref / license_ref
  end

  rule license_ref
    "LicenseRef-" idstring <LicenseRef>
  end

  rule document_ref
    "DocumentRef-" idstring ':' license_ref <DocumentRef>
  end

  rule license_id
    idstring &{|seq| Spdx.license_exists?(seq.first.text_value) } <License>
  end

  rule license_exception_id
    idstring &{|seq| Spdx.exception_exists?(seq.first.text_value) } <LicenseException>
  end

  rule idstring
    [a-zA-Z0-9\-\.]+
  end

  rule none
    "NONE" <None>
  end

  rule no_assertion
    "NOASSERTION" <NoAssertion>
  end

  rule space
    [\s]+
  end

end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
spdx-4.1.5 lib/spdx_parser.treetop
spdx-4.1.4 lib/spdx_parser.treetop
spdx-4.1.3 lib/spdx_parser.treetop
spdx-4.1.2 lib/spdx_parser.treetop
spdx-4.1.1 lib/spdx_parser.treetop
spdx-4.1.0 lib/spdx_parser.treetop
spdx-4.0.2 lib/spdx_parser.treetop
spdx-4.0.1 lib/spdx_parser.treetop
spdx-4.0.0 lib/spdx_parser.treetop