GithubHelp home page GithubHelp logo

Comments (3)

eliben avatar eliben commented on September 26, 2024

Can you provide a minimal, complete reproducer?

from pycparser.

Mesyanzhin avatar Mesyanzhin commented on September 26, 2024

Can you provide a minimal, complete reproducer?

pycparser version:

__version__ = '2.22'

Input:

from pycparser import c_parser, c_generator

src1 = '''
float f1( float __K1, float __K2 ) {
    float __left_0 = (  {
        float __x1_1 = __K1;
        float __x2_1 = __K2;
        ( __x1_1 < __x2_1 ) ? __x1_1 : __x2_1;
    } );
    return __left_0;
}
'''

src2 = '''
float f2( float __iz_3, float __T1, float __T2 ) {
    float __df_3 = __iz_3 / (  {
        float __x1_4 = __T1;
        float __x2_4 = __T2;
        ( __x1_4 > __x2_4 ) ? __x1_4 : __x2_4;
    } );
    return __df_3;
}
'''

def c2c(src):
    parser = c_parser.CParser()
    ast = parser.parse(src)
    generator = c_generator.CGenerator()
    return generator.visit(ast)

print(c2c(src1))
print(c2c(src2))

Output:

/home/artem/PycharmProjects/TestPy3/envs/bin/python /home/artem/PycharmProjects/TestPy3/c2c.py 
float f1(float __K1, float __K2)
{
  float __left_0 =   {
    float __x1_1 = __K1;
    float __x2_1 = __K2;
    (__x1_1 < __x2_1) ? (__x1_1) : (__x2_1);
  }
;
  return __left_0;
}


Traceback (most recent call last):
  File "/home/artem/PycharmProjects/TestPy3/c2c.py", line 32, in <module>
    print(c2c(src2))
  File "/home/artem/PycharmProjects/TestPy3/c2c.py", line 27, in c2c
    ast = parser.parse(src)
  File "/home/artem/PycharmProjects/TestPy3/pycparser/c_parser.py", line 147, in parse
    return self.cparser.parse(
  File "/home/artem/PycharmProjects/TestPy3/pycparser/ply/yacc.py", line 331, in parse
    return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)
  File "/home/artem/PycharmProjects/TestPy3/pycparser/ply/yacc.py", line 1199, in parseopt_notrack
    tok = call_errorfunc(self.errorfunc, errtoken, self)
  File "/home/artem/PycharmProjects/TestPy3/pycparser/ply/yacc.py", line 193, in call_errorfunc
    r = errorfunc(token)
  File "/home/artem/PycharmProjects/TestPy3/pycparser/c_parser.py", line 1945, in p_error
    self._parse_error(
  File "/home/artem/PycharmProjects/TestPy3/pycparser/plyparser.py", line 67, in _parse_error
    raise ParseError("%s: %s" % (coord, msg))
pycparser.plyparser.ParseError: :3:32: before: {

Process finished with exit code 1

from pycparser.

eliben avatar eliben commented on September 26, 2024

Thanks. This is probably not too hard to fix for someone motivated enough to dig into the code. PRs welcome :)

from pycparser.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.