小编Rya*_*yan的帖子

如何在两个单独的类中封装PLY的lex和yacc

我正在用PLY编写自己的解析器。我想分别封装lex和yacc

这是Lex类的代码:

class Lex:
    tokens = (
        'NAME', 'NUMBER',
    )

    literals = ['=', '+', '-', '*', '/', '(', ')']

    # Tokens

    t_NAME = r'[a-zA-Z_][a-zA-Z0-9_]*'

    ...
Run Code Online (Sandbox Code Playgroud)

解析器代码(使用yacc):

class Parser:

    # Parsing rules
    tokens = Lex.tokens

    def p_statement_assign(self, p):
        'statement : NAME "=" expression'
        self.names[p[1]] = p[3]

   ...

    def run(self):
        print self.tokens
        lex.lex(module=Lex)   # ----what should I do here?-----
        parser = yacc.yacc(module=self)
        parser.parse("1+2")
Run Code Online (Sandbox Code Playgroud)

我收到以下错误?必须以Lex实例作为第一个参数调用未绑定的方法t_NUMBER()(改为使用LexToken实例)

我尝试使用module=Lexlex,就像一样yacc.yacc(module=self),但是它没有用,任何人都可以告诉解决方案。

ply python-2.7

7
推荐指数
1
解决办法
641
查看次数

堆栈上或BSS或DATA段上的数组最大大小

在C++中,我们都知道数组可以作为局部变量在"主"范围内:

int main(){
    int arr[10000];    //on the stack, size can't be very large
    ....
}
Run Code Online (Sandbox Code Playgroud)

或者作为全局变量的"主"范围:

int arr[10000000];     //on BSS, sie can be very large
int main{
    ....
}
Run Code Online (Sandbox Code Playgroud)

但我想要更多这个问题.

  1. 什么是最大数组大小?我的意思是确切的价值.
  2. 什么会限制最大大小,对于堆栈,我认为答案是创建线程时的堆栈.但是对于BSS,我真的不知道究竟是什么,限制它的大小,是否与线程(就像堆栈)或应用程序(如堆)相关联?

c++ memory arrays stack program-entry-point

5
推荐指数
1
解决办法
684
查看次数

属性支持继承吗?

在我的代码中,类A具有属性,但是类B不继承它。是否@property支持继承?还是我的错?

class A(object):

    def __init__(self):
        self._x = 100

    @property
    def x(self):
        return self._x

    @x.setter
    def x(self, v):
        self._x = v


class B(A):

    @x.setter
    def x(self, v):
        self._x = v
Run Code Online (Sandbox Code Playgroud)

错误消息如下:

Traceback (most recent call last):
  File "test.py", line 9, in <module>
    class B(A):
  File "test.py", line 10, in B
    @x.setter
NameError: name 'x' is not defined
Run Code Online (Sandbox Code Playgroud)

python inheritance properties

3
推荐指数
1
解决办法
1894
查看次数

在C++中,如果我们没有在构造函数中初始化数据成员,那么数据成员的值是什么?

我的问题是关于类数据成员的初始化.我想知道初始化规则,例如内置类型(int,double,float)和用户定义类型.如果我们没有初始化它们,它们的内容是未定义的,还是会使用默认的构造函数?

c++ constructor class

1
推荐指数
1
解决办法
107
查看次数