标签: generator

C#/.NET Lexer生成器

我正在为C#/ .NET寻找一个合适的词法扫描程序生成器 - 支持Unicode字符类别,并生成一些可读和有效的代码.谁知道一个?


编辑:我需要支持Unicode类别,而不仅仅是Unicode字符.目前仅有Lu(字母,大写)类别中有1421个字符,我需要非常具体地匹配许多不同的类别,而不是手写它所需的字符集.

此外,实际代码是必须的 - 这排除了生成二进制文件然后与驱动程序一起使用的东西(即GOLD)


编辑:ANTLR尚不支持Unicode类别.但是,它存在一个悬而未决的问题,所以它有朝一日可能符合我的需求.

.net c# parsing generator lexical-analysis

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

如何在C++中实现生成器?

我想知道如何在C++中实现像Python这样的生成器?Python可以使用关键字"yield"来执行此操作.但是如何在C++中实现呢?

c++ idioms generator

11
推荐指数
4
解决办法
5123
查看次数

rails g现有模型和DB表的脚手架

我想创建一个结构 rails g scaffold Article,但我已经创建了表Articles和模型Articles.

有没有办法做到这一点?

activerecord model generator scaffold ruby-on-rails-3

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

为struct/class自动生成流操作符

是否有工具为结构或类自动生成ostream <<运算符?

输入(取自一个Debug-Print函数来统治它们):

typedef struct ReqCntrlT    /* Request control record */
{
  int             connectionID;
  int             dbApplID;
  char            appDescr[MAX_APPDSCR];
  int             reqID;
  int         resubmitFlag;
  unsigned int    resubmitNo;
  char            VCIver[MAX_VCIVER];
  int             loginID;
}   ReqCntrlT;
Run Code Online (Sandbox Code Playgroud)

输出:

std::ostream& operator <<(std::ostream& os, const ReqCntrlT& r) 
{
   os << "reqControl { "
      << "\n\tconnectionID: " << r.connectionID 
      << "\n\tdbApplID: " << r.dbApplID 
      << "\n\tappDescr: " << r.appDescr
      << "\n\treqID: " << r.reqID
      << "\n\tresubmitFlag: " << r.resubmitFlag
      << "\n\tresubmitNo: " << r.resubmitNo
      << "\n\tVCIver: " …
Run Code Online (Sandbox Code Playgroud)

c++ automation iostream code-generation generator

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

Python - 有没有办法在子函数中组织一组产量来产生主函数?

我有一个python大师的新手问题.

我有一个函数A,它包含很多重复的yield-actions,如下所示:

yield a
yield b
yield c
Run Code Online (Sandbox Code Playgroud)

它看起来像:

def funA():
    …
   yield a
   yield b
   yield c
    …
   yield a
   yield b
   yield c
    …
   yield a
   yield b
   yield c
Run Code Online (Sandbox Code Playgroud)

有没有办法把所有重复的收益率放在函数中并做这样的事情?:

def funA():
    …
   yield funB()
    …
   yield funB()
    …
   yield funB()
Run Code Online (Sandbox Code Playgroud)

更新

yield a
yield b
yield c
Run Code Online (Sandbox Code Playgroud)

这只是一个例子,但在实际应用中,它的更复杂的产量序列在主生成器中重复多次(因此不是关于组织产量的问题),而是关于子生成器.所以我想避免代码重复.

python yield generator

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

如何防止Rails控制器生成器修改config/routes.rb

有时我会运行一个命令rails g controller foo index来生成控制器和模板的骨架.

因为我不希望每个控制器都有帮助器和资产,所以我将以下代码放入config/application.rb:

config.generators do |g|
  g.helper false
  g.assets false
end

还有一件事我不想发生.生成器get "foo/index"为我添加了一行config/routes.rb.我该怎样预防呢?

ruby ruby-on-rails generator

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

是否有一个简单的lisp相当于Python的生成器?

在Python中你可以这样写:

def firstn(n):
     num = 0
     while num < n:
         yield num
         num += 1
Run Code Online (Sandbox Code Playgroud)

什么是lisp相当于此?

lisp generator common-lisp

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

类中生成器的变量范围

我想我知道变量和生成器在Python中是如何工作的.
但是,以下代码让我感到困惑.

from __future__ import print_function

class A(object):
    x = 4
    gen = (x for _ in range(3))

a = A()
print(list(a.gen))
Run Code Online (Sandbox Code Playgroud)

运行代码(Python 2)时,它说:

Traceback (most recent call last):
  File "Untitled 8.py", line 10, in <module>
    print(list(a.gen))
  File "Untitled 8.py", line 6, in <genexpr>
    gen = (x for _ in range(3))
NameError: global name 'x' is not defined
Run Code Online (Sandbox Code Playgroud)

在Python 3中,它说,NameError: name 'x' is not defined
但是,当我运行时:

from __future__ import print_function

class A(object):
    x = 4
    lst = [x for …
Run Code Online (Sandbox Code Playgroud)

python variables generator

11
推荐指数
2
解决办法
609
查看次数

发电机可以多次使用吗?

这是我的一段代码,定义了两个生成器:

one_line_gen = (x for x in range(3))

def three_line_gen():
    yield 0
    yield 1
    yield 2
Run Code Online (Sandbox Code Playgroud)

当我执行:

for x in one_line_gen:
    print x

for x in one_line_gen:
    print x
Run Code Online (Sandbox Code Playgroud)

结果如预期:

0
1
2
Run Code Online (Sandbox Code Playgroud)

但是,如果我执行:

for x in three_line_gen():
    print x

for x in three_line_gen():
    print x
Run Code Online (Sandbox Code Playgroud)

结果是:

0
1
2
0
1
2
Run Code Online (Sandbox Code Playgroud)

为什么?我以为任何发电机只能使用一次.

python generator yield-keyword

11
推荐指数
2
解决办法
2785
查看次数

将功能*提升为异步功能*?

假设我有一个函数接受生成器并返回第一个n元素的另一个生成器:

const take = function * (n, xs) {
  console.assert(n >= 0);
  let i = 0;
  for (const x of xs) {
    if (i == n) {
      break;
    }
    yield x;
    i++;
  }
};
Run Code Online (Sandbox Code Playgroud)

用法如下:

const evens = function * () {
  let i = 0;
  while (true) {
    yield i;
    i += 2;
  }
};

for (const x of take(10, evens())) {
  console.log(x);
}
Run Code Online (Sandbox Code Playgroud)

现在想象一下,evens也是async(见这个答案的设置):

const evensAsync = async function * …
Run Code Online (Sandbox Code Playgroud)

javascript generator async-await babeljs ecmascript-next

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