Sha256: 38856f7f4b90d3bc55e7c1e36588fb468656900aec9b8a3eaf78e59db898dbee

Contents?: true

Size: 929 Bytes

Versions: 3

Compression:

Stored size: 929 Bytes

Contents

grammar SpdxGrammar

  rule spdx_expression
    compound_expression / none / no_assertion
  end

  rule compound_expression
    '(' body ')' <CompoundExpression>
  end

  rule body
    (compound_expression / and / or / with / license / space )* <Body>
  end

  rule and
    "AND" space !reserve_words <LogicalAnd>
  end

  rule or
    "OR" space !reserve_words <LogicalOr>
  end

  rule with
    "WITH" space license_exception <With>
  end

  rule license
    [a-zA-Z0-9\-\+:\.]+ &{|seq| Spdx.license_exists?(seq.first.text_value) || Spdx.license_exists?(seq.first.text_value.delete_suffix('+')) }  <License>
  end

  rule license_exception
    [a-zA-Z0-9\-\+:\.]+ &{|seq| Spdx.exception_exists?(seq.first.text_value) } <LicenseException>
  end

  rule reserve_words
    "AND" / "OR" / "WITH"
  end

  rule none
    "NONE" <None>
  end

  rule no_assertion
    "NOASSERTION" <NoAssertion>
  end

  rule space
    [\s]+
  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
spdx-2.0.11 lib/spdx_parser.treetop
spdx-2.0.10 lib/spdx_parser.treetop
spdx-2.0.9 lib/spdx_parser.treetop