Lexical analysis 在Gold Parser Builder中定义字符串/输入的长度
我是一个使用Gold解析器引擎的新手,正在寻找一种方法来限制已定义的Lexical analysis 在Gold Parser Builder中定义字符串/输入的长度,lexical-analysis,gold-parser,Lexical Analysis,Gold Parser,我是一个使用Gold解析器引擎的新手,正在寻找一种方法来限制已定义的字符串的长度,但我没有找到任何方法来做到这一点。请帮我做那件事。这是我的密码 ! Welcome to GOLD Parser Builder "Case Sensitive"='false' "Start Symbol" =<start> {String Char}={Printable} <start>::=<Value> !<Value>::
字符串的长度,但我没有找到任何方法来做到这一点。请帮我做那件事。这是我的密码
! Welcome to GOLD Parser Builder
"Case Sensitive"='false'
"Start Symbol" =<start>
{String Char}={Printable}
<start>::=<Value>
!<Value>::=<>|a<Value>|b<Value>
<Value>::=<type>name<equal>number<symbol>|<type>name<symbol>
<type>::=int|float|char|double|boolean|String
name={Letter}{alphanumeric}+
<symbol>::=';'
<equal>::='='
number={Digit}+[.]{Digit}+|{Digit}+|{Letter}
!欢迎来到黄金解析器生成器
“区分大小写”='false'
“开始符号”=
{String Char}={Printable}
::=
!::=|a | b
:=名称编号|名称
::=int | float | char | double | boolean | String
名称={字母}{字母数字}+
::=';'
::='='
数字={Digit}+[.]{Digit}+{Digit}+{Letter}
我能解释一下字符串的最大限制吗。谢谢听起来好像解析器不是设计成用正则表达式轻松处理词素大小的。因此,您应该检查从语法生成的程序框架中的字符串大小
为了说明这一点,我在官方网站上尝试:
"Name" = 'String Terminal Example'
"Author" = 'Devin Cook'
"About" = 'This is a simple example which defines a basic string'
"Start Symbol" = <Value>
! The following defines a set of characters for the string. It contains
! all printable characters with the exceptionof the double-quotes used
! for delimiters. The {Printable} set does not contain newlines.
{String Ch} = {Printable} - ["]
! This statement defines the string symbol
String = '"' {String Ch}* '"'
<Value> ::= String
根据,可以从标记中检索文本:TerminalToken.text
。那么,为什么不按以下步骤进行:
case (int)SymbolConstants.SYMBOL_STRING :
// Check size (MAX_LENGTH could be a constant you defined)
if (token.Text.Length > MAX_LENGTH)
{
// handle error here
throw new SymbolException("String too long");
}
return token.Text;
C#部件是否会生成gold解析器所需的内容?因为我不是一名C#开发人员,所以只需要澄清一下。我在GoldParser中寻找答案,但在C#中找到了答案。我将尝试在Java中实现这一点,因为我使用C#非常简单。好的。所以现在,不可能使用GOLD解析器引擎限制大小?是的。我说的是元语言。我应该使用JAVA或C语言的引擎来实现我想要的吗?我已经阅读了文档,但没有发现任何与我的问题相关的东西
case (int)SymbolConstants.SYMBOL_STRING :
// Check size (MAX_LENGTH could be a constant you defined)
if (token.Text.Length > MAX_LENGTH)
{
// handle error here
throw new SymbolException("String too long");
}
return token.Text;