小编rav*_*ius的帖子

PostCSS中的共享变量

在Sass中,我可以在一个单独的文件中定义我的变量_variables.scss,然后在任何地方使这些变量可用@import variables;.(实际上变量在首次导入后是全局可用的.)使用PostCSS,我可以使用postcss-simple-varspostcss-css-variables定义单个文件的局部变量.我想在一个文件中定义所有/大多数变量,然后@import在我需要使用它们的任何地方定义该文件.

我知道PostCSS插件可以为插件配置预定义的变量,但是我不能为给定的背景计算对比色.


编辑:我可能不清楚我的问题是什么.有没有办法在CSS文件中定义PostCSS变量,使变量不是全局的,但可以"导入"到另一个CSS文件中?如上所述,我可以使用Sass,但是所有变量都是有效的全局变量(不理想).否则在PostCSS中我可以在每个样式表中定义我需要它们的变量(重点是什么?),或者我可以在静态JavaScript结构中定义它们(静态,因为它们不能引用其他变量).

css postcss

9
推荐指数
2
解决办法
7050
查看次数

如何处理Treetop左递归

我有一个语法文件,用于我正在尝试构建的新通用编程语言.我正在尝试使语言健壮且自然地使用(它受到Ruby等人的很大启发),并且在这样做时我引入了一些左递归规则.

我看过一些似乎表明以下左递归规则的例子:

rule l_recurse
  l_recurse / 'something else'
end
Run Code Online (Sandbox Code Playgroud)

可以通过将其更改为以下来进行非左递归:

rule r_recurse
  'something else' / r_recurse
end
Run Code Online (Sandbox Code Playgroud)

对我来说,这似乎会有一个不同的问题,但仍然会失败.我是对的,还是这个"只是工作"?

我正在尝试(查找和)消除的特定左递归在此语法文件中找到.我不确定哪些规则受到影响,但至少有一些规则被指出有左递归.(顺便说一下,我试图通过收紧范围规则来消除他提到的具体范围问题.)

ruby abstract-syntax-tree treetop left-recursion

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

树顶语法无限循环

我对于一种新的编程语言有了一些想法,所以我想我会尝试实现它.一位朋友建议我尝试使用Treetop(Ruby gem)来创建一个解析器.Treetop的文档稀少,我以前从未做过这样的事情.

我的解析器就像它有一个无限循环,但没有堆栈跟踪; 事实证明难以追查.有人能指出我的入门级解析/ AST指南的方向吗?我真的需要一些列出规则,常用用法等东西来使用像Treetop这样的工具.我的解析器语法在GitHub上,以防有人希望帮助我改进它.

class {
  initialize = lambda (name) {
    receiver.name = name
  }

  greet = lambda {
    IO.puts("Hello, #{receiver.name}!")
  }
}.new(:World).greet()
Run Code Online (Sandbox Code Playgroud)

ruby abstract-syntax-tree treetop

5
推荐指数
2
解决办法
516
查看次数

用JavaScript压缩数组

JavaScript与Ruby的Array#compact等效吗?

长版....我按照blog.nemikor.com上的示例进行操作。他的最后一个示例关闭了旧请求,但随后pendings仍然充满了过时的请求。对我来说,这似乎是内存泄漏。

我的解决办法就是循环pendings使用filter如下,但是这看起来有可能是之间的竞争条件pendings.pushpendings = pendings.filter。我是偏执狂吗?如果存在比赛条件,我该如何解决?

var pendings = [];

// there is a route
app.get('/some/path', function (request, response) {
  pendings.push({
    response: response,
    requestedAt: new Date().getTime()
  });
});

setInterval(function () {
  var expiration = new Date().getTime() - (1000 * 30);
  pendings = pendings.filter(function (pending, index) {
    if (pending.requestedAt > expiration) {
      return true;
    } else {
      pending.response.writeHead(408, { 'Content-Type': 'text/plain' });
      pending.response.end('');
    }
  });
}, 1000);
Run Code Online (Sandbox Code Playgroud)

javascript ruby arrays node.js

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