From 7311e16a2217203a47889d86df3e7f53b87f6394 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20D=C3=A9camps?= Date: Mon, 15 Oct 2018 21:54:59 +0200 Subject: [PATCH] Add Bazel rule for java_cup (#6) * Add `//cup:cup.bzl` * Import `//third_party/cup` from java-cup-bin-11b-20160615.tar.gz at http://www2.cs.tum.edu/projects/cup/ * Add example `//java/jflex/examples/calculator` (and related javatests) * Add `//third_party/com/google/truth` to make tests more elegant * Update documentation --- README.md | 70 ++++++-------- WORKSPACE | 3 + cup/BUILD | 8 ++ cup/README.md | 28 ++++++ cup/cup.bzl | 30 ++++++ java/jflex/examples/calculator/BUILD | 29 ++++++ .../calculator/CalculatorParserException.java | 11 +++ java/jflex/examples/calculator/calculator.cup | 75 +++++++++++++++ .../jflex/examples/calculator/calculator.flex | 88 +++++++++++++++++ javatests/jflex/examples/calculator/BUILD | 19 ++++ .../calculator/CalculatorLexerTest.java | 91 ++++++++++++++++++ .../calculator/CalculatorParserTest.java | 64 ++++++++++++ .../examples/helloworld/HelloWorldTest.java | 6 +- jflex/README.md | 25 +++++ jflex/deps.bzl | 7 -- third_party/BUILD | 0 third_party/com/google/truth/BUILD | 16 +++ third_party/cup/BUILD | 18 ++++ third_party/cup/LICENSE.md | 20 ++++ third_party/cup/java-cup-11b.jar | Bin 0 -> 109747 bytes third_party/third_party_deps.bzl | 13 +++ 21 files changed, 575 insertions(+), 46 deletions(-) create mode 100644 cup/BUILD create mode 100644 cup/README.md create mode 100644 cup/cup.bzl create mode 100644 java/jflex/examples/calculator/BUILD create mode 100644 java/jflex/examples/calculator/CalculatorParserException.java create mode 100644 java/jflex/examples/calculator/calculator.cup create mode 100644 java/jflex/examples/calculator/calculator.flex create mode 100644 javatests/jflex/examples/calculator/BUILD create mode 100644 javatests/jflex/examples/calculator/CalculatorLexerTest.java create mode 100644 javatests/jflex/examples/calculator/CalculatorParserTest.java create mode 100644 jflex/README.md create mode 100644 third_party/BUILD create mode 100644 third_party/com/google/truth/BUILD create mode 100644 third_party/cup/BUILD create mode 100644 third_party/cup/LICENSE.md create mode 100644 third_party/cup/java-cup-11b.jar create mode 100644 third_party/third_party_deps.bzl diff --git a/README.md b/README.md index 1f0ed5c..548338d 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,23 @@ -# Bazel rules for JFlex +# Bazel rules for JFlex & Cup -Rules to generate java source files from a lexer specification, by [JFlex][gh-jflex], -for projects using the [Bazel build system][bazel]. +This repository offers two rules for projects using the [Bazel build system][bazel]: -Master: [![Build Status](https://api.cirrus-ci.com/github/jflex-de/bazel_rules.svg)](https://cirrus-ci.com/github/jflex-de/bazel_rules) +- Rule to generate java source files from a lexer specification, with [JFlex][gh-jflex] + +- Rule to generate java source files from a parser specification, with [CUP][cup] + +## Project health + +Status of the **master** branch: + +Build status + ## Disclaimer This is not an officially supported Google product. -## Preparation -### Update your workspace +## Prepare your Bazel workspace Load the **bazel_rules** in your [`WORKSPACE` file][be_workspace]: @@ -24,61 +31,48 @@ Load the **bazel_rules** in your [`WORKSPACE` file][be_workspace]: load("@jflex_rules//jflex:deps.bzl", "jflex_deps") + # If you want to use JFlex. jflex_deps() -## Usage +## Usage in BUILD files load("@jflex_rules//jflex:jflex.bzl", "jflex") + load("@jflex_rules//cup:cup.bzl", "cup") jflex( name = "", # Choose a rule name - srcs = [], # Add input lex specifications - outputs = [], # List expected generated files + srcs = [], # A list of flex specifications + outputs = [], # List of expected generated files + ) + + cup( + name = "", # Choose a rule name + src = "", # Grammar specification ) -Then, this rule can be used as one of the `srcs` of another rules, such as a `java_library`. - -### Attributes - -* **name** (Name; required) - Unique name for this target. -* **srcs** (List of labels; required) - List of flex specifications. -* **outputs** (list of labels; required) - List of the generated java files. -* **skeleton** (Label; optional) - Skeleton use by the JFlex Emitter. **Only use this option if you know what you are doing.** - +As usual, these rules can be used as one of the `srcs` of another rules, such as a `java_library`. -### Example +For more details, see [cup](cup) and [jflex](jflex). -The example **//java/jflex/examples/helloworld** generates a lexer from `helloworld.flex` with: - - jflex( - name = "gen_hello_lexer", - srcs = ["helloworld.flex"], - outputs = ["HelloWorld.java"], - ) - -See [//java/jflex/examples/helloworld](/java/jflex/examples/helloworld) for more information. - ## Directory layout ``` ├── assets → assets for the web site +├── cup → contains the `cup.bzl` Skylark extension ├── java → main Java source code │ └── jflex │ └── examples → examples -├── javatests → tests -├── jflex → contains the `jflex.bzl` +│ ├── calculator → integration of JFlex and CUP +│ └── helloworld → simple lexer +├── javatests → tests of the examples +├── jflex → contains the `jflex.bzl` Skylark extension └── third_party → Aliases for third-party libraries - └── com - └── google - └── guava + ``` [bazel]: http://bazel.build/ [gh-jflex]: https://github.com/jflex-de/jflex +[cup]: http://www2.cs.tum.edu/projects/cup/ [be_maven_jar]: https://docs.bazel.build/versions/master/be/workspace.html#maven_jar [be_workspace]: https://docs.bazel.build/versions/master/tutorial/java.html#set-up-the-workspace diff --git a/WORKSPACE b/WORKSPACE index 0ba10ba..fa1b745 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -5,5 +5,8 @@ # See https://docs.bazel.build/versions/master/build-ref.html#workspace load("//jflex:deps.bzl", "jflex_deps") +load("//third_party:third_party_deps.bzl", "third_party_deps") jflex_deps() + +third_party_deps() diff --git a/cup/BUILD b/cup/BUILD new file mode 100644 index 0000000..d9835cb --- /dev/null +++ b/cup/BUILD @@ -0,0 +1,8 @@ +# Copyright 2018 Google LLC. +# SPDX-License-Identifier: Apache-2.0 + +package(default_visibility = ["//visibility:public"]) + +# This rule is license under Apache 2 +licenses(["notice"]) # Apache 2 + diff --git a/cup/README.md b/cup/README.md new file mode 100644 index 0000000..17abd5b --- /dev/null +++ b/cup/README.md @@ -0,0 +1,28 @@ +# Skylark rule for Java CUP + + +## Attributes + +* **name** (Name; required) + Unique name for this target. +* **src** (Label; required) + The CUP specification. +* **parser** (String; optional) + The class name of the parser to generate. Defaults to `parser`, hence generating `parser.java`. + Note that the lower case is used to behave like the CUP program. +* **symbols** (String; optional) + The class name of the symbols holder. Defaults to `sym`, hence generating `sym.java`. + Note that the lower case is used to behave like the CUP program. + +## Example + +The example **//java/jflex/examples/helloworld** generates a lexer from `helloworld.flex` with: + + cup( + name = "gen_parser", + src = "calculator.cup", + parser = "CalculatorParser", + symbols = "Calc", + ) + +See [//java/jflex/examples/helloworld](../java/jflex/examples/calculator). diff --git a/cup/cup.bzl b/cup/cup.bzl new file mode 100644 index 0000000..697e7e4 --- /dev/null +++ b/cup/cup.bzl @@ -0,0 +1,30 @@ +"""Bazel rules for cup. """ + +# CUP can only read from stdin, which Skylark rules don't support. Use a genrule for now. +def cup(name, src, parser = "parser", symbols = "sym", interface = False): + """Generate a parser with CUP. + + Args: + name: name of the rule. + src: the cup specifications. + parser: name of the generated parser class. + symbols: name of the generated symbols class. + interface: whether to generate an interface. + """ + opts = [ + "-parser", + parser, + "-symbols", + symbols, + ] + if interface: + opts = opts + ["-interface"] + options = " ".join(opts) + cmd = ("$(location //third_party/cup:cup_bin) -destdir $(@D) " + options + " < $<") + native.genrule( + name = name, + srcs = [src], + tools = ["//third_party/cup:cup_bin"], + outs = [parser + ".java", symbols + ".java"], + cmd = cmd, + ) diff --git a/java/jflex/examples/calculator/BUILD b/java/jflex/examples/calculator/BUILD new file mode 100644 index 0000000..d06db4c --- /dev/null +++ b/java/jflex/examples/calculator/BUILD @@ -0,0 +1,29 @@ +# Copyright 2018 Google LLC. +# SPDX-License-Identifier: Apache-2.0 + +package(default_visibility = ["//visibility:public"]) + +load("//jflex:jflex.bzl", "jflex") +load("//cup:cup.bzl", "cup") + +java_library( + name = "calculator", + srcs = ["CalculatorParserException.java",":gen_parser", ":gen_lexer"], + deps =[ + "//third_party/cup", # the runtime would be sufficient + ] +) + +cup( + name = "gen_parser", + src = "calculator.cup", + parser = "CalculatorParser", + symbols = "Calc", +) + +jflex( + name = "gen_lexer", + srcs = ["calculator.flex"], + outputs = ["CalculatorLexer.java"], + +) diff --git a/java/jflex/examples/calculator/CalculatorParserException.java b/java/jflex/examples/calculator/CalculatorParserException.java new file mode 100644 index 0000000..3189474 --- /dev/null +++ b/java/jflex/examples/calculator/CalculatorParserException.java @@ -0,0 +1,11 @@ +// Copyright 2018 Google LLC. +// SPDX-License-Identifier: Apache-2.0 + +package jflex.examples.calculator; + +/** An exception from the lexer/parser. */ +public class CalculatorParserException extends RuntimeException { + CalculatorParserException(String message) { + super(message); + } +} diff --git a/java/jflex/examples/calculator/calculator.cup b/java/jflex/examples/calculator/calculator.cup new file mode 100644 index 0000000..ebc954e --- /dev/null +++ b/java/jflex/examples/calculator/calculator.cup @@ -0,0 +1,75 @@ +package jflex.examples.calculator; + +import java_cup.runtime.Symbol; +import java.util.Vector; +/* + * Copyright (C) 2018 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +/** + * Parser for a simple calculator. + * + *

The grammar defines a simple arihmetic expressions that supports the addition, + * the multiplication, and parentheses. + * + * @author Régis Décamps + */ + +parser code {: +:} + +// Terminals: () * + +terminal LPAR, RPAR; +terminal MULTIPLY; +terminal PLUS; +// A number is also a terminal, bit it's of type Integer. +terminal Integer NUMBER; + +non terminal Integer expr; +non terminal Integer multiply_expr; +non terminal Integer term; + +precedence left PLUS; +precedence left MULTIPLY; + +// This is where the grammar starts. + +// An expression is a sum of priority_expr. Because the parser needs to produce priority_expr in +// in order to assemble expr, this effectively makes priority_expr of higher priority than +// than expr in the computation of the result. +// We also implement the actual computation done by the calculator. RESULT is the label that is +// assigned automatically to the rhs, in this case 'expr' because 'expr ::= ...'. +// Since the priority_expr is an object of type Integer, we can call intValue() to retrieve its +// value. +expr ::= + expr:a PLUS multiply_expr:b + {: RESULT = a.intValue() + b.intValue(); :} + | multiply_expr:e + {: RESULT = e; :} + ; +multiply_expr ::= + multiply_expr:a MULTIPLY term:b + {: RESULT = a.intValue() * b.intValue(); :} + | term:t + {: RESULT = t; :} + ; +// The last term closes the grammar. It's a number, or another expression in parentheses. +// Note that local identifiers don't need to be a single letter. We use "nb" for the terminal +// number. +term ::= + LPAR expr:e RPAR {: RESULT = e; :} + | NUMBER:nb {: RESULT = nb; :} + ; diff --git a/java/jflex/examples/calculator/calculator.flex b/java/jflex/examples/calculator/calculator.flex new file mode 100644 index 0000000..be52367 --- /dev/null +++ b/java/jflex/examples/calculator/calculator.flex @@ -0,0 +1,88 @@ +/* + * Copyright (C) 2018 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jflex.examples.calculator; + +import java_cup.runtime.Symbol; + +/** + * A simple lexer/parser for basic arithmetic expressions. + * + * @author Régis Décamps + */ + +%% + + +%public +%class CalculatorLexer +// Use CUP compatibility mode to interface with a CUP parser. +%cup + +%unicode + +%{ + /** Creates a new {@link Symbol} of the given type. */ + private Symbol symbol(int type) { + return new Symbol(type, yyline, yycolumn); + } + + /** Creates a new {@link Symbol} of the given type and value. */ + private Symbol symbol(int type, Object value) { + return new Symbol(type, yyline, yycolumn, value); + } +%} + +// A (integer) number is a sequence of digits. +Number = [0-9]+ + +// A line terminator is a \r (carriage return), \n (line feed), or \r\n. */ +LineTerminator = \r|\n|\r\n + +/* White space is a line terminator, space, tab, or line feed. */ +WhiteSpace = {LineTerminator} | [ \t\f] + + +%% + +// This section contains regular expressions and actions, i.e. Java code, that will be executed when +// the scanner matches the associated regular expression. + + +// YYINITIAL is the initial state at which the lexer begins scanning. + { + + /* Create a new parser symbol for the lexem. */ + "+" { return symbol(Calc.PLUS); } + "*" { return symbol(Calc.MULTIPLY); } + "(" { return symbol(Calc.LPAR); } + ")" { return symbol(Calc.RPAR); } + + // If an integer is found, return the token NUMBER that represents an integer and the value of + // the integer that is held in the string yytext + {Number} { return symbol(Calc.NUMBER, Integer.parseInt(yytext())); } + + /* Don't do anything if whitespace is found */ + {WhiteSpace} { /* do nothing with space */ } +} + +// We have changed the default symbol in the bazel `cup()` rule from "sym" to "Calc", so we need to +// change how JFlex handles the end of file. +// See http://jflex.de/manual.html#custom-symbol-interface +<> { return symbol(Calc.EOF); } + +/* Catch-all the rest, i.e. unknow character. */ +[^] { throw new CalculatorParserException("Illegal character <" + yytext() + ">"); } diff --git a/javatests/jflex/examples/calculator/BUILD b/javatests/jflex/examples/calculator/BUILD new file mode 100644 index 0000000..f1820a9 --- /dev/null +++ b/javatests/jflex/examples/calculator/BUILD @@ -0,0 +1,19 @@ +java_test( + name = "CalculatorLexerTest", + srcs = ["CalculatorLexerTest.java"], + deps = [ + "//java/jflex/examples/calculator", + "//third_party/cup", + "//third_party/com/google/truth", + ], +) + +java_test( + name = "CalculatorParserTest", + srcs = ["CalculatorParserTest.java"], + deps = [ + "//java/jflex/examples/calculator", + "//third_party/cup", + "//third_party/com/google/truth", + ], +) diff --git a/javatests/jflex/examples/calculator/CalculatorLexerTest.java b/javatests/jflex/examples/calculator/CalculatorLexerTest.java new file mode 100644 index 0000000..2660388 --- /dev/null +++ b/javatests/jflex/examples/calculator/CalculatorLexerTest.java @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2018 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jflex.examples.calculator; + +import static com.google.common.truth.Truth.assertThat; +import static com.google.common.truth.Truth.assertWithMessage; +import static org.junit.Assert.fail; + +import java.io.IOException; +import java.io.Reader; +import java.io.StringReader; +import java_cup.runtime.Symbol; +import org.junit.After; +import org.junit.Test; + +/** + * Test for the generated {@link CalculatorLexer}. + * + * @author Régis Décamps + */ +public class CalculatorLexerTest { + + private CalculatorLexer lexer; + + @After + public void destroyLexer() { + lexer = null; + } + + @Test + public void test() throws IOException { + lexer = createLexer("1 + 2 * (3)"); + assertThatNextTokenIsEqualTo(Calc.NUMBER, 1); + assertThatNextTokenIsEqualTo(Calc.PLUS); + assertThatNextTokenIsEqualTo(Calc.NUMBER, 2); + assertThatNextTokenIsEqualTo(Calc.MULTIPLY); + assertThatNextTokenIsEqualTo(Calc.LPAR); + assertThatNextTokenIsEqualTo(Calc.NUMBER, 3); + assertThatNextTokenIsEqualTo(Calc.RPAR); + assertThatNextTokenIsEqualTo(Calc.EOF); + } + + @Test + public void test_emptyInput() throws IOException { + lexer = createLexer(""); + assertThatNextTokenIsEqualTo(Calc.EOF); + } + + /** Tests that the action {@code [^]} from the grammar handles unknown tokens. */ + @Test + public void test_illegalInput() throws IOException { + lexer = createLexer("aze"); + try { + lexer.next_token(); + fail("The lexer should throw a " + CalculatorParserException.class); + } catch (CalculatorParserException e) { + assertThat(e).hasMessageThat().isEqualTo("Illegal character "); + } + } + + private void assertThatNextTokenIsEqualTo(int symbol, Object value) throws IOException { + Symbol token = lexer.next_token(); + assertWithMessage("The symbol should be of type " + symbol).that(token.sym).isEqualTo(symbol); + assertWithMessage(String.format("The symbol should have value %s", value)) + .that(token.value) + .isEqualTo(value); + } + + private void assertThatNextTokenIsEqualTo(int symbol) throws IOException { + Symbol token = lexer.next_token(); + assertWithMessage("The symbol should be of type " + symbol).that(token.sym).isEqualTo(symbol); + } + + private CalculatorLexer createLexer(String input) { + Reader in = new StringReader(input); + return new CalculatorLexer(in); + } +} diff --git a/javatests/jflex/examples/calculator/CalculatorParserTest.java b/javatests/jflex/examples/calculator/CalculatorParserTest.java new file mode 100644 index 0000000..110b4f6 --- /dev/null +++ b/javatests/jflex/examples/calculator/CalculatorParserTest.java @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2018 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jflex.examples.calculator; + +import static com.google.common.truth.Truth.assertThat; +import static org.junit.Assert.fail; + +import java.io.StringReader; +import java_cup.runtime.Symbol; +import org.junit.Test; + +/** + * Test for {@link CalculatorParser}. + * + * @author Régis Décamps + */ +public class CalculatorParserTest { + @Test + public void test() throws Exception { + CalculatorParser parser = createParser("1 + 2 + (3 + 4) * 5 + 6"); + Symbol symbol = parser.parse(); + assertThat(symbol.value).isEqualTo(1 + 2 + (3 + 4) * 5 + 6); + } + + /** The lexer is happy producing tokens for this input, but this is invalid for the grammar. */ + @Test + public void test_invalidSyntax() throws Exception { + final String input = "1 + (3"; + CalculatorLexer lexer = createLexer(input); + lexer.next_token(); // 1 + lexer.next_token(); // + + lexer.next_token(); // ( + lexer.next_token(); // 3 + lexer.next_token(); // EOF + CalculatorParser parser = createParser(input); + try { + parser.parse(); + fail("The parser should not accept input: " + input); + } catch (Exception expected) { + // The default report_fatal_error throws a generic Exception. + } + } + + private CalculatorLexer createLexer(String input) { + return new CalculatorLexer(new StringReader(input)); + } + + private CalculatorParser createParser(String input) { + return new CalculatorParser(createLexer(input)); + } +} diff --git a/javatests/jflex/examples/helloworld/HelloWorldTest.java b/javatests/jflex/examples/helloworld/HelloWorldTest.java index 5038c27..ce8402c 100644 --- a/javatests/jflex/examples/helloworld/HelloWorldTest.java +++ b/javatests/jflex/examples/helloworld/HelloWorldTest.java @@ -27,7 +27,11 @@ import org.junit.Before; import org.junit.Test; -/** Test for {@link HelloWorld} lexer. */ +/** + * Test for {@link HelloWorld} lexer. + * + * @author Régis Décamps + */ public class HelloWorldTest { private OutputStream out; diff --git a/jflex/README.md b/jflex/README.md new file mode 100644 index 0000000..12dc720 --- /dev/null +++ b/jflex/README.md @@ -0,0 +1,25 @@ +# Skylark rule for JFlex + +## Attributes + +* **name** (Name; required) + Unique name for this target. +* **srcs** (List of labels; required) + List of flex specifications. +* **outputs** (list of labels; required) + List of the generated java files. +* **skeleton** (Label; optional) + Skeleton use by the JFlex Emitter. **Only use this option if you know what you are doing.** + + +## Example + +The example **//java/jflex/examples/helloworld** generates a lexer from `helloworld.flex` with: + + jflex( + name = "gen_hello_lexer", + srcs = ["helloworld.flex"], + outputs = ["HelloWorld.java"], + ) + +See [//java/jflex/examples/helloworld](../java/jflex/examples/helloworld). diff --git a/jflex/deps.bzl b/jflex/deps.bzl index 1c93db9..3b1f628 100644 --- a/jflex/deps.bzl +++ b/jflex/deps.bzl @@ -15,10 +15,3 @@ def jflex_deps(): artifact = "de.jflex:cup_runtime:11b", repository = "https://jcenter.bintray.com/", ) - - # Deps used by examples. - native.maven_jar( - name = "com_google_guava_guava_26_0_jre", - artifact = "com.google.guava:guava:26.0-jre", - repository = "http://jcenter.bintray.com/", - ) diff --git a/third_party/BUILD b/third_party/BUILD new file mode 100644 index 0000000..e69de29 diff --git a/third_party/com/google/truth/BUILD b/third_party/com/google/truth/BUILD new file mode 100644 index 0000000..781a8d5 --- /dev/null +++ b/third_party/com/google/truth/BUILD @@ -0,0 +1,16 @@ +# Google truth +# Fluent assertions for Java tests +# http://google.github.io/truth/ + +licenses(["notice"]) # Apache License 2.0 + +java_library( + name = "truth", + visibility = ["//visibility:public"], + exports = [ + "@com_google_truth_truth//jar", + # TODO(regisd) This should be a runtime_deps + # But in that case Optional is not found + "//third_party/com/google/guava", + ], +) diff --git a/third_party/cup/BUILD b/third_party/cup/BUILD new file mode 100644 index 0000000..b347fd3 --- /dev/null +++ b/third_party/cup/BUILD @@ -0,0 +1,18 @@ +# Java CUP +# http://www2.cs.tum.edu/projekte/cup/ + +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) # CUP License + +# Version 11b-29160615 +java_import( + name = "cup", + jars = ["java-cup-11b.jar"], +) + +java_binary( + name = "cup_bin", + main_class = "java_cup.Main", + runtime_deps = [":cup"], +) diff --git a/third_party/cup/LICENSE.md b/third_party/cup/LICENSE.md new file mode 100644 index 0000000..a2b6830 --- /dev/null +++ b/third_party/cup/LICENSE.md @@ -0,0 +1,20 @@ +# CUP Parser Generator Copyright Notice, License, and Disclaimer +Copyright 1996-2015 by Scott Hudson, Frank Flannery, C. Scott Ananian, Michael Petter +Permission to use, copy, modify, and distribute this software and its documentation for any purpose +and without fee is hereby granted, provided that the above copyright notice appear in all copies and +that both the copyright notice and this permission notice and warranty disclaimer appear in +supporting documentation, and that the names of the authors or their employers not be used in +advertising or publicity pertaining to distribution of the software without specific, written prior +permission. + +The authors and their employers disclaim all warranties with regard to this software, including all +implied warranties of merchantability and fitness. In no event shall the authors or their employers +be liable for any special, indirect or consequential damages or any damages whatsoever resulting +from loss of use, data or profits, whether in an action of contract, negligence or other tortious +action, arising out of or in connection with the use or performance of this software. + +This is an open source license. It is also GPL-Compatible (see entry for "Standard ML of New +Jersey"). The portions of CUP output which are hard-coded into the CUP source code are (naturally) +covered by this same license, as is the CUP runtime code linked with the generated parser. +Java is a trademark of Sun Microsystems, Inc. References to the Java programming language in +relation to JLex are not meant to imply that Sun endorses this product. diff --git a/third_party/cup/java-cup-11b.jar b/third_party/cup/java-cup-11b.jar new file mode 100644 index 0000000000000000000000000000000000000000..10b9b44dd4b2055bf4e03235192f61369e0d997b GIT binary patch literal 109747 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�((O$_*@kTv*g83BO?9wjU!G0o%&xl!TR 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 Bq4fX& literal 0 HcmV?d00001 diff --git a/third_party/third_party_deps.bzl b/third_party/third_party_deps.bzl new file mode 100644 index 0000000..fb37b34 --- /dev/null +++ b/third_party/third_party_deps.bzl @@ -0,0 +1,13 @@ +# Please keep deps in alphabetical order +def third_party_deps(): + + native.maven_jar( + name = "com_google_guava_guava_26_0_jre", + artifact = "com.google.guava:guava:26.0-jre", + repository = "http://jcenter.bintray.com/", + ) + native.maven_jar( + name = "com_google_truth_truth", + artifact = "com.google.truth:truth:0.42", + repository = "http://jcenter.bintray.com/", + )