├── .github
└── workflows
│ └── CI.yml
├── .gitignore
├── .larabot.conf
├── LICENSE
├── README.md
├── benchmark
├── antlr
│ ├── JSON.g4
│ ├── JSON.interp
│ ├── JSON.tokens
│ ├── JSONBaseListener.java
│ ├── JSONLexer.interp
│ ├── JSONLexer.java
│ ├── JSONLexer.tokens
│ ├── JSONListener.java
│ └── JSONParser.java
├── lib
│ ├── ANTLRParser.jar
│ └── antlr-runtime-4.7.2.jar
├── resources
│ ├── failing-scp.json
│ ├── largest-pwd.json
│ ├── normal-100k.json
│ ├── normal-10M.json
│ ├── normal-10k.json
│ ├── normal-1M.json
│ ├── normal-200k.json
│ ├── normal-300k.json
│ ├── normal-400k.json
│ ├── normal-500k.json
│ ├── normal-600k.json
│ ├── normal-700k.json
│ ├── normal-800k.json
│ ├── normal-900k.json
│ └── too-large-for-pwd.json
└── src
│ ├── Benchmarks.scala
│ ├── Crashes.scala
│ ├── Data.scala
│ ├── json
│ ├── Commons.scala
│ ├── ParsebackParser.scala
│ ├── ScalaParser.scala
│ └── ScallionParser.scala
│ └── scallion
│ └── simplell1
│ └── Parsing.scala
├── build.sbt
├── docs
├── favicon.ico
├── fonts
│ ├── FiraCode-Regular.ttf
│ ├── Inter-Bold.ttf
│ ├── Inter-Medium.ttf
│ ├── Inter-Regular.ttf
│ ├── Inter-SemiBold.ttf
│ ├── dotty-icons.ttf
│ └── dotty-icons.woff
├── hljs
│ ├── LICENSE
│ └── highlight.pack.js
├── images
│ ├── banner-icons
│ │ ├── error.svg
│ │ ├── info.svg
│ │ ├── neutral.svg
│ │ ├── success.svg
│ │ └── warning.svg
│ ├── bulb
│ │ ├── dark
│ │ │ └── default.svg
│ │ └── light
│ │ │ └── default.svg
│ ├── class-big.svg
│ ├── class-dark-big.svg
│ ├── class-dark.svg
│ ├── class.svg
│ ├── class_comp.svg
│ ├── def-big.svg
│ ├── def-dark-big.svg
│ ├── discord-icon-black.png
│ ├── discord-icon-white.png
│ ├── enum-big.svg
│ ├── enum-dark-big.svg
│ ├── enum-dark.svg
│ ├── enum.svg
│ ├── enum_comp.svg
│ ├── footer-icon
│ │ ├── dark
│ │ │ └── default.svg
│ │ └── light
│ │ │ └── default.svg
│ ├── github-icon-black.png
│ ├── github-icon-white.png
│ ├── gitter-icon-black.png
│ ├── gitter-icon-white.png
│ ├── given-big.svg
│ ├── given-dark-big.svg
│ ├── given-dark.svg
│ ├── given.svg
│ ├── icon-buttons
│ │ ├── arrow-down
│ │ │ ├── dark
│ │ │ │ ├── active.svg
│ │ │ │ ├── default.svg
│ │ │ │ ├── disabled.svg
│ │ │ │ ├── focus.svg
│ │ │ │ ├── hover.svg
│ │ │ │ └── selected.svg
│ │ │ └── light
│ │ │ │ ├── active.svg
│ │ │ │ ├── default.svg
│ │ │ │ ├── disabled.svg
│ │ │ │ ├── focus.svg
│ │ │ │ ├── hover.svg
│ │ │ │ └── selected.svg
│ │ ├── arrow-right
│ │ │ ├── dark
│ │ │ │ ├── active.svg
│ │ │ │ ├── default.svg
│ │ │ │ ├── disabled.svg
│ │ │ │ ├── focus.svg
│ │ │ │ ├── hover.svg
│ │ │ │ └── selected.svg
│ │ │ └── light
│ │ │ │ ├── active.svg
│ │ │ │ ├── default.svg
│ │ │ │ ├── disabled.svg
│ │ │ │ ├── focus.svg
│ │ │ │ ├── hover.svg
│ │ │ │ └── selected.svg
│ │ ├── close
│ │ │ ├── dark
│ │ │ │ ├── active.svg
│ │ │ │ ├── default.svg
│ │ │ │ ├── disabled.svg
│ │ │ │ ├── focus.svg
│ │ │ │ ├── hover.svg
│ │ │ │ └── selected.svg
│ │ │ └── light
│ │ │ │ ├── active.svg
│ │ │ │ ├── default.svg
│ │ │ │ ├── disabled.svg
│ │ │ │ ├── focus.svg
│ │ │ │ ├── hover.svg
│ │ │ │ └── selected.svg
│ │ ├── copy
│ │ │ ├── dark
│ │ │ │ ├── active.svg
│ │ │ │ ├── default.svg
│ │ │ │ ├── disabled.svg
│ │ │ │ ├── focus.svg
│ │ │ │ ├── hover.svg
│ │ │ │ └── selected.svg
│ │ │ └── light
│ │ │ │ ├── active.svg
│ │ │ │ ├── default.svg
│ │ │ │ ├── disabled.svg
│ │ │ │ ├── focus.svg
│ │ │ │ ├── hover.svg
│ │ │ │ └── selected.svg
│ │ ├── discord
│ │ │ ├── dark
│ │ │ │ ├── active.svg
│ │ │ │ ├── default.svg
│ │ │ │ ├── disabled.svg
│ │ │ │ ├── focus.svg
│ │ │ │ ├── hover.svg
│ │ │ │ └── selected.svg
│ │ │ └── light
│ │ │ │ ├── active.svg
│ │ │ │ ├── default.svg
│ │ │ │ ├── disabled.svg
│ │ │ │ ├── focus.svg
│ │ │ │ ├── hover.svg
│ │ │ │ └── selected.svg
│ │ ├── gh
│ │ │ ├── dark
│ │ │ │ ├── active.svg
│ │ │ │ ├── default.svg
│ │ │ │ ├── disabled.svg
│ │ │ │ ├── focus.svg
│ │ │ │ ├── hover.svg
│ │ │ │ └── selected.svg
│ │ │ └── light
│ │ │ │ ├── active.svg
│ │ │ │ ├── default.svg
│ │ │ │ ├── disabled.svg
│ │ │ │ ├── focus.svg
│ │ │ │ ├── hover.svg
│ │ │ │ └── selected.svg
│ │ ├── gitter
│ │ │ ├── dark
│ │ │ │ ├── active.svg
│ │ │ │ ├── default.svg
│ │ │ │ ├── disabled.svg
│ │ │ │ ├── focus.svg
│ │ │ │ ├── hover.svg
│ │ │ │ └── selected.svg
│ │ │ └── light
│ │ │ │ ├── active.svg
│ │ │ │ ├── default.svg
│ │ │ │ ├── disabled.svg
│ │ │ │ ├── focus.svg
│ │ │ │ ├── hover.svg
│ │ │ │ └── selected.svg
│ │ ├── hamburger
│ │ │ ├── dark
│ │ │ │ ├── active.svg
│ │ │ │ ├── default.svg
│ │ │ │ ├── disabled.svg
│ │ │ │ ├── focus.svg
│ │ │ │ ├── hover.svg
│ │ │ │ └── selected.svg
│ │ │ └── light
│ │ │ │ ├── active.svg
│ │ │ │ ├── default.svg
│ │ │ │ ├── disabled.svg
│ │ │ │ ├── focus.svg
│ │ │ │ ├── hover.svg
│ │ │ │ └── selected.svg
│ │ ├── link
│ │ │ ├── dark
│ │ │ │ ├── active.svg
│ │ │ │ ├── default.svg
│ │ │ │ ├── disabled.svg
│ │ │ │ ├── focus.svg
│ │ │ │ ├── hover.svg
│ │ │ │ └── selected.svg
│ │ │ └── light
│ │ │ │ ├── active.svg
│ │ │ │ ├── default.svg
│ │ │ │ ├── disabled.svg
│ │ │ │ ├── focus.svg
│ │ │ │ ├── hover.svg
│ │ │ │ └── selected.svg
│ │ ├── menu-animated-open
│ │ │ ├── dark
│ │ │ │ ├── active.svg
│ │ │ │ ├── default.svg
│ │ │ │ ├── disabled.svg
│ │ │ │ ├── focus.svg
│ │ │ │ ├── hover.svg
│ │ │ │ └── selected.svg
│ │ │ └── light
│ │ │ │ ├── active.svg
│ │ │ │ ├── default.svg
│ │ │ │ ├── disabled.svg
│ │ │ │ ├── focus.svg
│ │ │ │ ├── hover.svg
│ │ │ │ └── selected.svg
│ │ ├── menu-animated
│ │ │ ├── dark
│ │ │ │ ├── active.svg
│ │ │ │ ├── default.svg
│ │ │ │ ├── disabled.svg
│ │ │ │ ├── focus.svg
│ │ │ │ ├── hover.svg
│ │ │ │ └── selected.svg
│ │ │ └── light
│ │ │ │ ├── active.svg
│ │ │ │ ├── default.svg
│ │ │ │ ├── disabled.svg
│ │ │ │ ├── focus.svg
│ │ │ │ ├── hover.svg
│ │ │ │ └── selected.svg
│ │ ├── minus
│ │ │ ├── dark
│ │ │ │ ├── active.svg
│ │ │ │ ├── default.svg
│ │ │ │ ├── disabled.svg
│ │ │ │ ├── focus.svg
│ │ │ │ ├── hover.svg
│ │ │ │ └── selected.svg
│ │ │ └── light
│ │ │ │ ├── active.svg
│ │ │ │ ├── default.svg
│ │ │ │ ├── disabled.svg
│ │ │ │ ├── focus.svg
│ │ │ │ ├── hover.svg
│ │ │ │ └── selected.svg
│ │ ├── moon
│ │ │ ├── dark
│ │ │ │ ├── active.svg
│ │ │ │ ├── default.svg
│ │ │ │ ├── disabled.svg
│ │ │ │ ├── focus.svg
│ │ │ │ ├── hover.svg
│ │ │ │ └── selected.svg
│ │ │ └── light
│ │ │ │ ├── active.svg
│ │ │ │ ├── default.svg
│ │ │ │ ├── disabled.svg
│ │ │ │ ├── focus.svg
│ │ │ │ ├── hover.svg
│ │ │ │ └── selected.svg
│ │ ├── plus
│ │ │ ├── dark
│ │ │ │ ├── active.svg
│ │ │ │ ├── default.svg
│ │ │ │ ├── disabled.svg
│ │ │ │ ├── focus.svg
│ │ │ │ ├── hover.svg
│ │ │ │ └── selected.svg
│ │ │ └── light
│ │ │ │ ├── active.svg
│ │ │ │ ├── default.svg
│ │ │ │ ├── disabled.svg
│ │ │ │ ├── focus.svg
│ │ │ │ ├── hover.svg
│ │ │ │ └── selected.svg
│ │ ├── search
│ │ │ ├── dark
│ │ │ │ ├── active.svg
│ │ │ │ ├── default.svg
│ │ │ │ ├── disabled.svg
│ │ │ │ ├── focus.svg
│ │ │ │ ├── hover.svg
│ │ │ │ └── selected.svg
│ │ │ └── light
│ │ │ │ ├── active.svg
│ │ │ │ ├── default.svg
│ │ │ │ ├── disabled.svg
│ │ │ │ ├── focus.svg
│ │ │ │ ├── hover.svg
│ │ │ │ └── selected.svg
│ │ ├── sun
│ │ │ ├── dark
│ │ │ │ ├── active.svg
│ │ │ │ ├── default.svg
│ │ │ │ ├── disabled.svg
│ │ │ │ ├── focus.svg
│ │ │ │ ├── hover.svg
│ │ │ │ └── selected.svg
│ │ │ └── light
│ │ │ │ ├── active.svg
│ │ │ │ ├── default.svg
│ │ │ │ ├── disabled.svg
│ │ │ │ ├── focus.svg
│ │ │ │ ├── hover.svg
│ │ │ │ └── selected.svg
│ │ └── twitter
│ │ │ ├── dark
│ │ │ ├── active.svg
│ │ │ ├── default.svg
│ │ │ ├── disabled.svg
│ │ │ ├── focus.svg
│ │ │ ├── hover.svg
│ │ │ └── selected.svg
│ │ │ └── light
│ │ │ ├── active.svg
│ │ │ ├── default.svg
│ │ │ ├── disabled.svg
│ │ │ ├── focus.svg
│ │ │ ├── hover.svg
│ │ │ └── selected.svg
│ ├── info
│ │ ├── dark
│ │ │ └── default.svg
│ │ └── light
│ │ │ └── default.svg
│ ├── inkuire.svg
│ ├── method-big.svg
│ ├── method-dark-big.svg
│ ├── method-dark.svg
│ ├── method.svg
│ ├── no-results-icon.svg
│ ├── object-big.svg
│ ├── object-dark-big.svg
│ ├── object-dark.svg
│ ├── object.svg
│ ├── object_comp.svg
│ ├── package-big.svg
│ ├── package-dark-big.svg
│ ├── package-dark.svg
│ ├── package.svg
│ ├── scaladoc_logo.svg
│ ├── scaladoc_logo_dark.svg
│ ├── static-big.svg
│ ├── static-dark-big.svg
│ ├── static-dark.svg
│ ├── static.svg
│ ├── thick-dark.svg
│ ├── thick.svg
│ ├── trait-big.svg
│ ├── trait-dark-big.svg
│ ├── trait-dark.svg
│ ├── trait.svg
│ ├── trait_comp.svg
│ ├── twitter-icon-black.png
│ ├── twitter-icon-white.png
│ ├── type-big.svg
│ ├── type-dark-big.svg
│ ├── type-dark.svg
│ ├── type.svg
│ ├── val-big.svg
│ ├── val-dark-big.svg
│ ├── val-dark.svg
│ └── val.svg
├── index.html
├── scaladoc.version
├── scallion.html
├── scallion
│ ├── $tilde$.html
│ ├── Debug.html
│ ├── Enumeration$Enumerator$.html
│ ├── Enumeration.html
│ ├── Operators$Associativity.html
│ ├── Operators$LeftAssociative$.html
│ ├── Operators$Level.html
│ ├── Operators$LevelDecorator.html
│ ├── Operators$RightAssociative$.html
│ ├── Operators.html
│ ├── PairDecorator.html
│ ├── Parsers.html
│ ├── Parsing$Conflict$$FirstConflict.html
│ ├── Parsing$Conflict$$FollowConflict.html
│ ├── Parsing$Conflict$$NullableConflict.html
│ ├── Parsing$Conflict$.html
│ ├── Parsing$Conflict.html
│ ├── Parsing$ConflictException.html
│ ├── Parsing$ParseResult.html
│ ├── Parsing$Parsed.html
│ ├── Parsing$Parser$.html
│ ├── Parsing$Parser.html
│ ├── Parsing$Properties.html
│ ├── Parsing$UnexpectedEnd.html
│ ├── Parsing$UnexpectedToken.html
│ ├── Parsing.html
│ ├── PrettyPrinting$PrettyPrinter$.html
│ ├── PrettyPrinting$PrettyPrinter.html
│ ├── PrettyPrinting.html
│ ├── Syntaxes$Implicits$.html
│ ├── Syntaxes$SafeImplicits$.html
│ ├── Syntaxes$Skip.html
│ ├── Syntaxes$Syntax$$Binary.html
│ ├── Syntaxes$Syntax$$Disjunction.html
│ ├── Syntaxes$Syntax$$Elem.html
│ ├── Syntaxes$Syntax$$Failure.html
│ ├── Syntaxes$Syntax$$Marked.html
│ ├── Syntaxes$Syntax$$Recursive$.html
│ ├── Syntaxes$Syntax$$Recursive.html
│ ├── Syntaxes$Syntax$$Sequence.html
│ ├── Syntaxes$Syntax$$Success.html
│ ├── Syntaxes$Syntax$$Transform.html
│ ├── Syntaxes$Syntax$$Unary.html
│ ├── Syntaxes$Syntax$.html
│ ├── Syntaxes$Syntax.html
│ ├── Syntaxes$Uninteresting.html
│ ├── Syntaxes$UnsafeImplicits.html
│ ├── Syntaxes.html
│ ├── util.html
│ ├── util
│ │ └── Unfolds$.html
│ ├── visualization.html
│ └── visualization
│ │ ├── Grammars$grammars$$Epsilon$.html
│ │ ├── Grammars$grammars$$Grammar.html
│ │ ├── Grammars$grammars$$NonTerminal.html
│ │ ├── Grammars$grammars$$Rule.html
│ │ ├── Grammars$grammars$$Symbol.html
│ │ ├── Grammars$grammars$$Terminal.html
│ │ ├── Grammars$grammars$.html
│ │ ├── Grammars.html
│ │ ├── Graphs$graphs$.html
│ │ └── Graphs.html
├── scripts
│ ├── common
│ │ ├── component.js
│ │ └── utils.js
│ ├── components
│ │ ├── DocumentableList.js
│ │ ├── Filter.js
│ │ ├── FilterBar.js
│ │ ├── FilterGroup.js
│ │ └── Input.js
│ ├── contributors.js
│ ├── data.js
│ ├── hljs-scala3.js
│ ├── inkuire-worker.js
│ ├── inkuire.js
│ ├── scaladoc-scalajs.js
│ ├── scastieConfiguration.js
│ ├── searchData.js
│ ├── theme.js
│ └── ux.js
├── styles
│ ├── apistyles.css
│ ├── code-snippets.css
│ ├── content-contributors.css
│ ├── dotty-icons.css
│ ├── filter-bar.css
│ ├── fontawesome.css
│ ├── nord-light.css
│ ├── searchbar.css
│ ├── social-links.css
│ ├── staticsitestyles.css
│ ├── theme
│ │ ├── bundle.css
│ │ ├── components
│ │ │ ├── bundle.css
│ │ │ └── button
│ │ │ │ └── bundle.css
│ │ └── layout
│ │ │ └── bundle.css
│ └── versions-dropdown.css
└── webfonts
│ ├── fa-brands-400.eot
│ ├── fa-brands-400.svg
│ ├── fa-brands-400.ttf
│ ├── fa-brands-400.woff
│ ├── fa-brands-400.woff2
│ ├── fa-regular-400.eot
│ ├── fa-regular-400.svg
│ ├── fa-regular-400.ttf
│ ├── fa-regular-400.woff
│ ├── fa-regular-400.woff2
│ ├── fa-solid-900.eot
│ ├── fa-solid-900.svg
│ ├── fa-solid-900.ttf
│ ├── fa-solid-900.woff
│ └── fa-solid-900.woff2
├── example
├── calculator
│ └── Calculator.scala
├── json
│ └── JSON.scala
├── lambda
│ └── Lambda.scala
└── roman
│ └── Roman.scala
├── images
└── scallion.png
├── paper
└── PLDI20_ZippyLL1PWD.pdf
├── project
├── build.properties
├── plugins.sbt
└── root-doc.txt
└── src
├── main
└── scala
│ └── scallion
│ ├── Debug.scala
│ ├── Enumeration.scala
│ ├── Operators.scala
│ ├── Parsing.scala
│ ├── PrettyPrinting.scala
│ ├── Syntaxes.scala
│ ├── package.scala
│ ├── util
│ ├── Unfolds.scala
│ └── internal
│ │ ├── Enums.scala
│ │ └── Propagators.scala
│ └── visualization
│ ├── Grammars.scala
│ └── Graphs.scala
└── test
└── scala
└── scallion
├── LL1ParserTests.scala
├── json
├── JSON.scala
└── JSONParserTests.scala
└── roman
├── Roman.scala
└── RomanSyntaxTests.scala
/.github/workflows/CI.yml:
--------------------------------------------------------------------------------
1 | name: Compile and run sbt test
2 | on:
3 | pull_request:
4 | push:
5 | branches:
6 | - main
7 | jobs:
8 | tests:
9 | if: github.event.pull_request.draft == false
10 | runs-on: [self-hosted, linux]
11 | env:
12 | # define Java options for both official sbt and sbt-extras
13 | JAVA_OPTS: -Xss64M -Xms1024M -Xmx8G
14 | JVM_OPTS: -Xss64M -Xms1024M -Xmx8G
15 | steps:
16 | - name: Checkout
17 | uses: actions/checkout@v4
18 | with:
19 | submodules: recursive
20 | - name: Setup JDK
21 | uses: actions/setup-java@v4
22 | with:
23 | distribution: temurin
24 | java-version: 17
25 | - name: Install and unpack sbt
26 | run: |
27 | wget https://github.com/sbt/sbt/releases/download/v1.10.1/sbt-1.10.1.tgz
28 | tar xfz sbt-1.10.1.tgz
29 | echo "PATH=./sbt/bin/:$PATH" >> "$GITHUB_ENV"
30 | - name: Run Tests
31 | run: sbt -Dtest-parallelism=4 -batch test
32 | fail_if_pull_request_is_draft:
33 | if: github.event.pull_request.draft == true
34 | runs-on: [self-hosted, linux]
35 | steps:
36 | - name: Fails in order to indicate that pull request needs to be marked as ready to review and tests workflows need to pass.
37 | run: exit 1
38 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | target/
2 | project/target/
3 | example/target/
4 | .bsp
5 |
--------------------------------------------------------------------------------
/.larabot.conf:
--------------------------------------------------------------------------------
1 | commands = [
2 | "sbt -batch ++2.12.8 test"
3 | "sbt -batch ++2.13.1 test"
4 | ]
5 |
6 | trusted = [
7 | "colder"
8 | "larsrh"
9 | "mantognini"
10 | "manoskouk"
11 | "MikaelMayer"
12 | "ravimad"
13 | "regb"
14 | "romac"
15 | "samarion"
16 | "vkuncak"
17 | "redelmann"
18 | "jad-hamza"
19 | "gsps"
20 | ]
21 |
22 | notify {
23 | master = [
24 | "leon-dev@googlegroups.com"
25 | ]
26 | }
27 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | [](https://github.com/epfl-lara/scallion/actions/workflows/CI.yml)
2 |
3 |
4 |
5 |
6 |
7 | # Overview
8 |
9 | Scallion is a library for writing parsers and pretty printers for LL(1) languages in Scala.
10 |
11 | # Documentation
12 |
13 | A comprehensive Scaladoc API is [available online](https://epfl-lara.github.io/scallion/).
14 |
15 | # Parsing Algorithm
16 |
17 | Scallion uses a novel parsing algorithm that we have described in the PLDI'20 paper: [Zippy LL(1) Parsing with Derivatives](paper/PLDI20_ZippyLL1PWD.pdf).
18 | The algorithm has been [formally proven correct in Coq](https://github.com/epfl-lara/scallion-proofs/).
19 |
20 | # Examples
21 |
22 | * [JSON](example/json/JSON.scala): This example showcases how to build a basic JSON parser using Scallion.
23 | * [Lambda Calculus](example/lambda/Lambda.scala): This example shows how to get a pretty printer *almost for free* alongside your parser.
24 | * [Calculator](example/calculator/Calculator.scala): This example shows how to use the `operators` combinator to easily handle operators with various associativities and priorities.
25 | * [Roman Numerals](example/roman/Roman.scala): This example presents a simple parser and pretty printer for roman numerals.
26 |
27 |
--------------------------------------------------------------------------------
/benchmark/antlr/JSON.g4:
--------------------------------------------------------------------------------
1 |
2 | /** Taken from "The Definitive ANTLR 4 Reference" by Terence Parr */
3 |
4 | // Derived from http://json.org
5 | grammar JSON;
6 |
7 | json
8 | : value
9 | ;
10 |
11 | obj
12 | : '{' pair (',' pair)* '}'
13 | | '{' '}'
14 | ;
15 |
16 | pair
17 | : STRING ':' value
18 | ;
19 |
20 | array
21 | : '[' value (',' value)* ']'
22 | | '[' ']'
23 | ;
24 |
25 | value
26 | : STRING
27 | | NUMBER
28 | | obj
29 | | array
30 | | 'true'
31 | | 'false'
32 | | 'null'
33 | ;
34 |
35 |
36 | STRING
37 | : '"' (ESC | SAFECODEPOINT)* '"'
38 | ;
39 |
40 |
41 | fragment ESC
42 | : '\\' (["\\/bfnrt] | UNICODE)
43 | ;
44 |
45 |
46 | fragment UNICODE
47 | : 'u' HEX HEX HEX HEX
48 | ;
49 |
50 |
51 | fragment HEX
52 | : [0-9a-fA-F]
53 | ;
54 |
55 |
56 | fragment SAFECODEPOINT
57 | : ~ ["\\\u0000-\u001F]
58 | ;
59 |
60 |
61 | NUMBER
62 | : '-'? INT ('.' [0-9] +)? EXP?
63 | ;
64 |
65 |
66 | fragment INT
67 | : '0' | [1-9] [0-9]*
68 | ;
69 |
70 | // no leading zeros
71 |
72 | fragment EXP
73 | : [Ee] [+\-]? INT
74 | ;
75 |
76 | // \- since - means "range" inside [...]
77 |
78 | WS
79 | : [ \t\n\r] + -> skip
80 | ;
81 |
--------------------------------------------------------------------------------
/benchmark/antlr/JSON.tokens:
--------------------------------------------------------------------------------
1 | T__0=1
2 | T__1=2
3 | T__2=3
4 | T__3=4
5 | T__4=5
6 | T__5=6
7 | T__6=7
8 | T__7=8
9 | T__8=9
10 | STRING=10
11 | NUMBER=11
12 | WS=12
13 | '{'=1
14 | ','=2
15 | '}'=3
16 | ':'=4
17 | '['=5
18 | ']'=6
19 | 'true'=7
20 | 'false'=8
21 | 'null'=9
22 |
--------------------------------------------------------------------------------
/benchmark/antlr/JSONLexer.tokens:
--------------------------------------------------------------------------------
1 | T__0=1
2 | T__1=2
3 | T__2=3
4 | T__3=4
5 | T__4=5
6 | T__5=6
7 | T__6=7
8 | T__7=8
9 | T__8=9
10 | STRING=10
11 | NUMBER=11
12 | WS=12
13 | '{'=1
14 | ','=2
15 | '}'=3
16 | ':'=4
17 | '['=5
18 | ']'=6
19 | 'true'=7
20 | 'false'=8
21 | 'null'=9
22 |
--------------------------------------------------------------------------------
/benchmark/lib/ANTLRParser.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epfl-lara/scallion/cb08e9f1ceed80c9918ae516947f87903ddc1a92/benchmark/lib/ANTLRParser.jar
--------------------------------------------------------------------------------
/benchmark/lib/antlr-runtime-4.7.2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epfl-lara/scallion/cb08e9f1ceed80c9918ae516947f87903ddc1a92/benchmark/lib/antlr-runtime-4.7.2.jar
--------------------------------------------------------------------------------
/benchmark/resources/largest-pwd.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "_id": "5dd6c20fd06594bad16b3185",
4 | "index": 0,
5 | "guid": "24b4a7d8-272a-4eca-a9e5-0693fa8078a4",
6 | "isActive": false,
7 | "balance": "$1,720.68",
8 | "picture": "http://placehold.it/32x32",
9 | "age": 33,
10 | "eyeColor": "brown",
11 | "name": "Victoria Ford",
12 | "gender": "female",
13 | "company": "ANIVET",
14 | "email": "victoriaford@anivet.com",
15 | "phone": "+1 (963) 413-3498",
16 | "address": "675 Remsen Avenue, Hasty, Washington, 1710",
17 | "about": "Minim dolore labore laboris ea velit sit nulla. Amet ex ut eiusmod sunt reprehenderit voluptate. Laborum dolor nisi non pariatur sunt officia quis ut eu. Et magna enim esse anim proident. Irure incididunt reprehenderit ut esse cupidatat culpa enim ullamco duis consectetur. Mollit consequat ex qui cupidatat amet eu cillum elit occaecat eu.\r\n",
18 | "registered": "2015-07-23T04:51:25 -02:00",
19 | "latitude": -84.227777,
20 | "longitude": -28.672767,
21 | "tags": [
22 | "veniam",
23 | "amet",
24 | "officia",
25 | "exercitation",
26 | "do",
27 | "labore",
28 | "pariatur"
29 | ],
30 | "friends": [
31 | {
32 | "id": 0,
33 | "name": "Roseann Patton"
34 | },
35 | {
36 | "id": 1,
37 | "name": "Henson Wilkins"
38 | },
39 | {
40 | "id": 2,
41 | "name": "Mable Marks"
42 | }
43 | ],
44 | "greeting": "Hello, Victoria Ford! You have 1 unread messages.",
45 | "favoriteFruit": "banana"
46 | }
47 | ]
--------------------------------------------------------------------------------
/benchmark/src/Crashes.scala:
--------------------------------------------------------------------------------
1 |
2 | import json._
3 |
4 | object Crashes {
5 |
6 | def main(args: Array[String]) {
7 |
8 | println("Making Scala Parser Combinators crash.")
9 | try {
10 | val tokens = JSONLexer(io.Source.fromFile("benchmark/resources/failing-scp.json"))
11 | val parser = new ScalaParser
12 | parser(tokens)
13 | println("No crash.")
14 | }
15 | catch {
16 | case e: Throwable =>
17 | println("Crashed...")
18 | println(e)
19 | }
20 |
21 | println("Making Parseback crash.")
22 | try {
23 | val parser = new ParsebackParser
24 | parser(scala.io.Source.fromFile("benchmark/resources/too-large-for-pwd.json").getLines().toSeq)
25 | println("No crash.")
26 | }
27 | catch {
28 | case e: Throwable =>
29 | println("Crashed...")
30 | println(e)
31 | }
32 |
33 | println("Trying to show that Parseback doesn't simply always crash.")
34 | try {
35 | val parser = new ParsebackParser
36 | parser(scala.io.Source.fromFile("benchmark/resources/largest-pwd.json").getLines().toSeq)
37 | println("No crash, as desired.")
38 | }
39 | catch {
40 | case e: Throwable =>
41 | println("Unexpectedly crashed.")
42 | println(e)
43 | }
44 |
45 | println("Making simple (non-zippy) LL(1) parsing with derivatives crash. (Warning: May take several minutes.)")
46 | try {
47 | val tokens = JSONLexer(io.Source.fromFile("benchmark/resources/normal-10M.json"))
48 | val parser = new ScallionParser
49 | parser.simpleApply(tokens)
50 | println("No crash.")
51 | }
52 | catch {
53 | case e: Throwable =>
54 | println("Crashed...")
55 | println(e)
56 | }
57 | }
58 | }
--------------------------------------------------------------------------------
/benchmark/src/Data.scala:
--------------------------------------------------------------------------------
1 |
2 | import json._
3 |
4 | /** Prints token counts for the various JSON files. */
5 | object Data {
6 | def main(args: Array[String]): Unit = {
7 | val files = Seq(
8 | "failing-scp", "largest-pwd", "too-large-for-pwd",
9 | "normal-100k", "normal-200k", "normal-300k", "normal-400k",
10 | "normal-500k", "normal-600k", "normal-700k", "normal-800k",
11 | "normal-900k", "normal-1M", "normal-10M")
12 |
13 | for (file <- files) {
14 | val ts = JSONLexer(io.Source.fromFile("benchmark/resources/" + file + ".json")).toArray
15 | println(file + ": " + ts.size + " tokens.")
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/benchmark/src/json/ParsebackParser.scala:
--------------------------------------------------------------------------------
1 | package json
2 |
3 | import parseback._
4 | import parseback.compat.cats._
5 |
6 | class ParsebackParser {
7 | import parseback.LineStream
8 |
9 | import cats.Eval
10 |
11 | lazy val number: Parser[Value] = regex("""\d+""".r) ^^ { (_, n) => NumberValue(n.toDouble, (0, 0)) }
12 |
13 | lazy val string: Parser[StringValue] = regex(""""[^"]*"""".r) ^^ { (_, cs) => StringValue(cs.substring(1, cs.length - 1), (0, 0)) }
14 |
15 | lazy val nul: Parser[Value] = "null" ^^^ NullValue((0, 0))
16 |
17 | lazy val bool: Parser[Value] = "true" ^^^ BooleanValue(true, (0, 0)) | "false" ^^^ BooleanValue(false, (0, 0))
18 |
19 | lazy val binding: Parser[(StringValue, Value)] = (string <~ space <~ ":" <~ space) ~ value
20 |
21 | lazy val array: Parser[Value] = "[" ~> space ~> values <~ space <~ "]" ^^ { (_, vs) => ArrayValue(vs, (0, 0)) }
22 |
23 | lazy val values: Parser[Seq[Value]] = (value ~ (space ~> "," ~> space ~> values | () ^^^ List.empty[Value])) ^^ { (_, v, vs) => v +: vs } | () ^^^ List.empty[Value]
24 |
25 | lazy val space: Parser[String] = regex("""\s+""".r) | ""
26 |
27 | lazy val value: Parser[Value] = number | array | nul | bool | string | objekt
28 |
29 | lazy val bindings: Parser[Seq[(StringValue, Value)]] = (binding ~ (space ~> "," ~> space ~> bindings | () ^^^ List.empty[(StringValue, Value)])) ^^ { (_, k, v, vs) => (k, v) +: vs } | () ^^^ List.empty[(StringValue, Value)]
30 |
31 | lazy val objekt: Parser[Value] = "{" ~> space ~> bindings <~ space <~ "]" ^^ { (_, vs) => ObjectValue(vs, (0, 0)) }
32 |
33 | def apply(lines: Seq[String]) = {
34 | val input: LineStream[Eval] = LineStream(lines)
35 | value(input).value
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/docs/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epfl-lara/scallion/cb08e9f1ceed80c9918ae516947f87903ddc1a92/docs/favicon.ico
--------------------------------------------------------------------------------
/docs/fonts/FiraCode-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epfl-lara/scallion/cb08e9f1ceed80c9918ae516947f87903ddc1a92/docs/fonts/FiraCode-Regular.ttf
--------------------------------------------------------------------------------
/docs/fonts/Inter-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epfl-lara/scallion/cb08e9f1ceed80c9918ae516947f87903ddc1a92/docs/fonts/Inter-Bold.ttf
--------------------------------------------------------------------------------
/docs/fonts/Inter-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epfl-lara/scallion/cb08e9f1ceed80c9918ae516947f87903ddc1a92/docs/fonts/Inter-Medium.ttf
--------------------------------------------------------------------------------
/docs/fonts/Inter-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epfl-lara/scallion/cb08e9f1ceed80c9918ae516947f87903ddc1a92/docs/fonts/Inter-Regular.ttf
--------------------------------------------------------------------------------
/docs/fonts/Inter-SemiBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epfl-lara/scallion/cb08e9f1ceed80c9918ae516947f87903ddc1a92/docs/fonts/Inter-SemiBold.ttf
--------------------------------------------------------------------------------
/docs/fonts/dotty-icons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epfl-lara/scallion/cb08e9f1ceed80c9918ae516947f87903ddc1a92/docs/fonts/dotty-icons.ttf
--------------------------------------------------------------------------------
/docs/fonts/dotty-icons.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epfl-lara/scallion/cb08e9f1ceed80c9918ae516947f87903ddc1a92/docs/fonts/dotty-icons.woff
--------------------------------------------------------------------------------
/docs/hljs/LICENSE:
--------------------------------------------------------------------------------
1 | BSD 3-Clause License
2 |
3 | Copyright (c) 2006, Ivan Sagalaev.
4 | All rights reserved.
5 |
6 | Redistribution and use in source and binary forms, with or without
7 | modification, are permitted provided that the following conditions are met:
8 |
9 | * Redistributions of source code must retain the above copyright notice, this
10 | list of conditions and the following disclaimer.
11 |
12 | * Redistributions in binary form must reproduce the above copyright notice,
13 | this list of conditions and the following disclaimer in the documentation
14 | and/or other materials provided with the distribution.
15 |
16 | * Neither the name of the copyright holder nor the names of its
17 | contributors may be used to endorse or promote products derived from
18 | this software without specific prior written permission.
19 |
20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 |
--------------------------------------------------------------------------------
/docs/images/banner-icons/error.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/banner-icons/info.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/banner-icons/neutral.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/banner-icons/success.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/banner-icons/warning.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/class-big.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/class-dark-big.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/docs/images/class-dark.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/class.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/def-big.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/def-dark-big.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/docs/images/discord-icon-black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epfl-lara/scallion/cb08e9f1ceed80c9918ae516947f87903ddc1a92/docs/images/discord-icon-black.png
--------------------------------------------------------------------------------
/docs/images/discord-icon-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epfl-lara/scallion/cb08e9f1ceed80c9918ae516947f87903ddc1a92/docs/images/discord-icon-white.png
--------------------------------------------------------------------------------
/docs/images/enum-big.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/enum-dark-big.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/docs/images/enum-dark.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/enum.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/github-icon-black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epfl-lara/scallion/cb08e9f1ceed80c9918ae516947f87903ddc1a92/docs/images/github-icon-black.png
--------------------------------------------------------------------------------
/docs/images/github-icon-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epfl-lara/scallion/cb08e9f1ceed80c9918ae516947f87903ddc1a92/docs/images/github-icon-white.png
--------------------------------------------------------------------------------
/docs/images/gitter-icon-black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epfl-lara/scallion/cb08e9f1ceed80c9918ae516947f87903ddc1a92/docs/images/gitter-icon-black.png
--------------------------------------------------------------------------------
/docs/images/gitter-icon-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epfl-lara/scallion/cb08e9f1ceed80c9918ae516947f87903ddc1a92/docs/images/gitter-icon-white.png
--------------------------------------------------------------------------------
/docs/images/icon-buttons/arrow-down/dark/active.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/arrow-down/dark/default.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/arrow-down/dark/disabled.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/arrow-down/dark/focus.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/arrow-down/dark/hover.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/arrow-down/dark/selected.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/arrow-down/light/active.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/arrow-down/light/default.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/arrow-down/light/disabled.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/arrow-down/light/focus.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/arrow-down/light/hover.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/arrow-down/light/selected.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/arrow-right/dark/active.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/arrow-right/dark/default.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/arrow-right/dark/disabled.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/arrow-right/dark/focus.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/arrow-right/dark/hover.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/arrow-right/dark/selected.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/arrow-right/light/active.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/arrow-right/light/default.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/arrow-right/light/disabled.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/arrow-right/light/focus.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/arrow-right/light/hover.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/arrow-right/light/selected.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/close/dark/active.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/close/dark/default.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/close/dark/disabled.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/close/dark/focus.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/close/dark/hover.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/close/dark/selected.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/close/light/active.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/close/light/default.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/close/light/disabled.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/close/light/focus.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/close/light/hover.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/close/light/selected.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/copy/dark/active.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/copy/dark/default.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/copy/dark/disabled.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/copy/dark/focus.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/copy/dark/hover.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/copy/dark/selected.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/copy/light/active.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/copy/light/default.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/copy/light/disabled.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/copy/light/focus.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/copy/light/hover.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/copy/light/selected.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/gh/dark/active.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/gh/dark/default.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/gh/dark/disabled.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/gh/dark/focus.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/gh/dark/hover.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/gh/dark/selected.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/gh/light/active.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/gh/light/default.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/gh/light/disabled.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/gh/light/focus.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/gh/light/hover.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/gh/light/selected.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/gitter/dark/active.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/gitter/dark/default.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/gitter/dark/disabled.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/gitter/dark/focus.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/gitter/dark/hover.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/gitter/dark/selected.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/gitter/light/active.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/gitter/light/default.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/gitter/light/disabled.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/gitter/light/focus.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/gitter/light/hover.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/gitter/light/selected.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/hamburger/dark/active.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/hamburger/dark/default.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/hamburger/dark/disabled.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/hamburger/dark/focus.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/hamburger/dark/hover.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/hamburger/dark/selected.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/hamburger/light/active.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/hamburger/light/default.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/hamburger/light/disabled.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/hamburger/light/focus.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/hamburger/light/hover.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/hamburger/light/selected.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/link/dark/active.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/link/dark/default.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/link/dark/disabled.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/link/dark/focus.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/link/dark/hover.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/link/dark/selected.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/link/light/active.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/link/light/default.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/link/light/disabled.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/link/light/focus.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/link/light/hover.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/link/light/selected.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/menu-animated-open/dark/active.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/menu-animated-open/dark/default.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/menu-animated-open/dark/disabled.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/menu-animated-open/dark/focus.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/menu-animated-open/dark/hover.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/menu-animated-open/dark/selected.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/menu-animated-open/light/active.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/menu-animated-open/light/default.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/menu-animated-open/light/disabled.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/menu-animated-open/light/focus.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/menu-animated-open/light/hover.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/menu-animated-open/light/selected.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/menu-animated/dark/active.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/menu-animated/dark/default.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/menu-animated/dark/disabled.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/menu-animated/dark/focus.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/menu-animated/dark/hover.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/menu-animated/dark/selected.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/menu-animated/light/active.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/menu-animated/light/default.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/menu-animated/light/disabled.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/menu-animated/light/focus.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/menu-animated/light/hover.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/menu-animated/light/selected.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/minus/dark/active.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/minus/dark/default.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/minus/dark/disabled.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/minus/dark/focus.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/minus/dark/hover.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/minus/dark/selected.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/minus/light/active.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/minus/light/default.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/minus/light/disabled.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/minus/light/focus.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/minus/light/hover.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/minus/light/selected.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/moon/dark/active.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/moon/dark/default.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/moon/dark/disabled.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/moon/dark/focus.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/moon/dark/hover.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/moon/dark/selected.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/moon/light/active.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/moon/light/default.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/moon/light/disabled.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/moon/light/focus.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/moon/light/hover.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/moon/light/selected.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/plus/dark/active.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/plus/dark/default.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/plus/dark/disabled.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/plus/dark/focus.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/plus/dark/hover.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/plus/dark/selected.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/plus/light/active.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/plus/light/default.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/plus/light/disabled.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/plus/light/focus.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/plus/light/hover.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/plus/light/selected.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/search/dark/active.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/search/dark/default.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/search/dark/disabled.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/search/dark/focus.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/search/dark/hover.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/search/dark/selected.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/search/light/active.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/search/light/default.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/search/light/disabled.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/search/light/focus.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/search/light/hover.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/search/light/selected.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/twitter/dark/active.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/twitter/dark/default.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/twitter/dark/disabled.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/twitter/dark/focus.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/twitter/dark/hover.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/twitter/dark/selected.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/twitter/light/active.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/twitter/light/default.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/twitter/light/disabled.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/twitter/light/focus.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/twitter/light/hover.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/icon-buttons/twitter/light/selected.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/info/dark/default.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/info/light/default.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/method-big.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/method-dark-big.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/docs/images/method-dark.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/method.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/no-results-icon.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/docs/images/object-big.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/object-dark-big.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/docs/images/object-dark.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/object.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/package-big.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/package-dark-big.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/docs/images/package-dark.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/package.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/scaladoc_logo.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/images/scaladoc_logo_dark.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/images/static-big.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/static-dark-big.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/docs/images/static-dark.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/static.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/thick-dark.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/images/thick.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/trait-big.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/trait-dark-big.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/docs/images/trait-dark.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/trait.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/twitter-icon-black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epfl-lara/scallion/cb08e9f1ceed80c9918ae516947f87903ddc1a92/docs/images/twitter-icon-black.png
--------------------------------------------------------------------------------
/docs/images/twitter-icon-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epfl-lara/scallion/cb08e9f1ceed80c9918ae516947f87903ddc1a92/docs/images/twitter-icon-white.png
--------------------------------------------------------------------------------
/docs/images/type-big.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/type-dark-big.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/docs/images/type-dark.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/type.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/val-big.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/val-dark-big.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/docs/images/val-dark.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/images/val.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/docs/scaladoc.version:
--------------------------------------------------------------------------------
1 | 3.5.0
--------------------------------------------------------------------------------
/docs/scripts/common/component.js:
--------------------------------------------------------------------------------
1 | class Component {
2 | constructor(props = {}) {
3 | this.props = props;
4 | this.prevProps = {};
5 | this.state = {};
6 | }
7 |
8 | setState(nextState, cb = () => {}) {
9 | if (typeof nextState === "function") {
10 | this.state = {
11 | ...this.state,
12 | ...nextState(this.state),
13 | };
14 | } else {
15 | this.state = {
16 | ...this.state,
17 | ...nextState,
18 | };
19 | }
20 |
21 | cb();
22 |
23 | if (this.render) {
24 | this.render();
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/docs/scripts/common/utils.js:
--------------------------------------------------------------------------------
1 | const findRef = (searchBy, element = document) =>
2 | element.querySelector(searchBy);
3 |
4 | const findRefs = (searchBy, element = document) =>
5 | element ? [...element.querySelectorAll(searchBy)] : [];
6 |
7 | const withEvent = (element, listener, callback) => {
8 | element && element.addEventListener(listener, callback);
9 | return () => element && element.removeEventListener(listener, callback);
10 | };
11 |
12 | const attachDOM = (element, html) => {
13 | if (element) {
14 | element.innerHTML = htmlToString(html);
15 | }
16 | };
17 |
18 | const htmlToString = (html) => {
19 | if (Array.isArray(html)) {
20 | return html.join("");
21 | }
22 | return html;
23 | };
24 |
25 | const isFilterData = key => key.startsWith("f")
26 |
27 | const getFilterKey = key => `f${key.charAt(0).toUpperCase()}${key.slice(1)}`
28 |
29 | const attachListeners = (elementsRefs, type, callback) =>
30 | elementsRefs.map((elRef) => withEvent(elRef, type, callback));
31 |
32 | const getElementTextContent = (element) => (element ? element.textContent : "");
33 |
34 | const getElementDescription = (elementRef) =>
35 | findRef(".documentableBrief", elementRef);
36 |
37 | const getElementNameRef = (elementRef) =>
38 | findRef(".documentableName", elementRef);
39 |
--------------------------------------------------------------------------------
/docs/scripts/components/Input.js:
--------------------------------------------------------------------------------
1 | class Input extends Component {
2 | constructor(props) {
3 | super(props);
4 |
5 | this.inputRef = findRef(".filterableInput");
6 | this.onChangeFn = withEvent(this.inputRef, "input", this.onInputChange);
7 | this.onKeydownFn = withEvent(this.inputRef, "keydown", this.onKeydown);
8 | }
9 |
10 | onInputChange = ({ currentTarget: { value } }) => {
11 | setTimeout(this.props.onInputChange(value), 300);
12 | };
13 |
14 | onKeydown = (e) => {
15 | // if the user hits Escape while typing in the filter input,
16 | // clear the filter and un-focus the input
17 | if (e.keyCode == 27) {
18 | this.inputRef.value = '';
19 | this.onInputChange(e);
20 | setTimeout(() => this.inputRef.blur(), 1);
21 | }
22 | }
23 |
24 | componentWillUnmount() {
25 | if (this.onChangeFn) {
26 | this.onChangeFn();
27 | this.onKeydownFn();
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/docs/scripts/data.js:
--------------------------------------------------------------------------------
1 | var scaladocData = {"filterDefaults":{"inherited":"Not inherited","implicitly":"Explicit method","keywords":"no keywords","visibility":"public","extension":"Standard member"}}
--------------------------------------------------------------------------------
/docs/scripts/inkuire-worker.js:
--------------------------------------------------------------------------------
1 | importScripts("inkuire.js");
2 | WorkerMain.main();
3 |
--------------------------------------------------------------------------------
/docs/scripts/scastieConfiguration.js:
--------------------------------------------------------------------------------
1 | scastieConfiguration = ""
--------------------------------------------------------------------------------
/docs/styles/apistyles.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epfl-lara/scallion/cb08e9f1ceed80c9918ae516947f87903ddc1a92/docs/styles/apistyles.css
--------------------------------------------------------------------------------
/docs/styles/content-contributors.css:
--------------------------------------------------------------------------------
1 | .content-contributors.hidden {
2 | display: none;
3 | }
4 |
5 | .content-contributors .contributors-container div a {
6 | vertical-align: middle;
7 | padding: 3px;
8 | text-decoration: none;
9 | }
10 |
11 | .content-contributors {
12 | background-color: var(--background-neutral);
13 | padding: calc(3 * var(--base-spacing));
14 | border-radius: 4px;
15 | }
16 |
17 | .content-contributors .contributors-container {
18 | display: flex;
19 | flex-wrap: wrap;
20 | align-items: center;
21 | padding-bottom: 25px;
22 | row-gap: calc(3 * var(--base-spacing));
23 | column-gap: calc(4 * var(--base-spacing));
24 | }
25 |
26 | .content-contributors h1 {
27 | color: var(--text-primary);
28 | padding-bottom: calc(3 * var(--base-spacing));
29 | }
30 |
31 | .content-contributors .contributors-container div img {
32 | vertical-align: middle;
33 | width: 35px;
34 | height: 35px;
35 | margin-bottom: 0;
36 | border-radius: 50%;
37 | margin-right: calc(1.5 * var(--base-spacing));
38 | }
39 |
40 | #content .content-contributors .contributors-container div a {
41 | text-decoration: none;
42 | border-bottom: none;
43 | }
44 |
45 | .content-contributors .contributors-container {
46 | padding: 0;
47 | }
48 |
49 | .content-contributors .github-edit-button {
50 | padding-top: calc(2 * var(--base-spacing));
51 | }
52 |
--------------------------------------------------------------------------------
/docs/styles/dotty-icons.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: 'dotty-icons';
3 | src:
4 | url('../fonts/dotty-icons.woff?kefi7x') format('woff'),
5 | url('../fonts/dotty-icons.ttf?kefi7x') format('truetype');
6 | font-weight: normal;
7 | font-style: normal;
8 | font-display: block;
9 | }
10 |
11 | [class^="icon-"], [class*=" icon-"] {
12 | /* use !important to prevent issues with browser extensions that change fonts */
13 | font-family: 'dotty-icons' !important;
14 | speak: never;
15 | font-style: normal;
16 | font-weight: normal;
17 | font-variant: normal;
18 | text-transform: none;
19 | line-height: 1;
20 |
21 | /* Better Font Rendering */
22 | -webkit-font-smoothing: antialiased;
23 | -moz-osx-font-smoothing: grayscale;
24 | }
25 |
26 | .icon-git:before {
27 | content: "\e908";
28 | }
29 | .icon-clear:before {
30 | content: "\e900";
31 | }
32 | .icon-content_copy:before {
33 | content: "\e90b";
34 | }
35 | .icon-create:before {
36 | content: "\e907";
37 | }
38 | .icon-link:before {
39 | content: "\e901";
40 | }
41 | .icon-vertical_align_top:before {
42 | content: "\e902";
43 | }
44 | .icon-keyboard_arrow_down:before {
45 | content: "\e903";
46 | }
47 | .icon-keyboard_arrow_right:before {
48 | content: "\e904";
49 | }
50 | .icon-keyboard_arrow_up:before {
51 | content: "\e905";
52 | }
53 | .icon-menu:before {
54 | content: "\e90a";
55 | }
56 | .icon-check_circle:before {
57 | content: "\e909";
58 | }
59 | .icon-search:before {
60 | content: "\e906";
61 | }
62 |
--------------------------------------------------------------------------------
/docs/styles/social-links.css:
--------------------------------------------------------------------------------
1 | .theme-dark footer .social-icon {
2 | /* "Poor man's dark mode" for images.
3 | * This works great with black images,
4 | * and just-okay with colored images.
5 | */
6 | filter: invert(100%) hue-rotate(180deg);
7 | }
8 |
9 | .social-icon {
10 | padding-right: 5px;
11 | padding-left: 5px;
12 | }
13 |
14 | .social-icon img {
15 | height: 20px;
16 | width: 20px;
17 | }
18 |
--------------------------------------------------------------------------------
/docs/styles/staticsitestyles.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epfl-lara/scallion/cb08e9f1ceed80c9918ae516947f87903ddc1a92/docs/styles/staticsitestyles.css
--------------------------------------------------------------------------------
/docs/webfonts/fa-brands-400.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epfl-lara/scallion/cb08e9f1ceed80c9918ae516947f87903ddc1a92/docs/webfonts/fa-brands-400.eot
--------------------------------------------------------------------------------
/docs/webfonts/fa-brands-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epfl-lara/scallion/cb08e9f1ceed80c9918ae516947f87903ddc1a92/docs/webfonts/fa-brands-400.ttf
--------------------------------------------------------------------------------
/docs/webfonts/fa-brands-400.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epfl-lara/scallion/cb08e9f1ceed80c9918ae516947f87903ddc1a92/docs/webfonts/fa-brands-400.woff
--------------------------------------------------------------------------------
/docs/webfonts/fa-brands-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epfl-lara/scallion/cb08e9f1ceed80c9918ae516947f87903ddc1a92/docs/webfonts/fa-brands-400.woff2
--------------------------------------------------------------------------------
/docs/webfonts/fa-regular-400.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epfl-lara/scallion/cb08e9f1ceed80c9918ae516947f87903ddc1a92/docs/webfonts/fa-regular-400.eot
--------------------------------------------------------------------------------
/docs/webfonts/fa-regular-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epfl-lara/scallion/cb08e9f1ceed80c9918ae516947f87903ddc1a92/docs/webfonts/fa-regular-400.ttf
--------------------------------------------------------------------------------
/docs/webfonts/fa-regular-400.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epfl-lara/scallion/cb08e9f1ceed80c9918ae516947f87903ddc1a92/docs/webfonts/fa-regular-400.woff
--------------------------------------------------------------------------------
/docs/webfonts/fa-regular-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epfl-lara/scallion/cb08e9f1ceed80c9918ae516947f87903ddc1a92/docs/webfonts/fa-regular-400.woff2
--------------------------------------------------------------------------------
/docs/webfonts/fa-solid-900.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epfl-lara/scallion/cb08e9f1ceed80c9918ae516947f87903ddc1a92/docs/webfonts/fa-solid-900.eot
--------------------------------------------------------------------------------
/docs/webfonts/fa-solid-900.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epfl-lara/scallion/cb08e9f1ceed80c9918ae516947f87903ddc1a92/docs/webfonts/fa-solid-900.ttf
--------------------------------------------------------------------------------
/docs/webfonts/fa-solid-900.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epfl-lara/scallion/cb08e9f1ceed80c9918ae516947f87903ddc1a92/docs/webfonts/fa-solid-900.woff
--------------------------------------------------------------------------------
/docs/webfonts/fa-solid-900.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epfl-lara/scallion/cb08e9f1ceed80c9918ae516947f87903ddc1a92/docs/webfonts/fa-solid-900.woff2
--------------------------------------------------------------------------------
/images/scallion.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epfl-lara/scallion/cb08e9f1ceed80c9918ae516947f87903ddc1a92/images/scallion.png
--------------------------------------------------------------------------------
/paper/PLDI20_ZippyLL1PWD.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epfl-lara/scallion/cb08e9f1ceed80c9918ae516947f87903ddc1a92/paper/PLDI20_ZippyLL1PWD.pdf
--------------------------------------------------------------------------------
/project/build.properties:
--------------------------------------------------------------------------------
1 | sbt.version=1.10.1
2 |
--------------------------------------------------------------------------------
/project/plugins.sbt:
--------------------------------------------------------------------------------
1 | addSbtPlugin("org.foundweekends" % "sbt-bintray" % "0.5.4")
2 | addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "1.2.0")
--------------------------------------------------------------------------------
/project/root-doc.txt:
--------------------------------------------------------------------------------
1 | ==Overview==
2 |
3 | Scallion is a library for easily writing LL(1) parsers in Scala, with support for pretty printing.
4 | See the package [[scallion]] for more information.
--------------------------------------------------------------------------------