我试图在TestRig中运行以下语法:
grammar COBOLfragment;
// hidden tokens
WS : [ ]+ -> channel(HIDDEN);
NL : '\n' -> channel(HIDDEN);
// keywords
PERIOD : '.';
DIVISION : 'DIVISION';
SECTION : 'SECTION';
DATA : 'DATA';
WORKING_STORAGE : 'WORKING-STORAGE';
FILE : 'FILE';
FD : 'FD';
EXTERNAL : 'EXTERNAL';
GLOBAL : 'GLOBAL';
BLOCK : 'BLOCK';
CONTAINS : 'CONTAINS';
CHARACTERS : 'CHARACTERS';
// data
INTEGER : [0-9]+;
ID : [A-Z][A-Z0-9]*;
dataDivision :
DATA DIVISION PERIOD
fileSection?
workingStorageSection?
;
fileSection :
FILE SECTION PERIOD
fileDescription*
;
fileDescription :
FD fileName=ID
// (IS? GLOBAL)? // 1. IS GLOBAL clause
// (IS? EXTERNAL)? // 2. IS EXTERNAL clause
blockClause?
PERIOD
;
blockClause :
BLOCK CONTAINS? blockSize=INTEGER CHARACTERS
;
workingStorageSection :
WORKING_STORAGE SECTION PERIOD
;
使用以下输入:
DATA DIVISION.
FILE SECTION.
FD FD01
WORKING-STORAGE SECTION.
显然,第三行输入(“fd fd01”)缺少在FileDescription
规则中要求的结束符句点
。
旁注1:如果我启用了IS EXTERNAL或IS GLOBAL子句,但不是两个子句都启用,那么DefaulTerrorStrategy
可以很好地工作,并注入丢失的令牌。
附带说明2:为启用两个子句的语法生成的代码有以下额外代码(与只启用其中一个子句的语法相比):
public final FileDescriptionContext fileDescription() ... {
...
try {
...
switch ( getInterpreter().adaptivePredict(_input,4,_ctx) ) {
case 1:
{
setState(31);
_la = _input.LA(1);
if (_la==IS) {
{
setState(30); match(IS);
}
}
setState(33); match(GLOBAL);
}
break;
}
...
}
catch (RecognitionException re) {
...
而AdaptivePredict()
调用是罪魁祸首,因为它在解析器有机会进行匹配(PERIOD)
之前,在输入'working-storage'抛出没有可行的替代选项(在生成的代码中,此处没有粘贴)。
我已经设法解决了这个问题,为两个IS子句添加了一个新子句:
(这里只是片段改变了)
...
fileDescription :
FD fileName=ID
isClauses?
blockClause?
PERIOD
;
isClauses :
IS? GLOBAL (IS? EXTERNAL)?
| IS? EXTERNAL
;
...
现在,DefaulTerrorStrategy
执行它的工作,并注入缺少的句点
。
问题内容: 我有Django的1.3版。我尝试按照其他人的问题指定localhost:8000,但这对我不起作用。我正在尝试使用文件上传表单,但是我收到一个错误,即form.py没有CSRF令牌。 form.py: views.py: upload.html: 我很沮丧,请告诉我一些尝试的方法。谢谢 问题答案: 你需要传递 为此:(views.py) 这会将csrf的令牌传递到模板。
问题内容: 在这里是Django的初学者,我已经尝试了很长时间了。我的中间件类中确实有“ django.middleware.csrf.CsrfViewMiddleware”,并且我的帖子中确实有令牌。 这是我的代码,我在做什么错? 这是我的模板: 问题答案: 你应该使用自动使用的快捷功能 使用https://docs.djangoproject.com/en/2.2/topics/http/sh
问题内容: 我正在使用Django 1.7和django-rest-framework。 我制作了一个API,该API返回了一些JSON数据,并将其放入了我的 settings.py 当我进行GET调用时,它将返回我所有的数据,但是当我尝试使用PUT / PATCH时,我得到: 仅当我登录时才会发生这种情况,如果我是匿名用户,则可以正确进行PUT / PATCH。 我尝试过,但遇到错误,我将设置包
我在使用StringRedisTemplate时出现了错误,日志信息如图: 看样子是注入失败,可是为什么会这样呢? 我的springboot版本是2.7,redis-data版本2.7. yml文件中的配置信息如下: 好像什么配置都有了,版本应该也不会冲突。。 大佬们求解啊。。
我最近用aspectJ和spring-aop添加了AOP到我现有的spring项目中。目标是实际截获控制器调用以修改它们发回的响应,以便将一些值绑定到此响应,我不想手动添加到每个控制器中,例如最终用户使用的实际令牌的到期日期(无论如何我都无法在控制器中显示它)。实际上,在开始单元测试之前,我一直设法让它工作: 在我的单元测试中,我使用java中的反射特性直接调用我的控制器方法,然后复制通常的过程(
我正在学习Spring Boot 2.0和React的全栈开发。身份验证和授权由JWT管理,除了我必须在刷新浏览器后重新登录之外,应用程序按预期工作。如何在浏览器刷新后维护JWT令牌?