Add antlr docker image and setup to generate the parser

This commit is contained in:
Sameer Rahmani 2020-11-10 22:12:39 +00:00
parent 67cf700ff6
commit 7f1080964a
3 changed files with 41 additions and 0 deletions

View File

@ -1,5 +1,14 @@
THIS_DIR=$(dir $(realpath $(firstword $(MAKEFILE_LIST))))
.PHONY: build-antlr-image
build-antlr-image:
cd $(PWD)/bootstrap/grammar/ && docker build -t serene-antlr:latest .
.PHONY: gen-parser-go
gen-parser-go:
docker run -it --rm --user $(shell id -u):$(shell id -g) -v $(PWD):/serene serene-antlr:latest -Dlanguage=Go -o /serene/bootstrap/pkg/parser/ /serene/bootstrap/grammar/Serene.g4
.PHONY: lint
lint:
cd $(THIS_DIR)/bootstrap && cargo fmt -- --check

View File

@ -0,0 +1,5 @@
FROM openjdk:16-jdk-alpine3.12
WORKDIR /
RUN wget https://www.antlr.org/download/antlr-4.8-complete.jar
ENTRYPOINT ["java", "-jar", "/antlr-4.8-complete.jar"]

View File

@ -0,0 +1,27 @@
grammar Serene;
/*------------------------------------------------------------------
* PARSER RULES
*------------------------------------------------------------------*/
program : expression* EOF ;
expression: OP SYMBOL (SYMBOL | STRING | NUMBER | expression)* CP;
/*------------------------------------------------------------------
* LEXER RULES
*------------------------------------------------------------------*/
SYMBOL : (LETTER (LETTER | DIGIT)*) ;
OP : '(';
CP : ')';
STRING : '"' (LETTER | DIGIT)+ '"';
NUMBER : (DIGIT)+ ;
WHITESPACE : [ \r\n\t] + -> channel (HIDDEN);
DIGIT : '0'..'9';
LETTER : LOWER | UPPER ;
LOWER : ('a'..'z') ;
UPPER : ('A'..'Z') ;