You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
$ alias antlr4='java -jar /usr/local/lib/antlr-4.9.2-complete.jar'
$ alias grun='java org.antlr.v4.gui.TestRig'
guardar con ctrl-x
actualizar el shell ( actualizar el archivo bashrc )
$ source ~/.bashrc
conprobar que antlr esta bien instalado
$ antlr4
output
ANTLR Parser Generator Version 4.9.2 . . .
instalar el runtime package en GOPATH ( home/go )
en una terminal ingresar a: cd home/go
$ go get github.com/antlr/antlr4/runtime/Go/antlr
crear una carpeta "calc" en cd home/go/src
$ cd home/go/src
$ mkdir Calc
crear un archivo Calc.g4 y main.go dentro de la carpeta Calc
$ cd Calc
$ touch Calc.g4
$ touch main.go
cargar el archivo de la gramatica Calc.g4
// nombre de la gramatica igual al nombre del archivogrammarCalc;
//tokens
MUL: '*';
ADD: '+';
LB: '(';
RB: ')';
DIGIT: [0-9]+;
WS: [\r\n\t]+->skip;
// los nombres de los no terminales en minusculas//rules
l: eEOF;
e: e'+'t # Sum|t # PasaT
;
t: t'*'f # Mul|f # PasaF
;
f: '('e')' # PasaE|DIGIT # Digit
;
compilar el archivo gramatica ( generar la carpeta parser )
$ antlr4 -Dlanguage=Go -o parser Calc.g4
eliminar la carpeta parser si existe en Goroot
$ sudo rm -rf /usr/local/go/src/parser
copiar la carpeta generada(parser) a Goroot
$ sudo mv parser /usr/local/go/src
cargar el archivo de la main.go
package main
import (
"fmt""parser"// copy parser folder to goroot"github.com/antlr/antlr4/runtime/Go/antlr"
)
typecalcListenerstruct{
*parser.BaseCalcListener
}
funcmain() {
fmt.Println("Parser: ")
is:=antlr.NewInputStream("1+2*3")
lexer:=parser.NewCalcLexer(is)
stream:=antlr.NewCommonTokenStream(lexer,antlr.TokenDefaultChannel)
p:=parser.NewCalcParser(stream)
antlr.ParseTreeWalkerDefault.Walk(&calcListener{},p.L())
fmt.Println("________termino todo correctamente________")
}
inicializar el proyecto "carpeta_proyecto 'Calc' "
$ go mod init Calc
$ go mod tidy
correr el main.go
$ go run main.go
arreglando problemas
solucion1: el problema de la carpeta "parser"
se puede arreglar copiando la carpeta parser a goroot
es una forma facil
solucion2: forma mas tecnica ( forma ordenada )
dentro de la carpeta parser en una terminal correr