⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eval.g

📁 antlr小例子 。
💻 G
字号:
tree grammar Eval;

options {
	language=CSharp;
    tokenVocab=Expr;
    ASTLabelType=CommonTree;
}

@header {
using System.Collections;
}

@members {
/** Map variable name to Integer object holding value */
public Hashtable memory = new Hashtable();
}

prog:   stat+ ;

stat:   expr { Console.WriteLine($expr.value); }
    |   ^('=' ID expr) { memory[$ID.text] = $expr.value; }
    ;

expr returns [int value]
    :   ^('+' a=expr b=expr)  { $value = a+b; }
    |   ^('-' a=expr b=expr)  { $value = a-b; }   
    |   ^('*' a=expr b=expr)  { $value = a*b; }
    |   ID 
        {
	        object obj = memory[$ID.text];
	        if (obj != null){
	        	$value = (int)obj;
			} else {
	        	Console.WriteLine("undefined variable " + $ID.text);
	        }
        }
    |   integer=INT                   { $value = Int32.Parse($integer.text); /* fix for 3.0b5 bug (will be fixed in next version so $INT.text works) */ }
    ;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -