linux-spdx.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Zavras, Alexios" <alexios.zavras@intel.com>
To: Joe Perches <joe@perches.com>, Thomas Gleixner <tglx@linutronix.de>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	"linux-spdx@vger.kernel.org" <linux-spdx@vger.kernel.org>,
	"Linux Kernel Mailing List" <linux-kernel@vger.kernel.org>
Subject: RE: spdxcheck.py complains about the second OR?
Date: Mon, 11 Nov 2019 09:37:32 +0000	[thread overview]
Message-ID: <CY4PR1101MB236097D5F60B4AD344413FCD89740@CY4PR1101MB2360.namprd11.prod.outlook.com> (raw)
In-Reply-To: <ec20c751ac1e4156aca0b02dfa0cef4b70cb8ec5.camel@perches.com>

Sorry for the delay in replying.
I've never used PLY before, but I do know lex and yacc, so I'm confident that an expression with two (or more) "OR" terms will be handled recursively.

The problem with spdxcheck.py is, I think, that it specifies "nonassoc" in the precedence variable, which effectively means that constructs like "a OR b OR c" are not allowed and need to be "(a OR b) OR c". I expect simply deleting this string would make everything pass.

The following standalone test code shows that there is no need for any additional rule in the grammar (the first tests succeed, the last two fail with lexical and parsing errors, respectively):

#!/usr/bin/env python3

import ply.lex as lex
import ply.yacc as yacc

tokens = ( 'ID', 'OR', 'AND', 'LPAR', 'RPAR',)

t_ID = r'[a-z]+'
t_OR = 'OR'
t_AND = 'AND'
t_LPAR  = r'\('
t_RPAR  = r'\)'
t_ignore  = ' \t\n'

def p_expr(p):
    '''expr : ID
        | expr AND expr
        | expr OR expr
        | LPAR expr RPAR'''

def t_error(t):
    print("Illegal character '%s'" % t.value[0])
    t.lexer.skip(1)

def p_error(p):
    print("Syntax error in input!", p)


lexer = lex.lex()
parser = yacc.yacc()

tests = ( 'a', 'a OR b', 'a AND b', 'a OR b OR c', 'a OR b AND c OR d',
        'a AND @', 'a OR OR b')
for s in tests:
    print(s)
    parser.parse(s)

#EOF----------------------------------------------------------------

-- zvr

-----Original Message-----
From: Joe Perches <joe@perches.com> 
Sent: Tuesday, 5 November, 2019 16:11
To: Zavras, Alexios <alexios.zavras@intel.com>; Thomas Gleixner <tglx@linutronix.de>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>; linux-spdx@vger.kernel.org; Linux Kernel Mailing List <linux-kernel@vger.kernel.org>; Masahiro Yamada <yamada.masahiro@socionext.com>
Subject: Re: spdxcheck.py complains about the second OR?

On Tue, 2019-11-05 at 10:11 +0000, Zavras, Alexios wrote:
> This is not correct.
> Since the grammar includes the production "expr: expr OR expr", there 
> is absolutely no need to add a rule with more than two operands -- it 
> will be handled recursively.

You sure about the recursion?

It does work and spdxcheck no longer emits a message for these two files.

> -- zvr
> 
> -----Original Message-----
> From: linux-spdx-owner@vger.kernel.org 
> <linux-spdx-owner@vger.kernel.org> On Behalf Of Joe Perches
> Sent: Monday, 4 November, 2019 23:24
> To: Thomas Gleixner <tglx@linutronix.de>; Masahiro Yamada 
> <yamada.masahiro@socionext.com>
> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>; 
> linux-spdx@vger.kernel.org; Linux Kernel Mailing List 
> <linux-kernel@vger.kernel.org>
> Subject: Re: spdxcheck.py complains about the second OR?
> 
> On Mon, 2019-11-04 at 23:11 +0100, Thomas Gleixner wrote:
> > On Fri, 1 Nov 2019, Masahiro Yamada wrote:
> > > scripts/spdxcheck.py warns the following two files.
> > > 
> > > $ ./scripts/spdxcheck.py
> > > drivers/net/ethernet/pensando/ionic/ionic_if.h: 1:52 Syntax error: 
> > > OR
> > > drivers/net/ethernet/pensando/ionic/ionic_regs.h: 1:52 Syntax error: 
> > > OR
> > > 
> > > I do not understand what is wrong with them.
> > > 
> > > I think "A OR B OR C" is sane.
> > 
> > Yes it is, but obviously we did not expect files with 3 possible 
> > alternative licenses.
> 
> Perhaps just this, but the generic logic obviously isn't complete.
> ---
>  scripts/spdxcheck.py | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/scripts/spdxcheck.py b/scripts/spdxcheck.py index 
> 6374e0..00be34 100755
> --- a/scripts/spdxcheck.py
> +++ b/scripts/spdxcheck.py
> @@ -150,6 +150,7 @@ class id_parser(object):
>                  | ID WITH EXC
>                  | expr AND expr
>                  | expr OR expr
> +                | expr OR expr OR expr
>                  | LPAR expr RPAR'''
>          pass
>  
> 
> 
> Intel Deutschland GmbH
> Registered Address: Am Campeon 10-12, 85579 Neubiberg, Germany
> Tel: +49 89 99 8853-0, www.intel.de
> Managing Directors: Christin Eisenschmid, Gary Kershaw Chairperson of 
> the Supervisory Board: Nicole Lau Registered Office: Munich Commercial 
> Register: Amtsgericht Muenchen HRB 186928
> 

Intel Deutschland GmbH
Registered Address: Am Campeon 10-12, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de
Managing Directors: Christin Eisenschmid, Gary Kershaw
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928


  reply	other threads:[~2019-11-11  9:37 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-01  4:25 spdxcheck.py complains about the second OR? Masahiro Yamada
2019-11-04 22:11 ` Thomas Gleixner
2019-11-04 22:24   ` Joe Perches
2019-11-05 10:11     ` Zavras, Alexios
2019-11-05 15:10       ` Joe Perches
2019-11-11  9:37         ` Zavras, Alexios [this message]
2019-11-05 15:47     ` Christoph Hellwig
2019-11-04 23:53   ` Christoph Hellwig
     [not found]     ` <CAG_66ZQ3f39bv=0Yw=Eum0vcxbf94mmXE9jdJUpi6+gEEqkS8A@mail.gmail.com>
2019-11-05 14:28       ` Christoph Hellwig

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CY4PR1101MB236097D5F60B4AD344413FCD89740@CY4PR1101MB2360.namprd11.prod.outlook.com \
    --to=alexios.zavras@intel.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=joe@perches.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-spdx@vger.kernel.org \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).