小编ogu*_*ail的帖子

这种语言可以用非二义性 BNF 语法来描述吗?

在离开这个话题 20 多年(自从我获得 CS 本科学位以来)之后,我又回到了语言设计/规范(通过 BNF/EBNF 语法)。

我只是模糊地记得这个领域的各种相关术语,比如 LR(1)、LALR 等。我一直在尝试通过一些谷歌搜索和阅读来刷新,但它来得很慢(可能是因为我没有完全理解这些东西回到学校)。所以我可能做事相当粗略。

我决定用语法来描述一种玩具语言,然后尝试分析并可能优化它,作为我重新学习的一部分。

注意:下面的所有片段也可以在此处的要点中找到

我从 EBNF 表示开始(由该工具处理/验证):

Program                 := WhSp* (StmtSemi WhSp*)* StmtSemiOpt? WhSp*;
Stmt                    := AStmt | BStmt | CStmt | DStmt;
StmtSemi                := Stmt? (WhSp* ";")+;
StmtSemiOpt             := Stmt? (WhSp* ";")*;
WhSp                    := "_";
AStmt                   := "a";
BStmt                   := "b";
CStmt                   := "c";
DStmt                   := "d";
Run Code Online (Sandbox Code Playgroud)

以下是该语言的一些有效匹配(每行一个匹配):


_____
;;;;;
_;_;_
a
__a__
a;
a;b;
a;_b;
_a;_b;_
_a_;_b_;_
__a__;;
_;_a;_b;c;;;__;;__d;___a___
Run Code Online (Sandbox Code Playgroud)

这里有一些该语言中没有的值(同样,每行一个):

ab
a_b
a;_b_c
Run Code Online (Sandbox Code Playgroud)

然后我将其手动转换为以下 BNF 形式( …

grammar parsing bnf context-free-grammar

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

将所有数字缩写转换为文本文件中的数值

我想将文本文件中的所有数字缩写(例如 1K、100K、1M 等)转换为纯数值,例如 1000、100000、1000000 等。

例如,如果我有以下文本文件:

1.3K apples
87.9K oranges
156K mangos
541.7K carrots
1.8M potatoes
Run Code Online (Sandbox Code Playgroud)

我想在 bash 中将其转换为以下内容:

1300 apples
87900 oranges
156000 mangos
541700 carrots
1800000 potatoes
Run Code Online (Sandbox Code Playgroud)

我使用的命令是用完整的数值替换匹配的数字缩写字符串,如下所示:

sed -e 's/1K/1000/g' -e 's/1M/1000000/g' text-file.txt
Run Code Online (Sandbox Code Playgroud)

我的问题是,当发生变化时,我无法找到并替换所有可能的数字缩写。我想这样做直到至少有一位十进制缩写。

bash awk sed

46
推荐指数
9
解决办法
2506
查看次数

3>&1隐含4>&3 5>&3等吗?

我希望

echo foo | tee /proc/self/fd/{3..6} 3>&1
Run Code Online (Sandbox Code Playgroud)

/ proc / self / fd / 4之类的错误而失败:没有这样的文件或目录等,但令我惊讶的是,它输出

foo
foo
foo
foo
foo
Run Code Online (Sandbox Code Playgroud)

就像3>&1导致以下所有描述符都重定向到stdout一样,除非如果我更改3为其他内容则不起作用,例如

echo foo | tee /proc/self/fd/{3..6} 3>&1
Run Code Online (Sandbox Code Playgroud)

有这种行为的解释吗?

linux bash shell io-redirection proc-filesystem

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

Object.hasOwn() 与 Object.prototype.hasOwnProperty()

新方法Object.hasOwn()返回一个布尔值,指示指定对象是否将指定属性作为其自己的属性,但也有Object.prototype.hasOwnProperty(),它们之间有什么区别,使用其中一个相对于另一个有什么好处?

javascript prototypal-inheritance javascript-objects hasownproperty

29
推荐指数
1
解决办法
2万
查看次数

GA4:价格附加多个零

在使用 GA4 view_cart、begin_checkout、add_ payment_info 事件作为项目数组 Price 参数时,会在 GA 调试视图中附加多个零。

例如:我们发送的商品价格如下

gtag('event', "view_cart", {
   currency:'MXN',
   items:[
      {
         "item_id":"84162903",
         "item_name":"Multipack Magnum Mini Cl\u00e1sica 60ml",
         "quantity":14,
         "affiliation":"MI16",
         "discount":0,
         "item_brand":"Magnum",
         "item_category":"Multipack",
         "item_variant":"",
         "price":24040.8,
         "currency":"MXN",
         "coupon":null
      },
      {
         "item_id":"68199453",
         "item_name":"Pinta Magnum Almendras 440ML",
         "quantity":14,
         "affiliation":"MI16",
         "discount":0,
         "item_brand":"Magnum",
         "item_category":"Helado",
         "item_variant":"",
         **"price":9570.96**,
         "currency":"MXN",
         "coupon":null
      },
      {
         "item_id":"67536209",
         "item_name":"Magnum Double Caramelo 93ML",
         "quantity":14,
         "affiliation":"MI16",
         "discount":0,
         "item_brand":"Magnum",
         "item_category":"Paletas",
         "item_variant":"",
         "price":7654.5,
         "currency":"MXN",
         "coupon":null
      },
      {
         "item_id":"209045",
         "item_name":"Magnum Mini Almendras Multipack",
         "quantity":14,
         "affiliation":"MI16",
         "discount":0,
         "item_brand":"Magnum",
         "item_category":"Paletas",
         "item_variant":"",
         "price":7295.4,
         "currency":"MXN",
         "coupon":null
      } …
Run Code Online (Sandbox Code Playgroud)

google-analytics gtag.js google-analytics-4

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

Blazor WASM Net 6 Preview 4 Azure AD - 尝试登录时出错:“无法读取未定义的属性‘toLowerCase’”

我有一个运行 Net 6 Preview 4 的简单 Blazor WASM,我使用本指南进行设置:

https://learn.microsoft.com/en-us/aspnet/core/blazor/security/web assembly/hosted-with-azure-active-directory?view=aspnetcore-6.0

确切的代码与 Net 5.0 完美配合(使用相应的 Net 5.0 程序集)

但是,当我升级到 Net 6 时,我收到以下身份验证错误:

There was an error trying to log you in: 'Cannot read property 'toLowerCase' of undefined'
Run Code Online (Sandbox Code Playgroud)

我似乎也无法获得更多细节。这是在 Azure 应用服务自包含发布上发布的。

在此输入图像描述

代码可以在这里找到: https ://github.com/aherrick/BlazorWASM.Net6Prev4.AzureAD

c# blazor blazor-webassembly .net-6.0

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

在 nuxt.js 中设置 Google Analytics 4

我在使用 Nuxt 设置新的 Google Analytics 4 (GA4) 帐户时遇到问题。根据教程,一切似乎都配置好了,但是我的流量没有显示在 GA(开发和生产)中

在 nuxt.config.js 我有以下内容

  buildModules: [
    '@nuxtjs/tailwindcss','@nuxtjs/google-analytics'
  ],
  googleAnalytics: {
    id: 'G-HWW3B1GM6W'
  },
Run Code Online (Sandbox Code Playgroud)

google id 是我的生产网站的 GA4 数据流 id。我尝试了 2 个不同的流,有 www 和没有 www,但流量没有出现在 GA4 中。

google-analytics nuxt.js google-analytics-4

19
推荐指数
3
解决办法
6541
查看次数

带有 React 的 Google Analytics 4

我一直在尝试在我的应用程序中使用 react-ga 包和 google analytics 4。测量 ID 无法使用它,并且我可以使用的 google 分析 4 中没有跟踪代码。拜托,我需要帮助!

import ReactGA from 'react-ga';
const trackingId = 'G-XXXXXXXXXX'; // UA-XXXXXXXXX-X isn't available in GA4
ReactGA.initialize(trackingId, options);
ReactGA.pageview(page);
Run Code Online (Sandbox Code Playgroud)

google-analytics google-analytics-api reactjs react-ga google-analytics-4

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

如何在没有 Google 跟踪代码管理器的情况下以编程方式将事件发送到 GA4?

我想以编程方式将自定义事件发送到新的 Google Analytics(分析),而不是先在 GTM 中定义它。

我正在使用 Google 跟踪代码管理器,根据这篇文章: https ://developers.google.com/analytics/devguides/collection/ga4/translate-events

这只能通过在 GTM 本身中定义事件来实现。我不能这样做,并且想继续使用旧方法执行此操作,您可以这样做:

        if ("ga" in window) {
            var tracker = ga.getAll()[0];
            if (tracker) {
                tracker.send("event", eventCategory, eventAction);
            }
        }
Run Code Online (Sandbox Code Playgroud)

如何使用 JavaScript 和新的 Google Analytics (GA4) 来实现这种效果?

window.gtag未定义,因为我使用 GTM,并且window.ga未定义,因为我使用 GA4。GTM 中配置的唯一标签是“Google Analytics:GA4 配置”。

javascript google-analytics google-tag-manager google-analytics-4

17
推荐指数
2
解决办法
2万
查看次数

Spring data r2dbc - 复合主键

看起来 Spring Data r2dbc 不支持复合主键。这是一个已知问题吗?

我没有看到对@Embedded 的支持。

mysql spring-data-r2dbc

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