我知道这是128欧元和128个苹果.
我认为它是128千字节,兆字节,千兆字节.或者它是128千字节,兆字节,千兆字节?
如果复数是正确的,我应该使用128 kBs,MBs,GBs.这看起来很陌生.
哪个是正确的,复数还是单数?
谢谢 :)
我一直在努力习惯在Prolog中使用DCG而失败.
如何定义一组语法规则来接受语言a ^ nb ^ n?
例如aaaabbbb或ab等...
谢谢 :).
我正在尝试创建一个解析以下内容的语法:
reference: java.util.String
Run Code Online (Sandbox Code Playgroud)
但同样
reference: {java.util.String, java.lang.Integer}
Run Code Online (Sandbox Code Playgroud)
换句话说,我希望它既解析一个合格名称列表,也只解析一个项目(在这种情况下不用'{'标记).
我试过的是这个:
Reference:
'reference' ':' ('{' values+=QualifiedName (',' values+=QualifiedName)* '}') | (values+=QualifiedName);
Run Code Online (Sandbox Code Playgroud)
但是,我收到一个错误:在使用第一种形式的引用(没有{)时,在'java'中缺少'{'.有什么建议我应该尝试一下吗?
编辑:也尝试过
Reference:
'reference' ':' ('{' values+=QualifiedName (',' values+=QualifiedName)* '}') | ((!'{')values+=QualifiedName);
Run Code Online (Sandbox Code Playgroud)
但在输入'!'时找不到可行的选择 语法定义中的错误.
编辑2:我没有"逗号分隔列表"的问题,我分开尝试了它,它运作良好.我唯一的问题是基于'{'字符来区分规则的两个部分.
我已阅读此内容以了解更多自上而下和自下而上解析之间的区别,任何人都可以解释与自顶向下解析器中的左递归相关的问题吗?
设L表示由语法S - > 0S0/00生成的语言.以下内容哪些是对的?(A)L = 0+(B)L是规则但不是0+(C)L是无上下文但不规则(D)L不是上下文无关
HI谁能解释我语法S - > 0S0/00所代表的语言是如何规则的?我非常清楚语法是没有上下文的,但不确定它是如何规则的?
我正在尝试从包含解析树的文件中学习 PCFG,例如:
(S (DECL_MD (NP_PPSS (PRON_PPSS (ii))) (VERB_MD (pt_verb_md need)) (NP_NN (ADJ_AT (aa)) (NOUN_NN (flight flight)) (PREP_IN (pt_prep_in from))) (AVPNP_NP (NOUN_NP (charlotte charlotte) ))
这是我的相关代码:
def loadData(path):
with open(path ,'r') as f:
data = f.read().split('\n')
return data
def getTreeData(data):
return map(lambda s: tree.Tree.fromstring(s), data)
# Main script
print("loading data..")
data = loadData('C:\\Users\\Rayyan\\Desktop\\MSc Data\\NLP\\parseTrees.txt')
print("generating trees..")
treeData = getTreeData(data)
print("done!")
print("done!")
Run Code Online (Sandbox Code Playgroud)
现在之后我在互联网上尝试了很多东西,例如:
grammar = induce_pcfg(S, productions)
Run Code Online (Sandbox Code Playgroud)
但这里的产品总是内置的功能,例如:
productions = []
for item in treebank.items[:2]:
for tree in treebank.parsed_sents(item):
productions += tree.productions() …
Run Code Online (Sandbox Code Playgroud) 我正在尝试为编译器生成中间代码。我在macOS上使用flex-bison。当我尝试输入时,出现语法错误,并且我不知道该语法错误来自何处。
这是我的词法:
%{
#include<stdbool.h>
#include <stdlib.h>
#include <string.h>
//#include "LinkedList.h"
#include "parser.tab.h"
char* tempString;
%}
%option yylineno
whole 0|[1-9][0-9]*
real {whole}\.(([0-9])|([0-9][0-9]*[1-9]))
divisionop [/]
noSymbol [^ \t\n\/\+\-\*\:\;\,\(\)\.]
error {noSymbol}+
%%
[ \t\n\r]+ ;
\#[-+]?{whole}/[\ :\,\;\+\-\/\*\)\n\r]|".GT."|".GE."|".EQ."|".NE."|".LT."|".LE."|":=" {
char* string = (char*) malloc(strlen(yytext));
strcpy(string, yytext + 1);
string[strlen(string)] = 0;
//printf("Found integer : %d\n", atoi(string));
//push(string,INTEGER,yylineno);
return INTEGER;}
\#[-+]?{real}/[\ :\,\;\+\-\/\*\)\n\r]|".GT."|".GE."|".EQ."|".NE."|".LT."|".LE."|":=" {
char* string = (char*) malloc(strlen(yytext));
strcpy(string, yytext + 1);
string[strlen(string)] = 0;
//printf("Found real:%s\n",string);
//push(string,REAL,0);
return REALNUM;
}
[a-zA-Z][0-9][0-9a-zA-Z]* {
//printf("Found identifier:%s\n",yytext); …
Run Code Online (Sandbox Code Playgroud) 我经常在书中看到这种C语法。但是,似乎<identifier>
从未声明过。
我是否缺少某些东西,或者该语法不完整?
我对 Java 比较陌生,所以请原谅任何白痴。
我正在使用 Bukkit 为 Minecraft 制作一个小插件。我想让它用正确的形式替换常见的语法错误。这是我的代码:
@EventHandler
public void onChat(AsyncPlayerChatEvent event){
String message = event.getMessage().replaceAll("(?i)dont", "don't")
.replaceAll("(?i)youre","you're");
event.setMessage(message);
}
Run Code Online (Sandbox Code Playgroud)
这部作品在更换FINEdont
用don't
,并youre
用you're
。
这种方法的问题在于它会替换DONT
为don't
, 而不是DON'T
。
DoNt
-> don't
, 而不是DoN't
有没有办法在保持正确大小写的同时替换单词?