重用ANTLR中的保留关键字规则

巴哈瓦纳克

我正在使用ANTLR 3.4。我已经定义了一个词法分析器规则,例如

Description:
'description'
 ;

如果我使用此规则,我将无法使用我的语言中的``描述'',因为它现在是关键字。是否可以通过任何方式为非保留关键字编写规则。语法规则看起来像-

Lexer rule

Description
:
'description'
;

Protocol
:
'protocol'
;
Define
:
'define'
;
Equal
:
'='
;




Parser rule


mainrule
:
Define Protocol stringrule descrule? fields* finishrule
;

descrule
:
Description? stringrule?
;

fields
:
type stringrule  Equal? stringrule?

stringrule
:
// rule which accept any string
;

例子:我的语言看起来像这样-

define protocol description 'Protocol for login'
int ip=192.168.0.0;
string description='remote user';
finish protocol;

这里的ip和description是协议的字段,而协议具有description(这是关键字)。但是我不能使用'description'作为字段名,因为它是关键字。

巴特·基尔斯(Bart Kiers)

使stringrule任何关键字与您的词法分析器的标识符规则匹配:

stringrule
 : Description
 | Protocol
 | Define
 | Identifier
 ;

Description
 : 'description'
 ;

Protocol
 : 'protocol'
 ;

Define
 : 'define'
 ;

Identifier
 : ('a'..'z' | 'A'..'Z')+
 ;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

处理Antlr中的关键字冲突

来自分类Dev

处理Antlr中的关键字冲突

来自分类Dev

git中的“ tags”是保留关键字吗?

来自分类Dev

在Javascript中,保留关键字“ short”有什么作用?

来自分类Dev

Java是JavaScript中的保留关键字吗?

来自分类Dev

表名称作为Sqoop中的保留关键字

来自分类Dev

dynamodb 中的保留关键字 - Swift 3

来自分类Dev

ANTLR匹配标识符,但不是保留关键字

来自分类Dev

Drools规则左侧的“ this”等效关键字

来自分类常见问题

_(下划线)是保留关键字

来自分类Dev

对未知的保留关键字使用变量

来自分类Dev

截断文本保留关键字

来自分类Dev

转义保留关键字 Python

来自分类Dev

Dart中的“ with”关键字

来自分类Dev

OCaml中的“ as”关键字

来自分类Dev

Java中的关键字“ of”

来自分类Dev

js中的this关键字

来自分类Dev

如何根据ANTLR4中的关键字跳过输入

来自分类Dev

在Java代码中为“ assert”关键字添加Sonar规则

来自分类Dev

在python函数调用中混合关键字参数和*元组的规则是什么

来自分类Dev

在Java代码中为“ assert”关键字添加Sonar规则

来自分类Dev

ASP.net MVC中URL中的保留关键字,例如CON,PRN,NUL

来自分类Dev

从远程回购中拉出并获取:“解析错误:保留关键字'import'”

来自分类Dev

在Spark SQL / Hive QL中,如何选择作为保留关键字的列

来自分类Dev

使用保留关键字作为Typescript中类/实例的方法

来自分类Dev

如何检查给定的字符串是SQL Server中的保留关键字

来自分类Dev

为什么Java中的关键字没有使用却被保留?

来自分类Dev

在proguard中,保留包/默认访问变量和方法的关键字是什么?

来自分类Dev

DynamoDB中的扫描函数,保留关键字为FilterExpression NodeJS

Related 相关文章

  1. 1

    处理Antlr中的关键字冲突

  2. 2

    处理Antlr中的关键字冲突

  3. 3

    git中的“ tags”是保留关键字吗?

  4. 4

    在Javascript中,保留关键字“ short”有什么作用?

  5. 5

    Java是JavaScript中的保留关键字吗?

  6. 6

    表名称作为Sqoop中的保留关键字

  7. 7

    dynamodb 中的保留关键字 - Swift 3

  8. 8

    ANTLR匹配标识符,但不是保留关键字

  9. 9

    Drools规则左侧的“ this”等效关键字

  10. 10

    _(下划线)是保留关键字

  11. 11

    对未知的保留关键字使用变量

  12. 12

    截断文本保留关键字

  13. 13

    转义保留关键字 Python

  14. 14

    Dart中的“ with”关键字

  15. 15

    OCaml中的“ as”关键字

  16. 16

    Java中的关键字“ of”

  17. 17

    js中的this关键字

  18. 18

    如何根据ANTLR4中的关键字跳过输入

  19. 19

    在Java代码中为“ assert”关键字添加Sonar规则

  20. 20

    在python函数调用中混合关键字参数和*元组的规则是什么

  21. 21

    在Java代码中为“ assert”关键字添加Sonar规则

  22. 22

    ASP.net MVC中URL中的保留关键字,例如CON,PRN,NUL

  23. 23

    从远程回购中拉出并获取:“解析错误:保留关键字'import'”

  24. 24

    在Spark SQL / Hive QL中,如何选择作为保留关键字的列

  25. 25

    使用保留关键字作为Typescript中类/实例的方法

  26. 26

    如何检查给定的字符串是SQL Server中的保留关键字

  27. 27

    为什么Java中的关键字没有使用却被保留?

  28. 28

    在proguard中,保留包/默认访问变量和方法的关键字是什么?

  29. 29

    DynamoDB中的扫描函数,保留关键字为FilterExpression NodeJS

热门标签

归档