antlr4中的以下规则将不适用于有效输入:
testSimple
: 'name' 'eq' WORD+? .*? NEWLINE
WORD: ~[ \t\f\r\n]+ ;
输入为:
name eq John Tom Allen notAName
错误是:
line 1:8 no viable alternative at input 'John'
我知道使用非贪婪运算符有一些限制,比如后来的“第一次匹配获胜”规则。而且规则特别模棱两可。但它至少应该在一种方式上匹配输入吗?
我正试图用Java语言编写一个命题逻辑程序,以确定公式是否格式良好。显然,ANTLR是一个很好的选择,因为我可以在一个CFG中编写所有的规则。所有这些都很好,而且我的语法工作得很好(它可以检测公式是否正确)。然而,这个程序是针对这门学科的初学者,我想告诉他们在输入公式时哪里出了问题。
如果我输入公式(A -> B,解析器会识别这不是格式良好的,因为它缺少一个结束括号。然而,它所产生的错误至少可以说是平淡无奇的:line 1:5 no viable alternative at input '(A -> B' (这是从vanilla中略作修改,以包括行号iirc)。我
我为ANTLR4实现了一种基本语法,以便从简单的Javascript-esque语言构建JavaScript解释器。
当我运行我的脚本来转换代码(解析/生成/转换溢出)时,我得到了TypeError: ctx.INT is not a function,它来自from拼写器文件。
这是我要编译的脚本
var fs = require('fs');
var antlr4 = require('antlr4');
var buildAst = require('./build-ast');
var mylangTranspiler = require
我认为排序(通过子规则的顺序隐式地给出)在ANTLR4解析器中的优先级要高于替换(明确地说是由x字符给出的),这意味着
a : x | y z ;
在语义上与
a : x | ( y z) ;
在ANTLR4的书中,我找不到一个明确的声明,但这似乎是合理的,尽管有一个规则
expression :
pmqident
|
constant
|
[snip]
|
'(' scalar_subquery ')'
|
unary_operator expression
我正在尝试在一个大的数据框中逐行计算一个二进制字符的结果:
V1 V2 V3 V4 V5
Loss Loss Loss Loss Loss
Loss Loss Win Win Loss
Loss Loss Loss Loss Loss
我需要知道的是每一行的输赢频率。这只是一个简短的例子(大量模拟输出的片段),但是对于第一行,在五次模拟中,我有五次失败,第二行三次失败和两次胜利,等等。
我希望生成一个单独的表,显示每行的赢/输的频率,或者,如果这样做不起作用,添加两个新列:一
我在c++中创建了一个具有antlr和llvm的编译器。我已经创建了两个.g4文件,并在我的CMakeLists.txt中调用antlr来生成lexer和解析器。然后,我用相同的CMakeLists文件编译我的所有文件,并得到以下错误:
Filc/src/generated/FilParser.cpp:803:16: error: invalid use of member function ‘antlrcppfil::FilParser::ExceptionContext* antlrcppfil::FilParser::ExprContext::exception()’ (did you
在使用解析器解析某些命令时,我遇到了一个问题,我使用ANLTR3实现了这个问题。解析器无法解析那些包含语法中声明为lexer规则的“任意单词”的命令。例如,看看下面的语法:
show :
SHOW TABLES '[' projectName? tableName']' -> ^(SHOW TABLES_ ^(PROJECT_NAME projectName)? ^(DATASET_TABLE tableName));
SHOW : S H O W;
如果我试图解析命令'SHOW TABLES sample-proj
我正在用ANTLR4中大量不区分大小写的关键字编写语法。我收集了一些格式的示例文件,尝试测试解析,还有一些使用作为关键字存在于其他地方的相同标记作为标识符。例如,有一个CORE关键字,它在其他地方用作来自用户输入的结构的ID。以下是我语法的一些部分:
fragment A : [aA]; // match either an 'a' or 'A'
fragment B : [bB];
fragment C : [cC];
[...]
CORE: C O R E ;
[...]
IDSTRING: [a-zA-Z_] [a-zA-Z0-9_]*
我在ANTLRWorks 1.4中有以下语法。我正在尝试在文本冒险游戏创建者中实现解析器的想法,其中用户将为其游戏指定各种允许的命令。
grammar test;
parse : cmd EOF;
cmd : putSyn1 gameObject inSyn1 gameObject;
putSyn1 : Put | Place | Drop ;
inSyn1 : In | Into | Within;
gameObject : det obj;
det : The | A | An | ;
我试着做一个小游戏,你必须在不到一秒钟内按下一个特定的键,否则你就会输。我的想法是产生随机字母,启动一个计时器,检查玩家是否及时完成,如果是,然后重复,如果没有,那么输掉游戏。
关于这个问题,我有一个随机字母的代码,但是当我试图获得它的输入时,联合说: ArgumentException:输入键名:k是未知的。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TextCounter : MonoBehaviour
{
// Start i
我正在尝试从ANTLR 4创建的解析树创建AST (我的自定义类层次结构中的抽象语法树)的Java类。
具体来说,我正在研究formula的规则
formula
: formula bin_connective formula
| NOT formula bin_connective formula
| NOT formula
| FORALL LPAREN variable RPAREN formula
| EXISTS LPAREN variable RPAREN formula
| pred_constant LPAREN term (sepa
我想使用vim作为javascript的编辑器,我需要自动补全:)例如:
var context = canvas.getContext("2d");
// ^
// |
// +----- Here I should have list of `canvas` methods after pressing Tab (SuperTab plugin).
var grd = context.createLinearGradient(0, 100, 200, 0);
//
我试图为一些防火墙设备编写配置解析器。我第一次使用ANTLR。
我要解析的通常是以下类型的文本:
config wireless-controller global
set name ''
set location ''
set max-retransmit 3
set data-ethernet-II disable
set link-aggregation disable
set mesh-eth-type 8755
set fiapp-eth-type 5252
set discovery-m
我必须将以下shell文件转换为批处理文件:
\#!/bin/bash
\#
\# Generates and compiles a lexer or parser and runs it (this means
\# that the lexer/parser must contain a main method)
\#
\# Example usage: antlr4-run.sh Lexer.g4
DIR="$(cd `dirname "${BASH_SOURCE[0]}"` && pwd)"
ANTLR_JAR=$DIR/lib/ant
我正在尝试使用Devcenter创建一个用户定义的函数。
下面的例子取自上面的链接。
CREATE OR REPLACE FUNCTION fLog (input double) CALLED ON NULL INPUT RETURNS double LANGUAGE java AS 'return Double.valueOf(Math.log(input.doubleValue()));';
它在cqlsh中工作,但在DevCenter中失败,并显示以下错误。根据我得到响应的速度,我认为DevCenter会执行本地语法检查,并在认为查询错误时中止执行。
我使用的是Cass
最近,我在使用图元文件绘制东西时发现了一个bug。现在,我不确定是我做错了什么,还是在图元文件本身的绘图中有一个bug:
当我在一个图元文件上绘制图像,而这个图元文件是由PlayEnhMetafile自己绘制在另一个图元文件上时,我丢失了图像的最下方或最右边。我猜这与屏幕坐标有关(我运行双屏幕1280*1024,所以运行2560*1024),因为图像开始消失的底部通道大约是500。
下面是一些示例代码,我创建这些代码是为了更具体地向您展示问题。(你可以用下面的代码替换一个新创建的Windows C#项目的Form1.cs,然后在上面放一个按钮)
using System;
using Syst