+
Skip to content

PPI differs from perl: pi < 1 #304

@happy-barney

Description

@happy-barney

Test expression:

if (pi < 1) { }}

(issue mentioned some time ago on p5p IRC channel)

Implications: another example where Perl uses FUN0 to parse code differently

How PPI parses it:

ppi-dump.pl 'if (pi < 1) { }}'
PPI::Document
  PPI::Statement::Compound
    PPI::Token::Word  	'if'
    PPI::Token::Whitespace  	' '
    PPI::Structure::Condition  	( ... )
      PPI::Statement::Expression
        PPI::Token::Word  	'pi'
        PPI::Token::Whitespace  	' '
        PPI::Token::Operator  	'<'
        PPI::Token::Whitespace  	' '
        PPI::Token::Number  	'1'
    PPI::Token::Whitespace  	' '
    PPI::Structure::Block  	{ ... }
      PPI::Token::Whitespace  	' '
  PPI::Statement::UnmatchedBrace
    PPI::Token::Structure  	'}'

How Perl parses it

Depends on prototype of pi:

  • sub pi ();
    • treats < as comparison operator
  • sub pi;
    • treats < as opening token of <>

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载