小编alm*_*ing的帖子

ANTLR语法在Visual Studio中突出显示DSL

我有一个定义DSL(特定于域的语言)的ANTLR语法.这个语法相对简单.它正在解析语言并输出C代码以创建一个非常基本的翻译器.

这种语言用于C#应用程序(键入某种控件,无论是RichTextBox还是自定义控件),一种要求是为此语言提供语法高亮显示.我已经浏览了互联网,希望能找到关于如何实现这一目标的某种信息,或者找到一种工具来让自己变得更容易.

在没有找到太多信息之后,我最好的假设是我需要使用ANTLR生成的词法分析器来查看标记并相应地对它们进行着色.这是正确的操作路径,还是有其他方法/工具为自定义域特定语言提供语法突出显示?如果这是正确的方法,我该如何识别特定的令牌?

如果我遗漏了任何重要信息,请询问!谢谢!

c# dsl antlr syntax-highlighting visual-studio

7
推荐指数
1
解决办法
1553
查看次数

ANTLR语法如果声明

我一直致力于学习ANTLR以创建特定于域的语言.其中一个要求是将此DSL转换为C.我已经能够获得识别DSL的基本语法,但是我将此问题转换为C.主要是,我的问题来自尝试将DSL if语句转换为一个C if语句.我已经尝试在语法中使用print语句,但没有用(我正在使用C#).

这是我一直在测试的语法:

**ifTest.g**
grammar ifTest;

options
{
backtrack=true;
output=AST;
language=CSharp2;
}

/*************************
PARSER RULES
*************************/
prog    :   lambda
|   statements EOF;

lambda  :   /* Empty */;

statements
:   statement+;

statement
:   logical
|   assignment
|   NEWLINE;


logical :   IF a=logical_Expr THEN b=statements 
        {
            System.Console.Write("\tif (" + $a.text + ")\n\t{\n\t" + "\t" +     $b.text + "\n\n\t}");   
        }
        ( ELSE c=statements      
       {    
        System.Console.Write("\n\telse {\n\t\t\t" + $c.text + "\n\t}"); 
    } )?
    ENDIF   
    {
        System.Console.Write("\n}");
    }
;

logical_Expr
    :   expr    
    ;

expr …
Run Code Online (Sandbox Code Playgroud)

antlr

5
推荐指数
1
解决办法
5388
查看次数

标签 统计

antlr ×2

c# ×1

dsl ×1

syntax-highlighting ×1

visual-studio ×1