第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何訪問 antlr golang 目標中的語法組件

如何訪問 antlr golang 目標中的語法組件

Go
守著星空守著你 2022-07-11 17:11:24
訪問通過語法規(guī)則傳遞的運算符值時出現(xiàn)編譯錯誤。例如,我有以下語法文件:grammar Expr;@parser::header {import (    "os")}@parser::members {func eval(left int, op antlr.Token, right int) int {    if   (op.GetText() == "*") {        return left * right    } else if (op.GetText() == "+") {        return left + right    } else if (op.GetText() == "-") {        return left - right    } else {        return 0    }}}stat:   e NEWLINE    |   NEWLINE                       ;e returns [int v]    : a=e op=('+'|'-') b=e  {                $v = eval($a.v, $op, $b.v)                fmt.Fprintf(os.Stdout, "got args=%d %d\n", $a.v, $b.v)                }    | INT                   {                $v = $INT.int                fmt.Fprintf(os.Stdout, "got number=%d\n", $v)                }        ; MUL : '*' ;DIV : '/' ;ADD : '+' ;SUB : '-' ;ID  :   [a-zA-Z]+ ;      // match identifiersINT :   [0-9]+ ;         // match integersNEWLINE:'\r'? '\n' ;     // return newlines to parser (is end-statement signal)WS  :   [ \t]+ -> skip ; // toss out whitespace這是測試代碼:package mainimport (    "os"    "./parser"    "github.com/antlr/antlr4/runtime/Go/antlr")func calc(inputfile string) {        input, _ := antlr.NewFileStream(inputfile)// Setup the input    lexer := parser.NewExprLexer(input)// Create the Lexer    stream := antlr.NewCommonTokenStream(lexer, antlr.TokenDefaultChannel)    p := parser.NewExprParser(stream)// Create the Parser        p.Stat()}func main() {    calc(os.Args[1])}這些是我運行的命令:java org.antlr.v4.Tool -Dlanguage=Go -o parser -no-listener Expr.g4go build expr_t.go以上2個程序正常工作。但是,如果我將 eval 函數(shù)的比較更改為以下內(nèi)容,則會出現(xiàn)編譯錯誤(類型不匹配):if   (op.tokenType == ExprParserMUL) {    return left * right如何獲取 op 的值以與 ExprParseMUL 進行比較?
查看完整描述

1 回答

?
狐的傳說

TA貢獻1804條經(jīng)驗 獲得超3個贊

if (op.tokenType == ExprParserMUL) {

    return left * right

如何獲取 op 的值以與 ExprParseMUL 進行比較?


沒有tokenType場。使用GetTokenType().


參見:https ://github.com/antlr/antlr4/blob/master/runtime/Go/antlr/token.go


查看完整回答
反對 回復 2022-07-11
  • 1 回答
  • 0 關(guān)注
  • 120 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號