├── testfiles
├── lipidnames-invalid-01.txt
├── lipidnames-invalid.txt
├── lipidnames.txt
├── lipidnames.csv
├── shorthand-test.csv
└── lipid-masses.csv
├── .gitignore
├── goslin.png
├── renovate.json
├── docs
├── uml-class-diagram.png
├── goslin-class-diagram.png
├── goslin-webapp-form-01.png
├── goslin-webapp-form-02.png
├── goslin-webapp-rest-05.png
├── goslin-webapp-form-02a.png
├── goslin-webapp-result-03.png
├── goslin-webapp-result-detail-04.png
└── grammars
│ ├── HMDB
│ ├── dark.css
│ └── light.css
│ ├── FattyAcids
│ ├── dark.css
│ └── light.css
│ ├── Goslin
│ ├── dark.css
│ └── light.css
│ ├── LipidMaps
│ ├── dark.css
│ └── light.css
│ ├── SumFormula
│ ├── dark.css
│ └── light.css
│ ├── GoslinFragments
│ ├── dark.css
│ └── light.css
│ ├── Shorthand2020
│ ├── dark.css
│ └── light.css
│ └── SwissLipids
│ ├── dark.css
│ └── light.css
├── .github
├── ISSUE_TEMPLATE
│ ├── feature_request.md
│ └── bug_report.md
└── workflows
│ └── check-grammars.yml
├── CITATION.cff
├── LICENSE
├── SumFormula.g4
├── functional-groups.csv
├── README.md
├── CODE_OF_CONDUCT.md
├── trivial_mediators.csv
├── goslin.svg
├── SwissLipids.g4
├── FattyAcids.g4
├── GoslinFragments.g4
└── HMDB.g4
/testfiles/lipidnames-invalid-01.txt:
--------------------------------------------------------------------------------
1 | SM(32:0)
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .antlr/
2 | .gradle/
3 | build/
4 |
--------------------------------------------------------------------------------
/goslin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lifs-tools/goslin/HEAD/goslin.png
--------------------------------------------------------------------------------
/renovate.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": [
3 | "config:recommended"
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/docs/uml-class-diagram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lifs-tools/goslin/HEAD/docs/uml-class-diagram.png
--------------------------------------------------------------------------------
/docs/goslin-class-diagram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lifs-tools/goslin/HEAD/docs/goslin-class-diagram.png
--------------------------------------------------------------------------------
/docs/goslin-webapp-form-01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lifs-tools/goslin/HEAD/docs/goslin-webapp-form-01.png
--------------------------------------------------------------------------------
/docs/goslin-webapp-form-02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lifs-tools/goslin/HEAD/docs/goslin-webapp-form-02.png
--------------------------------------------------------------------------------
/docs/goslin-webapp-rest-05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lifs-tools/goslin/HEAD/docs/goslin-webapp-rest-05.png
--------------------------------------------------------------------------------
/docs/goslin-webapp-form-02a.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lifs-tools/goslin/HEAD/docs/goslin-webapp-form-02a.png
--------------------------------------------------------------------------------
/docs/goslin-webapp-result-03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lifs-tools/goslin/HEAD/docs/goslin-webapp-result-03.png
--------------------------------------------------------------------------------
/docs/goslin-webapp-result-detail-04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lifs-tools/goslin/HEAD/docs/goslin-webapp-result-detail-04.png
--------------------------------------------------------------------------------
/testfiles/lipidnames-invalid.txt:
--------------------------------------------------------------------------------
1 | PE 18:3:1-16:2
2 | CL 18:1/18:1-18:1-18:1
3 | MLL 18:1-18:1-18:1
4 | M(IP )2C 18:0;3/26:0;1
5 | PET 16:0-18:1
6 | CDPDAG 18:1-18:1-18:1
7 | BeMP 18:1-18:1
8 | PE O18:0a-22:6
9 | GB3 18:1;2-24:1;12
10 | DGDGDG 16:0-16:1
11 | DG 16:0-16:1
12 | LCB 17:1;2/6:0
13 | LP 19:1p
14 | xx2-34
15 | Hex2Cer 18:1;2/12:0/2:0
16 | Cer 18:1;2\\16:0
17 | MAG 16:0-12:0
18 | PC 21:0+22:6
--------------------------------------------------------------------------------
/testfiles/lipidnames.txt:
--------------------------------------------------------------------------------
1 | PE 18:3;1-16:2
2 | PE 16:2-18:3;1
3 | PE 16:2-18:3;1
4 | PE 16:2_18:3;1
5 | PE 16:2/18:3;1
6 | PE 16:2\18:3;1
7 | CL 18:1-18:1-18:1-18:1
8 | MLCL 18:1-18:1-18:1
9 | SHexCer 18:0;3/26:0;1
10 | PEt 16:0-18:1
11 | CDPDAG 18:1-18:1
12 | BMP 18:1-18:1
13 | PE O 18:0a/22:6
14 | GB3 18:1;2/24:1
15 | DGDG 16:0-16:1
16 | LCB 17:1;2
17 | LPE O 19:1p
18 | Hex2Cer 18:1;2/12:0
19 | Cer 18:1;2/16:0
20 | MAG 16:0
21 | PIP2 21:0-22:6
22 | 12-HETE
23 | Palmitic acid
24 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Is your feature request related to a problem? Please describe.**
11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12 |
13 | **Describe the solution you'd like**
14 | A clear and concise description of what you want to happen.
15 |
16 | **Describe alternatives you've considered**
17 | A clear and concise description of any alternative solutions or features you've considered.
18 |
19 | **Additional context**
20 | Add any other context or screenshots about the feature request here.
21 |
--------------------------------------------------------------------------------
/CITATION.cff:
--------------------------------------------------------------------------------
1 | cff-version: 1.2.0
2 | message: "If you use this software, please cite it as below."
3 | authors:
4 | - family-names: Kopczynski
5 | given-names: Dominik
6 | orcid: https://orcid.org/0000-0001-5885-4568
7 | - family-names: Hoffmann
8 | given-names: Nils
9 | orcid: https://orcid.org/0000-0002-6540-6875
10 | - family-names: Peng
11 | given-names: Bing
12 | orcid: https://orcid.org/0000-0001-5006-7041
13 | - family-names: Ahrends
14 | given-names: Robert
15 | orcid: http://orcid.org/0000-0003-0232-3375
16 | title: "Goslin is the Grammar on succinct lipid nomenclature."
17 | version: 1.1.2
18 | date-released: 2020-06-26
19 | identifiers:
20 | - description: "Main Publication: Goslin: A Grammar of Succinct Lipid Nomenclature"
21 | type: doi
22 | value: "10.1021/acs.analchem.0c01690"
23 | license: MIT
24 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Describe the bug**
11 | A clear and concise description of what the bug is.
12 |
13 | **To Reproduce**
14 | Steps to reproduce the behavior:
15 | 1. Go to '...'
16 | 2. Click on '....'
17 | 3. Scroll down to '....'
18 | 4. See error
19 |
20 | **Expected behavior**
21 | A clear and concise description of what you expected to happen.
22 |
23 | **Screenshots**
24 | If applicable, add screenshots to help explain your problem.
25 |
26 | **Desktop (please complete the following information):**
27 | - OS: [e.g. iOS]
28 | - Browser [e.g. chrome, safari]
29 | - Version [e.g. 22]
30 |
31 | **Smartphone (please complete the following information):**
32 | - Device: [e.g. iPhone6]
33 | - OS: [e.g. iOS8.1]
34 | - Browser [e.g. stock browser, safari]
35 | - Version [e.g. 22]
36 |
37 | **Additional context**
38 | Add any other context about the problem here.
39 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 Dominik Kopczynski - dominik.kopczynski {at} univie.ac.at
4 | Nils Hoffmann - nils.hoffmann {at} cebitec.uni-bielefeld.de
5 | Bing Peng - bing.peng {at} ki.se
6 | Robert Ahrends - robert.ahrends {at} univie.ac.at
7 |
8 | Permission is hereby granted, free of charge, to any person obtaining a copy
9 | of this software and associated documentation files (the "Software"), to deal
10 | in the Software without restriction, including without limitation the rights
11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12 | copies of the Software, and to permit persons to whom the Software is
13 | furnished to do so, subject to the following conditions:
14 |
15 | The above copyright notice and this permission notice shall be included in all
16 | copies or substantial portions of the Software.
17 |
18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24 | SOFTWARE.
25 |
--------------------------------------------------------------------------------
/.github/workflows/check-grammars.yml:
--------------------------------------------------------------------------------
1 | # This is a basic workflow to help you get started with Actions
2 |
3 | name: Check Grammars
4 |
5 | # Controls when the workflow will run
6 | on:
7 | # Triggers the workflow on push or pull request events but only for the master branch
8 | push:
9 | branches: [ master ]
10 | pull_request:
11 | branches: [ master ]
12 |
13 | # Allows you to run this workflow manually from the Actions tab
14 | workflow_dispatch:
15 |
16 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel
17 | jobs:
18 | # This workflow contains a single job called "build"
19 | build:
20 | # The type of runner that the job will run on
21 | runs-on: ubuntu-latest
22 |
23 | # Steps represent a sequence of tasks that will be executed as part of the job
24 | steps:
25 | # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
26 | - uses: actions/checkout@v4
27 | - name: Set up JDK 11
28 | uses: actions/setup-java@v4
29 | with:
30 | java-version: '11'
31 | distribution: 'adopt'
32 | cache: 'gradle'
33 | - name: Gradle Build Action
34 | uses: gradle/gradle-build-action@v3.5.0
35 | with:
36 | gradle-version: '7.2'
37 | arguments: build --continue # continue build on task errors to get overview of all tasks
38 | # Includes the AsciiDoctor GitHub Pages Action to convert adoc files to html and publish to gh-pages branch
39 | - name: asciidoctor-ghpages
40 | uses: manoelcampos/asciidoctor-ghpages-action@v2
41 | with:
42 | pdf_build: false
43 | # asciidoctor_params: --attribute=nofooter
44 | # adoc_file_ext: .ascii # default is .adoc
45 | # source_dir: docs/ # default is .
46 | # slides_build: true
47 | # pre_build:
48 | # post_build:
--------------------------------------------------------------------------------
/testfiles/lipidnames.csv:
--------------------------------------------------------------------------------
1 | # regular lipid names on precursor level
2 | LPA 16:1p,LPA 16:1p
3 | LPS 12:0a,LPS 12:0a
4 | LPE O-20:1p,LPE O-20:1p
5 | PE 16:2-18:3;1,PE 16:2-18:3;1
6 | CL 18:1-18:1-18:1-18:1,CL 18:1-18:1-18:1-18:1
7 | MLCL 18:1-18:1-18:1,MLCL 18:1-18:1-18:1
8 | SHexCer 18:0;3/26:0;1,SHexCer 18:0;3/26:0;1
9 | PEt 16:0-18:1,PEt 16:0-18:1
10 | CDPDAG 18:1-18:1,CDPDAG 18:1-18:1
11 | BMP 18:1-18:1,BMP 18:1-18:1
12 | PE O-18:0a/22:6,PE O-18:0a/22:6
13 | Hex3Cer 18:1;2/24:1,Hex3Cer 18:1;2/24:1
14 | DGDG 16:0-16:1,DGDG 16:0-16:1
15 | LCB 17:1;2,LCB 17:1;2
16 | LPE O-19:1p,LPE O-19:1p
17 | Hex2Cer 18:1;2/12:0,Hex2Cer 18:1;2/12:0
18 | Cer 18:1;2/16:0,Cer 18:1;2/16:0
19 | MAG 16:0,MAG 16:0
20 | PIP2 21:0-22:6,PIP2 21:0-22:6
21 | 12-HETE,12-HETE
22 | Palmitic acid,Palmitic acid
23 |
24 | # lipids on precursor level with one heavy labeled building block
25 | HexCer(+[13]C4) 18:1;2/16:0,HexCer(+[13]C4) 18:1;2/16:0
26 | MAG(+[18]O) 16:0,MAG(+[18]O) 16:0
27 | Ch(+[13]C),Ch(+[13]C)
28 | 12-HETE(+[2]H2),12-HETE(+[2]H2)
29 | MAG 16:0(+[18]O),MAG 16:0(+[18]O)
30 | CL 18:1-18:1-18:1(+[13]C18)-18:1,CL 18:1-18:1-18:1(+[13]C18)-18:1
31 | PE O-18:0a/22:6(+[18]O),PE O-18:0a/22:6(+[18]O)
32 | LPE(+[13]C4) O-12:1a,LPE(+[13]C4) O-12:1a
33 | PC(+[13]C4) O-12:1a/10:1,PC(+[13]C4) O-12:1a/10:1
34 |
35 | # lipids on precursor level with several heavy labeled building blocks
36 | CDPDAG(+[18]O13) 18:1(+[13]C18)-18:1(+[13]C18),CDPDAG(+[18]O13) 18:1(+[13]C18)-18:1(+[13]C18)
37 | BMP(+[2]H10[32]P) 18:1-18:1(+[13]C18),BMP(+[2]H10[32]P) 18:1-18:1(+[13]C18)
38 | PE O-18:0a(+[13]C18)/22:6(+[18]O),PE O-18:0a(+[13]C18)/22:6(+[18]O)
39 | PC O-18:0a(+[13]C18)/22:6(+[18]O),PC O-18:0a(+[13]C18)/22:6(+[18]O)
40 | LPE O-18:1p(+[13]C18),LPE O-18:1p(+[13]C18)
41 | LPC O-16:1a(+[13]C16),LPC O-16:1a(+[13]C16)
42 | Hex3Cer(+[2]H30[13]C18) 18:1;2/24:1(+[13]C24),Hex3Cer(+[2]H30[13]C18) 18:1;2/24:1(+[13]C24)
43 | CL 18:1(+[13]C18)-18:1(+[13]C18)-18:1(+[13]C18)-18:1(+[13]C18),CL 18:1(+[13]C18)-18:1(+[13]C18)-18:1(+[13]C18)-18:1(+[13]C18)
44 |
45 |
--------------------------------------------------------------------------------
/SumFormula.g4:
--------------------------------------------------------------------------------
1 | ////////////////////////////////////////////////////////////////////////////////
2 | // MIT License
3 | //
4 | // Copyright (c) the authors (listed in global LICENSE file)
5 | //
6 | // Permission is hereby granted, free of charge, to any person obtaining a copy
7 | // of this software and associated documentation files (the "Software"), to deal
8 | // in the Software without restriction, including without limitation the rights
9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | // copies of the Software, and to permit persons to whom the Software is
11 | // furnished to do so, subject to the following conditions:
12 | //
13 | // The above copyright notice and this permission notice shall be included in all
14 | // copies or substantial portions of the Software.
15 | //
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 | // SOFTWARE.
23 | ////////////////////////////////////////////////////////////////////////////////
24 |
25 | //// This is a BNF grammer for lipid subspecies identifiers followed by
26 | //// J.K. Pauling et al. 2017, PLoS One, 12(11):e0188394.
27 |
28 | grammar SumFormula;
29 |
30 | /* first rule is always start rule */
31 | molecule: molecule_rule EOF;
32 | molecule_rule: molecule_group;
33 | molecule_group: element_group | single_element | molecule_group molecule_group;
34 | element_group: element count;
35 | single_element: element;
36 | element: 'C' | 'H' | 'N' | 'O' | 'P' | 'S' | 'Br' | 'I' | 'F' | 'Cl' | 'As' | 'B';
37 | count: number | '-' number;
38 | number : digit | digit number;
39 | digit: '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9';
40 |
41 |
--------------------------------------------------------------------------------
/functional-groups.csv:
--------------------------------------------------------------------------------
1 | Type,Name,Elements,Double bonds,is atomic,stereo bound,Description,Synonyms,
2 | FG,oxy,O,0,0,0,Alkoxy / ether,,
3 | FG,NH2,NH,0,0,1,Amino,,
4 | FG,COOH,CO2,1,0,1,Carboxyl,,
5 | FG,CN,CNH-1,0,0,1,Cyano,,
6 | FG,Ep,OH-2,1,0,1,Epoxy,,
7 | FG,Et,C2H4,0,0,1,Ethyl,,
8 | FG,OOH,O2,0,0,1,Hydroperoxy,,
9 | FG,OH,O,0,0,1,Hydroxyl,,
10 | FG,OMe,CH2O,0,0,1,Methoxy,,
11 | FG,Me,CH2,0,0,1,Methyl,,
12 | FG,NO2,NO2H-1,1,0,1,Nitro,,
13 | FG,oxo,OH-2,1,0,0,Keto,CHO,Ke
14 | FG,OO,O2,0,0,1,Peroxy,,
15 | FG,Ph,PO4H,0,0,1,Phosphate,,
16 | FG,SH,S,0,0,1,Sulfanyl,,
17 | FG,Su,SO4,0,0,1,Sulfate,,
18 | FG,My,C,1,0,0,Methylene,,
19 | FG,dME,C,0,0,1,Methylen,,
20 | FG,X,O,0,0,0,Hidden,,
21 | FG,d,O-1H-1,0,0,0,Deoxy,,
22 | FG,MMAs,C2H5OAs,1,0,1,Dimethylarsinoyl,,
23 | FG,BOO,C4H8O2,0,0,1,Butylperoxy,,
24 | FG,T,SO3H,0,0,1,,,
25 | FG,G,NH,0,0,1,,,
26 | HGD,Hex,C6H10O6,0,0,0,,,
27 | HGD,Hex2,C12H20O11,0,0,0,,,
28 | HGD,Hex3,C18H30O16,0,0,0,,,
29 | HGD,Lac,C12H20O11,0,0,0,,,
30 | HGD,Gal,C6H10O6,0,0,0,,,
31 | HGD,Glc,C6H10O6,0,0,0,,,
32 | HGD,NeuAc,O9NC11H17,0,0,0,,,
33 | HGD,OAc-NeuAc,O10NC13H19,0,0,0,,,
34 | HGD,SGal,O9H10C6S1,0,0,0,,,
35 | HGD,S(3')Gal,O9H10C6S1,0,0,0,,,
36 | HGD,SHex,O9H10C6S1,0,0,0,,,
37 | HGD,S(3')Hex,O9H10C6S1,0,0,0,,,
38 | HGD,SHex2,C12H20O14S1,0,0,0,,,
39 | HGD,S(3')Hex2,C12H20O14S1,0,0,0,,,
40 | HGD,GlcA,C6O6H8,0,0,0,,,
41 | HGD,HexA,C6O6H8,0,0,0,,,
42 | HGD,HexNAc,C8H13O6N,0,0,0,,,
43 | HGD,GalNAc,C8H13O6N,0,0,0,,,
44 | HGD,GlcNAc,C8H13O6N,0,0,0,,,
45 | HGD,Man,C6H10O6,0,0,0,,,
46 | HGD,Neu,C9H14O8N,0,0,0,,,
47 | HGD,NeuGc,C11H17NO10,0,0,0,,,
48 | HGD,NAc,C6H10O5,0,0,0,,,
49 | HGD,Fuc,C6H10O5,0,0,0,,,
50 | HGD,Kdn,C9H14O9,0,0,0,,,
51 | HGD,KDN,C9H14O9,0,0,0,,,
52 | HGD,Xyl,C29H52O26,0,0,0,,,
53 | HGD,COG,C18H19N5O,0,0,0,,,
54 | HGD,COT,C6H14N2O2,0,0,0,,,
55 | HGD,OGlc,C6H10O5,0,0,0,,,
56 | FG,H,H,0,0,0,,,
57 | HGD,OGlcNAc,,0,0,0,,,
58 | HGD,NeuAc2,,0,0,0,,,
59 | FG,O,O,0,1,0,,,
60 | FG,N,NH,0,1,0,,,
61 | FG,P,PH,0,1,0,,,
62 | FG,S,S,0,1,0,,,
63 | FG,Br,BrH-1,0,1,0,,,
64 | FG,F,FH-1,0,1,0,,,
65 | FG,I,IH-1,0,1,0,,,
66 | FG,Cl,ClH-1,0,1,0,,,
67 | FG,As,AsH-1,0,1,0,,,
68 | FG,B,BH-1,0,1,0,,,
69 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Goslin
2 |
3 |
4 | Goslin is the **G**rammar **o**n **s**uccinct **li**pid **n**omenclature.
5 |
6 | Goslin defines multiple grammers compatible with ANTLRv4 for different sources of shorthand lipid nomenclature. This allows to generate parsers based on the defined grammars, which provide immediate feedback whether a processed lipid shorthand notation string is compliant with a particular grammar, or not.
7 |
8 | [Overview of Goslin and Tutorials](docs/)
9 |
10 | > Goslin 2.0 supports the [updated lipid shorthand nomenclature with new structural levels](https://pubmed.ncbi.nlm.nih.gov/33037133/).
11 |
12 | General information on Goslin is also available on the LIFS Tools [website](https://lifs-tools.org/goslin).
13 |
14 | ## Citing Goslin
15 | If you use Goslin or any of the specific implementations in your work, we kindly ask you to cite the original publication:
16 |
17 | * [D. Kopczynski _et al._,https://lifs.isas.de/tools/goslin **Goslin - A Grammar of Succinct Lipid Nomenclature**, Analytical Chemistry, June 26th, 2020.](https://pubs.acs.org/doi/10.1021/acs.analchem.0c01690) [doi:10.1021/acs.analchem.0c01690](https://doi.org/10.1021/acs.analchem.0c01690)
18 |
19 | If you are using any of the new features of Goslin 2.0, please cite the following, updated Goslin 2.0 publication:
20 |
21 | * [D. Kopczynski _et al._, **Goslin 2.0 Implements the Recent Lipid Shorthand Nomenclature for MS-Derived Lipid Structures**, Analytical Chemistry, April 11th, 2022.](https://pubs.acs.org/doi/full/10.1021/acs.analchem.1c05430) [doi:10.1021/acs.analchem.1c05430](https://doi.org/10.1021/acs.analchem.1c05430)
22 |
23 | ## References
24 | * [D. Kopczynski, N. Hoffmann *et al.*, Analytical Chemistry, April 11th, 2022](https://doi.org/10.1021/acs.analchem.1c05430)
25 | * [D. Kopczynski, N. Hoffmann *et al.*, Analytical Chemistry, June 26th, 2020](https://pubs.acs.org/doi/10.1021/acs.analchem.0c01690)
26 | * [D. Kopczynski, N. Hoffmann *et al.*, Biorxiv, April 20th, 2020 (Preprint)](https://doi.org/10.1101/2020.04.17.046656)
27 |
28 | ## Related Projects
29 |
30 | - [This project](http://github.com/lifs-tools/goslin)
31 | - [C++ implementation](https://github.com/lifs-tools/cppgoslin)
32 | - [C# implementation](https://github.com/lifs-tools/csgoslin)
33 | - [Java implementation](https://github.com/lifs-tools/jgoslin)
34 | - [Python implementation](https://github.com/lifs-tools/pygoslin)
35 | - [R implementation](https://github.com/lifs-tools/rgoslin)
36 | - [Webapplication and REST API](https://github.com/lifs-tools/goslin-webapp)
37 |
38 | ## Test data
39 |
40 | 1. testfiles/lipidmaps-names-Feb-10-2020.tsv - generated from [LipidMAPS LMSDB](https://www.lipidmaps.org/) export on Feb. 10th, 2020. Filtered all entries without an abbreviation.
41 | 2. testfiles/swisslipids-names-Feb-10-2020.tsv - generated from [Swiss Lipids](https://www.swisslipids.org) (lipids table) export on Feb. 10th ,2020.
42 |
43 | Short samples of lipid names used for testing of the implementations are available from the [testfiles directory](testfiles/).
44 |
45 | ## License
46 |
47 | The Goslin grammars are licensed under the terms of the MIT license (see [LICENSE](LICENSE)).
48 |
--------------------------------------------------------------------------------
/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Contributor Covenant Code of Conduct
2 |
3 | ## Our Pledge
4 |
5 | In the interest of fostering an open and welcoming environment, we as
6 | contributors and maintainers pledge to making participation in our project and
7 | our community a harassment-free experience for everyone, regardless of age, body
8 | size, disability, ethnicity, sex characteristics, gender identity and expression,
9 | level of experience, education, socio-economic status, nationality, personal
10 | appearance, race, religion, or sexual identity and orientation.
11 |
12 | ## Our Standards
13 |
14 | Examples of behavior that contributes to creating a positive environment
15 | include:
16 |
17 | * Using welcoming and inclusive language
18 | * Being respectful of differing viewpoints and experiences
19 | * Gracefully accepting constructive criticism
20 | * Focusing on what is best for the community
21 | * Showing empathy towards other community members
22 |
23 | Examples of unacceptable behavior by participants include:
24 |
25 | * The use of sexualized language or imagery and unwelcome sexual attention or
26 | advances
27 | * Trolling, insulting/derogatory comments, and personal or political attacks
28 | * Public or private harassment
29 | * Publishing others' private information, such as a physical or electronic
30 | address, without explicit permission
31 | * Other conduct which could reasonably be considered inappropriate in a
32 | professional setting
33 |
34 | ## Our Responsibilities
35 |
36 | Project maintainers are responsible for clarifying the standards of acceptable
37 | behavior and are expected to take appropriate and fair corrective action in
38 | response to any instances of unacceptable behavior.
39 |
40 | Project maintainers have the right and responsibility to remove, edit, or
41 | reject comments, commits, code, wiki edits, issues, and other contributions
42 | that are not aligned to this Code of Conduct, or to ban temporarily or
43 | permanently any contributor for other behaviors that they deem inappropriate,
44 | threatening, offensive, or harmful.
45 |
46 | ## Scope
47 |
48 | This Code of Conduct applies both within project spaces and in public spaces
49 | when an individual is representing the project or its community. Examples of
50 | representing a project or community include using an official project e-mail
51 | address, posting via an official social media account, or acting as an appointed
52 | representative at an online or offline event. Representation of a project may be
53 | further defined and clarified by project maintainers.
54 |
55 | ## Enforcement
56 |
57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be
58 | reported by contacting the project team at lifs-support@isas.de. All
59 | complaints will be reviewed and investigated and will result in a response that
60 | is deemed necessary and appropriate to the circumstances. The project team is
61 | obligated to maintain confidentiality with regard to the reporter of an incident.
62 | Further details of specific enforcement policies may be posted separately.
63 |
64 | Project maintainers who do not follow or enforce the Code of Conduct in good
65 | faith may face temporary or permanent repercussions as determined by other
66 | members of the project's leadership.
67 |
68 | ## Attribution
69 |
70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71 | available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
72 |
73 | [homepage]: https://www.contributor-covenant.org
74 |
75 | For answers to common questions about this code of conduct, see
76 | https://www.contributor-covenant.org/faq
77 |
--------------------------------------------------------------------------------
/trivial_mediators.csv:
--------------------------------------------------------------------------------
1 | 10-HDoHE 4Z,7Z,11E,13Z,16Z,19Z
2 | 10-HOME 11E
3 | 10-HpOME 8E
4 | 10,17-DiHDoHE 4Z,7Z,11E,13Z,15E,19Z
5 | 10(11)-EpDPE 4Z,7Z,13Z,16Z,19Z
6 | 10R-HOME 11Z
7 | 10R-HpOME 11Z
8 | 10S-HOME 11Z
9 | 10S,17S-DiHDoHE 4Z,7Z,11E,13Z,15E,19Z
10 | 11-HDoHE 4Z,7Z,9E,13Z,16Z,19Z
11 | 11-HEPE 5Z,8Z,12E,14Z,17Z
12 | 11-HETE 5Z,8Z,12E,14Z
13 | 11-HOME 12
14 | 11-HpODE 9Z,12Z
15 | 11-HpOME 9Z
16 | 11,12-EET 5Z,8Z,14Z
17 | 11R-HETE 5Z,8Z,12E,14Z
18 | 11R-HOME 12Z
19 | 11R,12S-EpETrE 5Z,8Z,14Z
20 | 11S-HETE 5Z,8Z,12E,14Z
21 | 11S-HOME 12Z
22 | 11S-HpODE 9Z,12Z
23 | 11S,12R-EpETrE 5Z,8Z,14Z
24 | 12-HEPE 5Z,8Z,10E,14Z,17Z
25 | 12-HETE 5Z,8Z,10E,14Z
26 | 12-HHTrE 5Z,8E,10E
27 | 12-HOME 13
28 | 12-HpOME 13
29 | 12-oxoHT 5Z,8E,10E
30 | 12,13-DiHOME 9Z
31 | 12,13-EpODE 9,11
32 | 12,13-EpOME 9
33 | 12,13S-EOT 9Z,11,15Z
34 | 12,13S-EpODE 9Z,11
35 | 12(13)-EpOME 9Z
36 | 12(S)-HETE 5E,8Z,10Z,14Z
37 | 12R-HETE 5Z,8Z,10E,14Z
38 | 12R-HHTrE 5,8,10
39 | 12R-HODE 9Z,15Z
40 | 12R-HOME 13Z
41 | 12R-HpOME 13
42 | 12S-HETE 5Z,8Z,10E,14Z
43 | 12S-HHTrE 5Z,8E,10E
44 | 12S-HOME 13Z
45 | 12S-HpOME 13
46 | 12S,13R-EpOME 9Z
47 | 13-HDoHE 4Z,7Z,10Z,14E,16Z,19Z
48 | 13-HETE 5Z,8Z,11Z,17Z
49 | 13-HODE 9Z,11E
50 | 13-HOME 11
51 | 13-HOTrE 9,11,15
52 | 13-HpOME 14E
53 | 13-HpOTrE 9,11E,15Z
54 | 13-Oxo-ODE 9Z,11E
55 | 13(14)-EpDPE 4Z,7Z,10Z,16Z,19Z
56 | 13R-HETE 5Z,8Z,11Z,14Z
57 | 13R-HODE 9,11
58 | 13R-HOME 11E
59 | 13R-HpOME 11E
60 | 13S-HODE 9Z,11E
61 | 13S-HOME 11E
62 | 13S-HOTrE 9Z,11E,15Z
63 | 13S-HpODE 9Z,11E
64 | 13S-HpOME 11E
65 | 13S-HpOTrE 9Z,11E,15Z
66 | 14-HDoHE 4Z,7Z,10Z,12E,16Z,19Z
67 | 14-HpOME 12
68 | 14,15-DiHETrE 5Z,8Z,11Z
69 | 14,15-EET 5Z,8Z,11Z
70 | 14,15-EpETrE 5Z,8Z,11Z
71 | 14R-HpOME 12E
72 | 14R,15S-EpETrE 5Z,8Z,11Z
73 | 14S-HpOME 12E
74 | 14S,15R-EpETrE 5Z,8Z,11Z
75 | 15-HETE 5Z,8Z,11Z,13Z
76 | 15-HETrE 8Z,11Z,13E
77 | 15-HpETE 5Z,8Z,11Z,13E
78 | 15-HPETE 5Z,8Z,11Z,13E
79 | 15-oxoETE 5,8,11,13
80 | 15,16-DiHODE 9Z,12Z
81 | 15(R)-HETE 5E,8Z,11Z,13Z
82 | 15R-HETE 5Z,8Z,11E,13Z
83 | 15R-HpETE 5,8,11,13
84 | 15S-HETE 5Z,8Z,11Z,13E
85 | 15S-HpETE 5Z,8Z,11Z,13E
86 | 16-HDoHE 4Z,7Z,10Z,13Z,17E,19Z
87 | 16-HETE 5Z,8Z,11Z,14Z
88 | 16(17)-EpDPE 4Z,7Z,10Z,13Z,19Z
89 | 17-HDoHE 4Z,7Z,10Z,13Z,15E,19Z
90 | 17,18-diHEPE 5Z,8Z,11Z,13E,15E
91 | 17,18-EpETE 5,8,11,14
92 | 17R,18R-diHEPE 5Z,8Z,11Z,13E,15E
93 | 17R,18S-diHEPE 5Z,8Z,11Z,13E,15E
94 | 17R,18S-EpETE 5Z,8Z,11Z,14Z
95 | 19-HETE 5Z,8Z,11Z,14Z
96 | 19(20)-EpDPE 4Z,7Z,10Z,13Z,16Z
97 | 20-HDoHE 4Z,7Z,10Z,13Z,16Z,18E
98 | 20-HETE 5Z,8Z,11Z,14Z
99 | 4-HDoHE 5E,7Z,10Z,13Z,16Z,19Z
100 | 5-HETrE 6E,8Z,11Z
101 | 5-HpETE 6E,8Z,11Z,14Z
102 | 5-HPETE 6E,8Z,11Z,14Z
103 | 5,11-DiHETE 6,8,12,14
104 | 5,12-diHETE 6,8,10,14
105 | 5,12-DiHETE 6,8,10,14
106 | 5,15-DiHETE 6,8,11,13
107 | 5,6-EET 8Z,11Z,14Z
108 | 5,6-EpETrE 8Z,11Z,14Z
109 | 5R-HpETE 6,8,11,14
110 | 5R,6S-EpETrE 8Z,11Z,14Z
111 | 5S-HpETE 6E,8Z,11Z,14Z
112 | 5S,11R-DiHETE 6E,8Z,12E,14Z
113 | 5S,12R-diHETE 6Z,8E,10E,14Z
114 | 5S,6R-EpETrE 8Z,11Z,14Z
115 | 6-HpOME 7E
116 | 7-HDoHE 4Z,7Z,10Z,13Z,15E,19Z
117 | 7-HpOME 5E
118 | 7,8-DiHODE 9Z,12Z
119 | 7,8-DiHOME 9
120 | 7,8-DiHOTrE 9,12,15
121 | 7(8)-EpDPE 4Z,10Z,13Z,16Z,19Z
122 | 7S,8S-DiHODE 9Z,12Z
123 | 7S,8S-DiHOME 9Z
124 | 7S,8S-DiHOTrE 9Z,12Z,15Z
125 | 8-HDoHE 4Z,6E,10Z,13Z,16Z,19Z
126 | 8-HETE 5E,9Z,11Z,14Z
127 | 8-HETrE 9E,11Z,14Z
128 | 8-HODE 9,12
129 | 8-HOME 9
130 | 8-HpETE 5Z,9E,11Z,14Z
131 | 8-HpODE 9,12
132 | 8-HpOME 9
133 | 8,9-EET 5Z,11Z,14Z
134 | 8,9-EpETrE 5Z,11Z,14Z
135 | 8R-HODE 9Z,12Z
136 | 8R-HOME 9Z
137 | 8R-HpETE 5Z,9E,11Z,14Z
138 | 8R-HpODE 9Z,12Z
139 | 8R-HpOME 9Z
140 | 8R,9S-EpETrE 5Z,11Z,14Z
141 | 8S-HODE 9Z,12Z
142 | 8S-HpETE 5Z,9E,11Z,14Z
143 | 8S,9R-EpETrE 5Z,11Z,14Z
144 | 9-HETE 5E,7Z,11Z,14Z
145 | 9-HODE 10E,12Z
146 | 9-HOTrE 10E,12Z,15Z
147 | 9-HpODE 10E,12Z
148 | 9-HpOME 7E
149 | 9-OxoODE 10E,12Z
150 | 9,10-DiHOME 12Z
151 | 9,10-EpOME 12Z
152 | 9(10)-EpOME 12Z
153 | 9R,10S-EpOME 12Z
154 | 9S-HODE 10E,12Z
155 | 9S-HOTrE 10E,12Z,15Z
156 | 9S-HpODE 10E,12Z
157 |
--------------------------------------------------------------------------------
/testfiles/shorthand-test.csv:
--------------------------------------------------------------------------------
1 | PC 18:1(11Z)/16:0,PC 18:1(11)/16:0,PC 18:1/16:0,PC 18:1_16:0,PC 34:1,C42H82NO8P,
2 | "CL O-16:0;3Me,7Me,11Me,15Me/O-16:0;3Me,7Me,11Me,15Me/O-16:0;3Me,7Me,11Me,15Me/O-16:0;3Me,7Me,11Me,15Me",CL O-16:0;(Me)4/O-16:0;(Me)4/O-16:0;(Me)4/O-16:0;(Me)4,CL O-20:0/O-20:0/O-20:0/O-20:0,CL O-20:0_O-20:0_O-20:0_O-20:0,CL eO-80:0,,
3 | PC O-16:0/O-18:1(9Z),PC O-16:0/O-18:1(9),PC O-16:0/O-18:1,PC O-16:0_O-18:1,PC dO-34:1,,
4 | "Cer 18:0;1OH,3OH/16:0",Cer 18:0;(OH)2/16:0,Cer 18:0;O2/16:0,Cer 18:0;O2/16:0,Cer 34:0;O2,,
5 | "IPC(1) 18:1(8E);3OH,4OH/24:0;2OH",IPC 18:1(8);(OH)2/24:0;OH,IPC 18:1;O3/24:0;O,IPC 18:1;O3/24:0;O,IPC 42:1;O4,,
6 | CerP(1) 18:1(4E);3OH/16:0;2OH,CerP 18:1(4);OH/16:0;OH,CerP 18:1;O2/16:0;O,CerP 18:1;O2/16:0;O,CerP 34:1;O3,C34H68NO7P,
7 | Gal-Gal-Glc-Cer(1) 18:1(4E);3OH/26:1(17Z),Gal-Gal-Glc-Cer 18:1(4);OH/26:1(17),Hex3Cer 18:1;O2/26:1,Hex3Cer 18:1;O2/26:1,Hex3Cer 44:2;O2,C62H115NO18,
8 | "PC 16:0/20:2(5Z,13E);[8-12cy5:0;11OH;9oxo];15OH","PC 16:0/20:2(5,13);[cy5:0;OH;oxo];OH",PC 16:0/20:4;O3,PC 16:0_20:4;O3,PC 36:4;O3,,
9 | "PE-N(FA 8:0) 30:5(12Z,15Z,18Z,21Z,24Z)/18:0","PE-N(FA 8:0) 30:5(12,15,18,21,24)/18:0",PE-N(FA 8:0) 30:5/18:0,PE-N(FA 8:0) 30:5_18:0,PE-N(FA) 56:5,C61H110NO9P,
10 | LPC O-16:1(11Z)/0:0,LPC O-16:1(11)/0:0,LPC O-16:1/0:0,LPC O-16:1,LPC O-16:1,,
11 | PE P-16:0/18:1(9Z),PE P-16:0/18:1(9),PE P-16:0/18:1,PE P-16:0_18:1,PE O-34:2,,
12 | PE O-18:1(11E);5OMe/22:0;3OH,PE O-18:1(11);OMe/22:0;OH,PE O-19:1;O/22:0;O,PE O-19:1;O_22:0;O,PE O-41:1;O2,C46H92NO9P,
13 | "M(IP)2C(1) 20:0;3OH,4OH/26:0;2OH",M(IP)2C 20:0;(OH)2/26:0;OH,M(IP)2C 20:0;O3/26:0;O,M(IP)2C 20:0;O3/26:0;O,M(IP)2C 46:0;O4,,
14 | SPB 18:0;3OH,SPB 18:0;OH,SPB 18:0;O,SPB 18:0;O,SPB 18:0;O,,
15 | SPB 18:0;1OH;3oxo,SPB 18:0;OH;oxo,SPB 18:1;O2,SPB 18:1;O2,SPB 18:1;O2,,
16 | PIP(3') 16:0/18:1(9Z),PIP(3') 16:0/18:1(9),PIP(3') 16:0/18:1,PIP(3') 16:0_18:1,PIP 34:1,,
17 | "Cer 18:0;1OH,3OH,4OH/26:0;2OH,3OH",Cer 18:0;(OH)3/26:0;(OH)2,Cer 18:0;O3/26:0;O2,Cer 18:0;O3/26:0;O2,Cer 44:0;O5,,
18 | "Cer 18:1(5Z);1OH,3OH/14:0",Cer 18:1(5);(OH)2/14:0,Cer 18:1;O2/14:0,Cer 18:1;O2/14:0,Cer 32:1;O2,C32H63NO3,
19 | "PIP2(3',5') 17:0/20:4(5Z,8Z,11Z,14Z)","PIP2(3',5') 17:0/20:4(5,8,11,14)","PIP2(3',5') 17:0/20:4","PIP2(3',5') 17:0_20:4",PIP2 37:4,C46H83O19P3,
20 | "PE O-16:0/18:2(9Z,12Z)","PE O-16:0/18:2(9,12)",PE O-16:0/18:2,PE O-16:0_18:2,PE O-34:2,C39H76NO7P,
21 | "PS-N(6:0) 16:0/18:3(9Z,12Z,15Z)","PS-N(6:0) 16:0/18:3(9,12,15)",PS-N(6:0) 16:0/18:3,PS-N(6:0) 16:0_18:3,PS-N(Alk) 40:3,,
22 | TG 16:0;5O(FA 16:0)/18:1(9Z)/18:1(9Z),TG 16:0;O(FA 16:0)/18:1(9)/18:1(9),TG 32:1;O2/18:1/18:1,TG 32:1;O2_18:1_18:1,TG 68:3;O2,,
23 | TG O-18:1(9Z)/O-16:0/O-18:1(9Z),TG O-18:1(9)/O-16:0/O-18:1(9),TG O-18:1/O-16:0/O-18:1,TG O-18:1_O-16:0_O-18:1,TG tO-52:2,,
24 | "FA 22:4(4Z,7Z,10Z,18E);[13-17cy5:0;14OH,16OH];20OH","FA 22:4(4,7,10,18);[cy5:0;(OH)2];OH",FA 22:5;O3,FA 22:5;O3,FA 22:5;O3,C22H34O5,
25 | "FA 20:2(5Z,13E);[8-13cy6:0;9OH,11OH;11oxy];15OH","FA 20:2(5,13);[cy6:0;(OH)2;oxy];OH",FA 20:3;O4,FA 20:3;O4,FA 20:3;O4,C20H34O6,
26 | "FA 20:4(6Z,8E,10E,14Z);5OH,12OH","FA 20:4(6,8,10,14);(OH)2",FA 20:4;O2,FA 20:4;O2,FA 20:4;O2,C20H32O4,
27 | "FA 22:0;4O(FA 10:0),5O(FA 10:0)","FA 22:0;O(FA 10:0),O(FA 10:0)",FA 42:2;O4,FA 42:2;O4,FA 42:2;O4,C42H80O6,
28 | FA 22:0;4O(FA 10:0);5O(10:0),FA 22:0;O(FA 10:0);O(10:0),FA 42:1;O3,FA 42:1;O3,FA 42:1;O3,,
29 | "DG 20:1(11Z)/0:0/22:2(13Z,16Z)","DG 20:1(11)/0:0/22:2(13,16)",DG 20:1/0:0/22:2,DG 20:1_22:2,DG 42:3,C45H82O5,
30 | MG 0:0/O-6:0/0:0,MG 0:0/O-6:0/0:0,MG 0:0/O-6:0/0:0,MG O-6:0,MG O-6:0,C9H20O3,
31 | MG 18:0/0:0/0:0,MG 18:0/0:0/0:0,MG 18:0/0:0/0:0,MG 18:0,MG 18:0,C21H42O4,
32 | "LCL 18:2(9Z,12Z)/18:2(9Z,12Z)/18:2(9Z,12Z)/0:0","LCL 18:2(9,12)/18:2(9,12)/18:2(9,12)/0:0",LCL 18:2/18:2/18:2/0:0,LCL 18:2_18:2_18:2,LCL 54:6,C63H112O16P2,
33 | "MIPC(1) 20:0;3OH,4OH/20:0;2OH",MIPC 20:0;(OH)2/20:0;OH,MIPC 20:0;O3/20:0;O,MIPC 20:0;O3/20:0;O,MIPC 40:0;O4,C52H102NO18P,
34 | LPC 20:1(11Z)/0:0,LPC 20:1(11)/0:0,LPC 20:1/0:0,LPC 20:1,LPC 20:1,C28H56NO7P,
35 | "SPB 18:0;1OH,3OH",SPB 18:0;(OH)2,SPB 18:0;O2,SPB 18:0;O2,SPB 18:0;O2,C18H39NO2,
36 | LPIM1 19:1(9Z)/0:0,LPIM1 19:1(9)/0:0,LPIM1 19:1/0:0,LPIM1 19:1,LPIM1 19:1,C34H63O17P,
37 | "Gal-Glc-Cer(1) 17:1(5E);15Me;3OH,4OH/22:0;2OH",Gal-Glc-Cer 17:1(5);Me;(OH)2/22:0;OH,Hex2Cer 18:1;O3/22:0;O,Hex2Cer 18:1;O3/22:0;O,Hex2Cer 40:1;O4,C52H99NO15,
38 | "Glc-Cer(1) 21:0;[13-15cy3:0];3OH,4OH/22:1(16E);2OH;15oxo",Glc-Cer 21:0;[cy3:0];(OH)2/22:1(16);OH;oxo,HexCer 21:1;O3/22:2;O2,HexCer 21:1;O3/22:2;O2,HexCer 43:3;O5,C49H91NO11,
39 | FA 8:0;[6-8SScy5:0],FA 8:0;[SScy5:0],FA 8:1;S2,FA 8:1;S2,FA 8:1;S2,C8H14O2S2,
40 | "FA 20:0;[12-15Ocy5:2(12E,13E);13Me,14Me]","FA 20:0;[Ocy5:2(12,13);(Me)2]",FA 22:3;O,FA 22:3;O,FA 22:3;O,C22H38O3,
41 | DG O-16:0/0:0/O-16:1(9Z),DG O-16:0/0:0/O-16:1(9),DG O-16:0/0:0/O-16:1,DG O-16:0_O-16:1,DG dO-32:1,C35H70O3,
42 | LPC 0:0/O-18:1(9Z),LPC 0:0/O-18:1(9),LPC 0:0/O-18:1,LPC O-18:1,LPC O-18:1,,
43 | ACer(FA 14:0)(1) 18:1(4E);3OH/16:0,ACer(FA 14:0) 18:1(4);OH/16:0,ACer(FA 14:0) 18:1;O2/16:0,ACer(FA 14:0) 18:1;O2/16:0,ACer(FA) 48:1;O2,C48H93NO4,
44 |
--------------------------------------------------------------------------------
/docs/grammars/HMDB/dark.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Mike Lischke. All rights reserved.
3 | * Licensed under the MIT License. See License.txt in the project root for license information.
4 | */
5 |
6 | /*
7 | * This file contains all default CSS rules for the dark vscode them, used for various diagrams and graphs.
8 | * Use the "antlr4.customCSS" setting in vscode to specify your own file, if you like to override some rules.
9 | *
10 | * Usually most of the appearance is defined in light.css and here we only have some adjustments for
11 | * the dark theme.
12 | */
13 |
14 | /* ATN graphs. */
15 |
16 | body.vscode-dark .marker {
17 | fill: #eee;
18 | stroke: none;
19 | }
20 |
21 | body.vscode-dark .stateLabel {
22 | fill: #202020;
23 | }
24 |
25 | body.vscode-dark .stateTypeLabel {
26 | fill: #404040;
27 | }
28 |
29 | body.vscode-dark .linkLabel {
30 | fill: #ddd;
31 | }
32 |
33 | body.vscode-dark .linkLabel > .heading {
34 | fill: cadetblue;
35 | }
36 |
37 | body.vscode-dark .state {
38 | stroke: white;
39 | filter: url(#white-glow);
40 | }
41 |
42 | /* Railroad diagrams */
43 |
44 | body.vscode-dark .atn-graph-save-image {
45 | background: rgba(206, 11, 70, 1) url('../misc/save-dark.png');
46 | }
47 |
48 | body.vscode-dark .call-graph-save-image {
49 | background: url('../misc/save-svg-dark.svg');
50 | }
51 |
52 | body.vscode-dark .parse-tree-save-image {
53 | background: rgba(49, 112, 212, 1) url('../misc/save-dark.png');
54 | }
55 |
56 | body.vscode-dark svg.railroad-diagram path {
57 | /* The connection lines. */
58 | stroke-width: 2;
59 | stroke: darkgray;
60 | fill: rgba(0, 0, 0, 0);
61 | }
62 |
63 | body.vscode-dark svg.railroad-diagram text {
64 | /* All text except comments. */
65 | font: bold 12px Hack, "Source Code Pro", monospace;
66 | text-anchor: middle;
67 | fill: #404040;
68 | /* Use fill instead of color for svg text. */
69 | }
70 |
71 | body.vscode-dark svg.railroad-diagram text.comment {
72 | /* Comment text */
73 | font: italic 10px Hack, "Source Code Pro", monospace;
74 | fill: #909090;
75 | }
76 |
77 | body.vscode-dark svg.railroad-diagram g.non-terminal rect {
78 | /* The non-terminal boxes. */
79 | stroke-width: 2;
80 | stroke: #404040;
81 | fill: rgba(255, 255, 255, 1);
82 | }
83 |
84 | body.vscode-dark svg.railroad-diagram g.terminal rect {
85 | /* The terminal boxes. */
86 | stroke-width: 2;
87 | stroke: #404040;
88 | fill: rgba(255, 255, 255, 0.7);
89 | }
90 |
91 | body.vscode-dark svg.railroad-diagram text.diagram-text {
92 | /* Multiple choice text, not working atm. */
93 | font-size: 12px Hack, "Source Code Pro", monospace;
94 | fill: red;
95 | }
96 |
97 | body.vscode-dark svg.railroad-diagram path.diagram-text {
98 | /* Multiple choice text, not working atm. */
99 | stroke-width: 1;
100 | stroke: red;
101 | fill: white;
102 | cursor: help;
103 | }
104 |
105 | body.vscode-dark svg.railroad-diagram g.diagram-text:hover path.diagram-text {
106 | /* Multiple choice text, not working atm. */
107 | fill: #f00;
108 | }
109 |
110 | /* Call graphs */
111 |
112 | body.vscode-dark .node-source {
113 | fill: #e6db74;
114 | }
115 |
116 | body.vscode-dark .node-target {
117 | fill: #45aa73;
118 | }
119 |
120 | body.vscode-dark .module-1 {
121 | fill: #0ca9fd;
122 | }
123 |
124 | body.vscode-dark .module-2 {
125 | fill: #63bf8d;
126 | }
127 |
128 | body.vscode-dark .module-3 {
129 | fill: #ff8801;
130 | }
131 |
132 | body.vscode-dark .module-4 {
133 | fill: #b9fc34;
134 | }
135 |
136 | body.vscode-dark .module-5 {
137 | fill: #90e0e0;
138 | }
139 |
140 | body.vscode-dark .module-6 {
141 | fill: #b4a3f5;
142 | }
143 |
144 | body.vscode-dark .module-7 {
145 | fill: #f92672;
146 | }
147 |
148 | body.vscode-dark .module-8 {
149 | fill: #e9e901;
150 | }
151 |
152 | body.vscode-dark .module-9 {
153 | fill: #83be69;
154 | }
155 |
156 | body.vscode-dark .module-10 {
157 | fill: #f1d18c;
158 | }
159 |
160 | body.vscode-dark .node:hover {
161 | fill: #fff;
162 | }
163 |
164 | body.vscode-dark .node-source {
165 | fill: #ff5711;
166 | }
167 |
168 | body.vscode-dark .node-target {
169 | fill: #45aa73;
170 | }
171 |
172 | body.vscode-dark .link-source,
173 | body.vscode-dark .link-target {
174 | stroke-opacity: 1;
175 | stroke-width: 2px;
176 | }
177 |
178 | body.vscode-dark .link {
179 | stroke: #fff;
180 | stroke-opacity: .2;
181 | fill: none;
182 | pointer-events: none;
183 | }
184 |
185 | body.vscode-dark .link-source {
186 | stroke-opacity: 1;
187 | stroke-width: 2px;
188 | stroke: #45aa73;
189 | }
190 |
191 | body.vscode-dark .link-target {
192 | stroke-opacity: 1;
193 | stroke-width: 2px;
194 | stroke: #ff5711;
195 | }
196 |
197 | body.vscode-dark .link-dimmed {
198 | stroke-opacity: 0.075;
199 | }
200 |
201 | /* Parse trees */
202 | body.vscode-dark .tree-node {
203 | stroke-width: 2;
204 | stroke: #404040;
205 | fill: rgba(255, 255, 255, 1);
206 | }
207 |
208 | body.vscode-dark g .tree-root {
209 | stroke-width: 2;
210 | fill: #3a3c37;
211 | stroke: #ffffff;
212 | }
213 |
214 | body.vscode-dark g .tree-leaf {
215 | stroke-width: 2;
216 | fill: #828e66;
217 | stroke: #ffffff;
218 | }
219 |
220 | body.vscode-dark g .tree-error {
221 | stroke-width: 2;
222 | fill: rgb(187, 43, 33);
223 | stroke: #ffffff;
224 | }
225 |
226 | body.vscode-dark g .token-value {
227 | fill: white;
228 | stroke: none;
229 | font: 12pt "Source Code Pro", "Hack", "Consolas", "Andale Mono", monospace;
230 | }
231 |
232 | body.vscode-dark g .token-range {
233 | fill: #bb832c;
234 | stroke: none;
235 | font: 8pt "Source Code Pro", "Hack", "Consolas", "Andale Mono", monospace;
236 | }
237 |
238 | body.vscode-dark .saveSVGButton {
239 | background-image: url(./save-svg-dark.svg);
240 | }
241 |
242 | body.vscode-dark .saveHTMLButton {
243 | background-image: url(./save-html-dark.svg);
244 | }
245 |
246 | body.vscode-dark .rrdIcon {
247 | background-image: url(./rrd-dark.svg);
248 | }
249 |
250 | body.vscode-dark .atnIcon {
251 | background-image: url(./atn-dark.png);
252 | }
253 |
--------------------------------------------------------------------------------
/docs/grammars/FattyAcids/dark.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Mike Lischke. All rights reserved.
3 | * Licensed under the MIT License. See License.txt in the project root for license information.
4 | */
5 |
6 | /*
7 | * This file contains all default CSS rules for the dark vscode them, used for various diagrams and graphs.
8 | * Use the "antlr4.customCSS" setting in vscode to specify your own file, if you like to override some rules.
9 | *
10 | * Usually most of the appearance is defined in light.css and here we only have some adjustments for
11 | * the dark theme.
12 | */
13 |
14 | /* ATN graphs. */
15 |
16 | body.vscode-dark .marker {
17 | fill: #eee;
18 | stroke: none;
19 | }
20 |
21 | body.vscode-dark .stateLabel {
22 | fill: #202020;
23 | }
24 |
25 | body.vscode-dark .stateTypeLabel {
26 | fill: #404040;
27 | }
28 |
29 | body.vscode-dark .linkLabel {
30 | fill: #ddd;
31 | }
32 |
33 | body.vscode-dark .linkLabel > .heading {
34 | fill: cadetblue;
35 | }
36 |
37 | body.vscode-dark .state {
38 | stroke: white;
39 | filter: url(#white-glow);
40 | }
41 |
42 | /* Railroad diagrams */
43 |
44 | body.vscode-dark .atn-graph-save-image {
45 | background: rgba(206, 11, 70, 1) url('../misc/save-dark.png');
46 | }
47 |
48 | body.vscode-dark .call-graph-save-image {
49 | background: url('../misc/save-svg-dark.svg');
50 | }
51 |
52 | body.vscode-dark .parse-tree-save-image {
53 | background: rgba(49, 112, 212, 1) url('../misc/save-dark.png');
54 | }
55 |
56 | body.vscode-dark svg.railroad-diagram path {
57 | /* The connection lines. */
58 | stroke-width: 2;
59 | stroke: darkgray;
60 | fill: rgba(0, 0, 0, 0);
61 | }
62 |
63 | body.vscode-dark svg.railroad-diagram text {
64 | /* All text except comments. */
65 | font: bold 12px Hack, "Source Code Pro", monospace;
66 | text-anchor: middle;
67 | fill: #404040;
68 | /* Use fill instead of color for svg text. */
69 | }
70 |
71 | body.vscode-dark svg.railroad-diagram text.comment {
72 | /* Comment text */
73 | font: italic 10px Hack, "Source Code Pro", monospace;
74 | fill: #909090;
75 | }
76 |
77 | body.vscode-dark svg.railroad-diagram g.non-terminal rect {
78 | /* The non-terminal boxes. */
79 | stroke-width: 2;
80 | stroke: #404040;
81 | fill: rgba(255, 255, 255, 1);
82 | }
83 |
84 | body.vscode-dark svg.railroad-diagram g.terminal rect {
85 | /* The terminal boxes. */
86 | stroke-width: 2;
87 | stroke: #404040;
88 | fill: rgba(255, 255, 255, 0.7);
89 | }
90 |
91 | body.vscode-dark svg.railroad-diagram text.diagram-text {
92 | /* Multiple choice text, not working atm. */
93 | font-size: 12px Hack, "Source Code Pro", monospace;
94 | fill: red;
95 | }
96 |
97 | body.vscode-dark svg.railroad-diagram path.diagram-text {
98 | /* Multiple choice text, not working atm. */
99 | stroke-width: 1;
100 | stroke: red;
101 | fill: white;
102 | cursor: help;
103 | }
104 |
105 | body.vscode-dark svg.railroad-diagram g.diagram-text:hover path.diagram-text {
106 | /* Multiple choice text, not working atm. */
107 | fill: #f00;
108 | }
109 |
110 | /* Call graphs */
111 |
112 | body.vscode-dark .node-source {
113 | fill: #e6db74;
114 | }
115 |
116 | body.vscode-dark .node-target {
117 | fill: #45aa73;
118 | }
119 |
120 | body.vscode-dark .module-1 {
121 | fill: #0ca9fd;
122 | }
123 |
124 | body.vscode-dark .module-2 {
125 | fill: #63bf8d;
126 | }
127 |
128 | body.vscode-dark .module-3 {
129 | fill: #ff8801;
130 | }
131 |
132 | body.vscode-dark .module-4 {
133 | fill: #b9fc34;
134 | }
135 |
136 | body.vscode-dark .module-5 {
137 | fill: #90e0e0;
138 | }
139 |
140 | body.vscode-dark .module-6 {
141 | fill: #b4a3f5;
142 | }
143 |
144 | body.vscode-dark .module-7 {
145 | fill: #f92672;
146 | }
147 |
148 | body.vscode-dark .module-8 {
149 | fill: #e9e901;
150 | }
151 |
152 | body.vscode-dark .module-9 {
153 | fill: #83be69;
154 | }
155 |
156 | body.vscode-dark .module-10 {
157 | fill: #f1d18c;
158 | }
159 |
160 | body.vscode-dark .node:hover {
161 | fill: #fff;
162 | }
163 |
164 | body.vscode-dark .node-source {
165 | fill: #ff5711;
166 | }
167 |
168 | body.vscode-dark .node-target {
169 | fill: #45aa73;
170 | }
171 |
172 | body.vscode-dark .link-source,
173 | body.vscode-dark .link-target {
174 | stroke-opacity: 1;
175 | stroke-width: 2px;
176 | }
177 |
178 | body.vscode-dark .link {
179 | stroke: #fff;
180 | stroke-opacity: .2;
181 | fill: none;
182 | pointer-events: none;
183 | }
184 |
185 | body.vscode-dark .link-source {
186 | stroke-opacity: 1;
187 | stroke-width: 2px;
188 | stroke: #45aa73;
189 | }
190 |
191 | body.vscode-dark .link-target {
192 | stroke-opacity: 1;
193 | stroke-width: 2px;
194 | stroke: #ff5711;
195 | }
196 |
197 | body.vscode-dark .link-dimmed {
198 | stroke-opacity: 0.075;
199 | }
200 |
201 | /* Parse trees */
202 | body.vscode-dark .tree-node {
203 | stroke-width: 2;
204 | stroke: #404040;
205 | fill: rgba(255, 255, 255, 1);
206 | }
207 |
208 | body.vscode-dark g .tree-root {
209 | stroke-width: 2;
210 | fill: #3a3c37;
211 | stroke: #ffffff;
212 | }
213 |
214 | body.vscode-dark g .tree-leaf {
215 | stroke-width: 2;
216 | fill: #828e66;
217 | stroke: #ffffff;
218 | }
219 |
220 | body.vscode-dark g .tree-error {
221 | stroke-width: 2;
222 | fill: rgb(187, 43, 33);
223 | stroke: #ffffff;
224 | }
225 |
226 | body.vscode-dark g .token-value {
227 | fill: white;
228 | stroke: none;
229 | font: 12pt "Source Code Pro", "Hack", "Consolas", "Andale Mono", monospace;
230 | }
231 |
232 | body.vscode-dark g .token-range {
233 | fill: #bb832c;
234 | stroke: none;
235 | font: 8pt "Source Code Pro", "Hack", "Consolas", "Andale Mono", monospace;
236 | }
237 |
238 | body.vscode-dark .saveSVGButton {
239 | background-image: url(./save-svg-dark.svg);
240 | }
241 |
242 | body.vscode-dark .saveHTMLButton {
243 | background-image: url(./save-html-dark.svg);
244 | }
245 |
246 | body.vscode-dark .rrdIcon {
247 | background-image: url(./rrd-dark.svg);
248 | }
249 |
250 | body.vscode-dark .atnIcon {
251 | background-image: url(./atn-dark.png);
252 | }
253 |
--------------------------------------------------------------------------------
/docs/grammars/Goslin/dark.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Mike Lischke. All rights reserved.
3 | * Licensed under the MIT License. See License.txt in the project root for license information.
4 | */
5 |
6 | /*
7 | * This file contains all default CSS rules for the dark vscode them, used for various diagrams and graphs.
8 | * Use the "antlr4.customCSS" setting in vscode to specify your own file, if you like to override some rules.
9 | *
10 | * Usually most of the appearance is defined in light.css and here we only have some adjustments for
11 | * the dark theme.
12 | */
13 |
14 | /* ATN graphs. */
15 |
16 | body.vscode-dark .marker {
17 | fill: #eee;
18 | stroke: none;
19 | }
20 |
21 | body.vscode-dark .stateLabel {
22 | fill: #202020;
23 | }
24 |
25 | body.vscode-dark .stateTypeLabel {
26 | fill: #404040;
27 | }
28 |
29 | body.vscode-dark .linkLabel {
30 | fill: #ddd;
31 | }
32 |
33 | body.vscode-dark .linkLabel > .heading {
34 | fill: cadetblue;
35 | }
36 |
37 | body.vscode-dark .state {
38 | stroke: white;
39 | filter: url(#white-glow);
40 | }
41 |
42 | /* Railroad diagrams */
43 |
44 | body.vscode-dark .atn-graph-save-image {
45 | background: rgba(206, 11, 70, 1) url('../misc/save-dark.png');
46 | }
47 |
48 | body.vscode-dark .call-graph-save-image {
49 | background: url('../misc/save-svg-dark.svg');
50 | }
51 |
52 | body.vscode-dark .parse-tree-save-image {
53 | background: rgba(49, 112, 212, 1) url('../misc/save-dark.png');
54 | }
55 |
56 | body.vscode-dark svg.railroad-diagram path {
57 | /* The connection lines. */
58 | stroke-width: 2;
59 | stroke: darkgray;
60 | fill: rgba(0, 0, 0, 0);
61 | }
62 |
63 | body.vscode-dark svg.railroad-diagram text {
64 | /* All text except comments. */
65 | font: bold 12px Hack, "Source Code Pro", monospace;
66 | text-anchor: middle;
67 | fill: #404040;
68 | /* Use fill instead of color for svg text. */
69 | }
70 |
71 | body.vscode-dark svg.railroad-diagram text.comment {
72 | /* Comment text */
73 | font: italic 10px Hack, "Source Code Pro", monospace;
74 | fill: #909090;
75 | }
76 |
77 | body.vscode-dark svg.railroad-diagram g.non-terminal rect {
78 | /* The non-terminal boxes. */
79 | stroke-width: 2;
80 | stroke: #404040;
81 | fill: rgba(255, 255, 255, 1);
82 | }
83 |
84 | body.vscode-dark svg.railroad-diagram g.terminal rect {
85 | /* The terminal boxes. */
86 | stroke-width: 2;
87 | stroke: #404040;
88 | fill: rgba(255, 255, 255, 0.7);
89 | }
90 |
91 | body.vscode-dark svg.railroad-diagram text.diagram-text {
92 | /* Multiple choice text, not working atm. */
93 | font-size: 12px Hack, "Source Code Pro", monospace;
94 | fill: red;
95 | }
96 |
97 | body.vscode-dark svg.railroad-diagram path.diagram-text {
98 | /* Multiple choice text, not working atm. */
99 | stroke-width: 1;
100 | stroke: red;
101 | fill: white;
102 | cursor: help;
103 | }
104 |
105 | body.vscode-dark svg.railroad-diagram g.diagram-text:hover path.diagram-text {
106 | /* Multiple choice text, not working atm. */
107 | fill: #f00;
108 | }
109 |
110 | /* Call graphs */
111 |
112 | body.vscode-dark .node-source {
113 | fill: #e6db74;
114 | }
115 |
116 | body.vscode-dark .node-target {
117 | fill: #45aa73;
118 | }
119 |
120 | body.vscode-dark .module-1 {
121 | fill: #0ca9fd;
122 | }
123 |
124 | body.vscode-dark .module-2 {
125 | fill: #63bf8d;
126 | }
127 |
128 | body.vscode-dark .module-3 {
129 | fill: #ff8801;
130 | }
131 |
132 | body.vscode-dark .module-4 {
133 | fill: #b9fc34;
134 | }
135 |
136 | body.vscode-dark .module-5 {
137 | fill: #90e0e0;
138 | }
139 |
140 | body.vscode-dark .module-6 {
141 | fill: #b4a3f5;
142 | }
143 |
144 | body.vscode-dark .module-7 {
145 | fill: #f92672;
146 | }
147 |
148 | body.vscode-dark .module-8 {
149 | fill: #e9e901;
150 | }
151 |
152 | body.vscode-dark .module-9 {
153 | fill: #83be69;
154 | }
155 |
156 | body.vscode-dark .module-10 {
157 | fill: #f1d18c;
158 | }
159 |
160 | body.vscode-dark .node:hover {
161 | fill: #fff;
162 | }
163 |
164 | body.vscode-dark .node-source {
165 | fill: #ff5711;
166 | }
167 |
168 | body.vscode-dark .node-target {
169 | fill: #45aa73;
170 | }
171 |
172 | body.vscode-dark .link-source,
173 | body.vscode-dark .link-target {
174 | stroke-opacity: 1;
175 | stroke-width: 2px;
176 | }
177 |
178 | body.vscode-dark .link {
179 | stroke: #fff;
180 | stroke-opacity: .2;
181 | fill: none;
182 | pointer-events: none;
183 | }
184 |
185 | body.vscode-dark .link-source {
186 | stroke-opacity: 1;
187 | stroke-width: 2px;
188 | stroke: #45aa73;
189 | }
190 |
191 | body.vscode-dark .link-target {
192 | stroke-opacity: 1;
193 | stroke-width: 2px;
194 | stroke: #ff5711;
195 | }
196 |
197 | body.vscode-dark .link-dimmed {
198 | stroke-opacity: 0.075;
199 | }
200 |
201 | /* Parse trees */
202 | body.vscode-dark .tree-node {
203 | stroke-width: 2;
204 | stroke: #404040;
205 | fill: rgba(255, 255, 255, 1);
206 | }
207 |
208 | body.vscode-dark g .tree-root {
209 | stroke-width: 2;
210 | fill: #3a3c37;
211 | stroke: #ffffff;
212 | }
213 |
214 | body.vscode-dark g .tree-leaf {
215 | stroke-width: 2;
216 | fill: #828e66;
217 | stroke: #ffffff;
218 | }
219 |
220 | body.vscode-dark g .tree-error {
221 | stroke-width: 2;
222 | fill: rgb(187, 43, 33);
223 | stroke: #ffffff;
224 | }
225 |
226 | body.vscode-dark g .token-value {
227 | fill: white;
228 | stroke: none;
229 | font: 12pt "Source Code Pro", "Hack", "Consolas", "Andale Mono", monospace;
230 | }
231 |
232 | body.vscode-dark g .token-range {
233 | fill: #bb832c;
234 | stroke: none;
235 | font: 8pt "Source Code Pro", "Hack", "Consolas", "Andale Mono", monospace;
236 | }
237 |
238 | body.vscode-dark .saveSVGButton {
239 | background-image: url(./save-svg-dark.svg);
240 | }
241 |
242 | body.vscode-dark .saveHTMLButton {
243 | background-image: url(./save-html-dark.svg);
244 | }
245 |
246 | body.vscode-dark .rrdIcon {
247 | background-image: url(./rrd-dark.svg);
248 | }
249 |
250 | body.vscode-dark .atnIcon {
251 | background-image: url(./atn-dark.png);
252 | }
253 |
--------------------------------------------------------------------------------
/docs/grammars/LipidMaps/dark.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Mike Lischke. All rights reserved.
3 | * Licensed under the MIT License. See License.txt in the project root for license information.
4 | */
5 |
6 | /*
7 | * This file contains all default CSS rules for the dark vscode them, used for various diagrams and graphs.
8 | * Use the "antlr4.customCSS" setting in vscode to specify your own file, if you like to override some rules.
9 | *
10 | * Usually most of the appearance is defined in light.css and here we only have some adjustments for
11 | * the dark theme.
12 | */
13 |
14 | /* ATN graphs. */
15 |
16 | body.vscode-dark .marker {
17 | fill: #eee;
18 | stroke: none;
19 | }
20 |
21 | body.vscode-dark .stateLabel {
22 | fill: #202020;
23 | }
24 |
25 | body.vscode-dark .stateTypeLabel {
26 | fill: #404040;
27 | }
28 |
29 | body.vscode-dark .linkLabel {
30 | fill: #ddd;
31 | }
32 |
33 | body.vscode-dark .linkLabel > .heading {
34 | fill: cadetblue;
35 | }
36 |
37 | body.vscode-dark .state {
38 | stroke: white;
39 | filter: url(#white-glow);
40 | }
41 |
42 | /* Railroad diagrams */
43 |
44 | body.vscode-dark .atn-graph-save-image {
45 | background: rgba(206, 11, 70, 1) url('../misc/save-dark.png');
46 | }
47 |
48 | body.vscode-dark .call-graph-save-image {
49 | background: url('../misc/save-svg-dark.svg');
50 | }
51 |
52 | body.vscode-dark .parse-tree-save-image {
53 | background: rgba(49, 112, 212, 1) url('../misc/save-dark.png');
54 | }
55 |
56 | body.vscode-dark svg.railroad-diagram path {
57 | /* The connection lines. */
58 | stroke-width: 2;
59 | stroke: darkgray;
60 | fill: rgba(0, 0, 0, 0);
61 | }
62 |
63 | body.vscode-dark svg.railroad-diagram text {
64 | /* All text except comments. */
65 | font: bold 12px Hack, "Source Code Pro", monospace;
66 | text-anchor: middle;
67 | fill: #404040;
68 | /* Use fill instead of color for svg text. */
69 | }
70 |
71 | body.vscode-dark svg.railroad-diagram text.comment {
72 | /* Comment text */
73 | font: italic 10px Hack, "Source Code Pro", monospace;
74 | fill: #909090;
75 | }
76 |
77 | body.vscode-dark svg.railroad-diagram g.non-terminal rect {
78 | /* The non-terminal boxes. */
79 | stroke-width: 2;
80 | stroke: #404040;
81 | fill: rgba(255, 255, 255, 1);
82 | }
83 |
84 | body.vscode-dark svg.railroad-diagram g.terminal rect {
85 | /* The terminal boxes. */
86 | stroke-width: 2;
87 | stroke: #404040;
88 | fill: rgba(255, 255, 255, 0.7);
89 | }
90 |
91 | body.vscode-dark svg.railroad-diagram text.diagram-text {
92 | /* Multiple choice text, not working atm. */
93 | font-size: 12px Hack, "Source Code Pro", monospace;
94 | fill: red;
95 | }
96 |
97 | body.vscode-dark svg.railroad-diagram path.diagram-text {
98 | /* Multiple choice text, not working atm. */
99 | stroke-width: 1;
100 | stroke: red;
101 | fill: white;
102 | cursor: help;
103 | }
104 |
105 | body.vscode-dark svg.railroad-diagram g.diagram-text:hover path.diagram-text {
106 | /* Multiple choice text, not working atm. */
107 | fill: #f00;
108 | }
109 |
110 | /* Call graphs */
111 |
112 | body.vscode-dark .node-source {
113 | fill: #e6db74;
114 | }
115 |
116 | body.vscode-dark .node-target {
117 | fill: #45aa73;
118 | }
119 |
120 | body.vscode-dark .module-1 {
121 | fill: #0ca9fd;
122 | }
123 |
124 | body.vscode-dark .module-2 {
125 | fill: #63bf8d;
126 | }
127 |
128 | body.vscode-dark .module-3 {
129 | fill: #ff8801;
130 | }
131 |
132 | body.vscode-dark .module-4 {
133 | fill: #b9fc34;
134 | }
135 |
136 | body.vscode-dark .module-5 {
137 | fill: #90e0e0;
138 | }
139 |
140 | body.vscode-dark .module-6 {
141 | fill: #b4a3f5;
142 | }
143 |
144 | body.vscode-dark .module-7 {
145 | fill: #f92672;
146 | }
147 |
148 | body.vscode-dark .module-8 {
149 | fill: #e9e901;
150 | }
151 |
152 | body.vscode-dark .module-9 {
153 | fill: #83be69;
154 | }
155 |
156 | body.vscode-dark .module-10 {
157 | fill: #f1d18c;
158 | }
159 |
160 | body.vscode-dark .node:hover {
161 | fill: #fff;
162 | }
163 |
164 | body.vscode-dark .node-source {
165 | fill: #ff5711;
166 | }
167 |
168 | body.vscode-dark .node-target {
169 | fill: #45aa73;
170 | }
171 |
172 | body.vscode-dark .link-source,
173 | body.vscode-dark .link-target {
174 | stroke-opacity: 1;
175 | stroke-width: 2px;
176 | }
177 |
178 | body.vscode-dark .link {
179 | stroke: #fff;
180 | stroke-opacity: .2;
181 | fill: none;
182 | pointer-events: none;
183 | }
184 |
185 | body.vscode-dark .link-source {
186 | stroke-opacity: 1;
187 | stroke-width: 2px;
188 | stroke: #45aa73;
189 | }
190 |
191 | body.vscode-dark .link-target {
192 | stroke-opacity: 1;
193 | stroke-width: 2px;
194 | stroke: #ff5711;
195 | }
196 |
197 | body.vscode-dark .link-dimmed {
198 | stroke-opacity: 0.075;
199 | }
200 |
201 | /* Parse trees */
202 | body.vscode-dark .tree-node {
203 | stroke-width: 2;
204 | stroke: #404040;
205 | fill: rgba(255, 255, 255, 1);
206 | }
207 |
208 | body.vscode-dark g .tree-root {
209 | stroke-width: 2;
210 | fill: #3a3c37;
211 | stroke: #ffffff;
212 | }
213 |
214 | body.vscode-dark g .tree-leaf {
215 | stroke-width: 2;
216 | fill: #828e66;
217 | stroke: #ffffff;
218 | }
219 |
220 | body.vscode-dark g .tree-error {
221 | stroke-width: 2;
222 | fill: rgb(187, 43, 33);
223 | stroke: #ffffff;
224 | }
225 |
226 | body.vscode-dark g .token-value {
227 | fill: white;
228 | stroke: none;
229 | font: 12pt "Source Code Pro", "Hack", "Consolas", "Andale Mono", monospace;
230 | }
231 |
232 | body.vscode-dark g .token-range {
233 | fill: #bb832c;
234 | stroke: none;
235 | font: 8pt "Source Code Pro", "Hack", "Consolas", "Andale Mono", monospace;
236 | }
237 |
238 | body.vscode-dark .saveSVGButton {
239 | background-image: url(./save-svg-dark.svg);
240 | }
241 |
242 | body.vscode-dark .saveHTMLButton {
243 | background-image: url(./save-html-dark.svg);
244 | }
245 |
246 | body.vscode-dark .rrdIcon {
247 | background-image: url(./rrd-dark.svg);
248 | }
249 |
250 | body.vscode-dark .atnIcon {
251 | background-image: url(./atn-dark.png);
252 | }
253 |
--------------------------------------------------------------------------------
/docs/grammars/SumFormula/dark.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Mike Lischke. All rights reserved.
3 | * Licensed under the MIT License. See License.txt in the project root for license information.
4 | */
5 |
6 | /*
7 | * This file contains all default CSS rules for the dark vscode them, used for various diagrams and graphs.
8 | * Use the "antlr4.customCSS" setting in vscode to specify your own file, if you like to override some rules.
9 | *
10 | * Usually most of the appearance is defined in light.css and here we only have some adjustments for
11 | * the dark theme.
12 | */
13 |
14 | /* ATN graphs. */
15 |
16 | body.vscode-dark .marker {
17 | fill: #eee;
18 | stroke: none;
19 | }
20 |
21 | body.vscode-dark .stateLabel {
22 | fill: #202020;
23 | }
24 |
25 | body.vscode-dark .stateTypeLabel {
26 | fill: #404040;
27 | }
28 |
29 | body.vscode-dark .linkLabel {
30 | fill: #ddd;
31 | }
32 |
33 | body.vscode-dark .linkLabel > .heading {
34 | fill: cadetblue;
35 | }
36 |
37 | body.vscode-dark .state {
38 | stroke: white;
39 | filter: url(#white-glow);
40 | }
41 |
42 | /* Railroad diagrams */
43 |
44 | body.vscode-dark .atn-graph-save-image {
45 | background: rgba(206, 11, 70, 1) url('../misc/save-dark.png');
46 | }
47 |
48 | body.vscode-dark .call-graph-save-image {
49 | background: url('../misc/save-svg-dark.svg');
50 | }
51 |
52 | body.vscode-dark .parse-tree-save-image {
53 | background: rgba(49, 112, 212, 1) url('../misc/save-dark.png');
54 | }
55 |
56 | body.vscode-dark svg.railroad-diagram path {
57 | /* The connection lines. */
58 | stroke-width: 2;
59 | stroke: darkgray;
60 | fill: rgba(0, 0, 0, 0);
61 | }
62 |
63 | body.vscode-dark svg.railroad-diagram text {
64 | /* All text except comments. */
65 | font: bold 12px Hack, "Source Code Pro", monospace;
66 | text-anchor: middle;
67 | fill: #404040;
68 | /* Use fill instead of color for svg text. */
69 | }
70 |
71 | body.vscode-dark svg.railroad-diagram text.comment {
72 | /* Comment text */
73 | font: italic 10px Hack, "Source Code Pro", monospace;
74 | fill: #909090;
75 | }
76 |
77 | body.vscode-dark svg.railroad-diagram g.non-terminal rect {
78 | /* The non-terminal boxes. */
79 | stroke-width: 2;
80 | stroke: #404040;
81 | fill: rgba(255, 255, 255, 1);
82 | }
83 |
84 | body.vscode-dark svg.railroad-diagram g.terminal rect {
85 | /* The terminal boxes. */
86 | stroke-width: 2;
87 | stroke: #404040;
88 | fill: rgba(255, 255, 255, 0.7);
89 | }
90 |
91 | body.vscode-dark svg.railroad-diagram text.diagram-text {
92 | /* Multiple choice text, not working atm. */
93 | font-size: 12px Hack, "Source Code Pro", monospace;
94 | fill: red;
95 | }
96 |
97 | body.vscode-dark svg.railroad-diagram path.diagram-text {
98 | /* Multiple choice text, not working atm. */
99 | stroke-width: 1;
100 | stroke: red;
101 | fill: white;
102 | cursor: help;
103 | }
104 |
105 | body.vscode-dark svg.railroad-diagram g.diagram-text:hover path.diagram-text {
106 | /* Multiple choice text, not working atm. */
107 | fill: #f00;
108 | }
109 |
110 | /* Call graphs */
111 |
112 | body.vscode-dark .node-source {
113 | fill: #e6db74;
114 | }
115 |
116 | body.vscode-dark .node-target {
117 | fill: #45aa73;
118 | }
119 |
120 | body.vscode-dark .module-1 {
121 | fill: #0ca9fd;
122 | }
123 |
124 | body.vscode-dark .module-2 {
125 | fill: #63bf8d;
126 | }
127 |
128 | body.vscode-dark .module-3 {
129 | fill: #ff8801;
130 | }
131 |
132 | body.vscode-dark .module-4 {
133 | fill: #b9fc34;
134 | }
135 |
136 | body.vscode-dark .module-5 {
137 | fill: #90e0e0;
138 | }
139 |
140 | body.vscode-dark .module-6 {
141 | fill: #b4a3f5;
142 | }
143 |
144 | body.vscode-dark .module-7 {
145 | fill: #f92672;
146 | }
147 |
148 | body.vscode-dark .module-8 {
149 | fill: #e9e901;
150 | }
151 |
152 | body.vscode-dark .module-9 {
153 | fill: #83be69;
154 | }
155 |
156 | body.vscode-dark .module-10 {
157 | fill: #f1d18c;
158 | }
159 |
160 | body.vscode-dark .node:hover {
161 | fill: #fff;
162 | }
163 |
164 | body.vscode-dark .node-source {
165 | fill: #ff5711;
166 | }
167 |
168 | body.vscode-dark .node-target {
169 | fill: #45aa73;
170 | }
171 |
172 | body.vscode-dark .link-source,
173 | body.vscode-dark .link-target {
174 | stroke-opacity: 1;
175 | stroke-width: 2px;
176 | }
177 |
178 | body.vscode-dark .link {
179 | stroke: #fff;
180 | stroke-opacity: .2;
181 | fill: none;
182 | pointer-events: none;
183 | }
184 |
185 | body.vscode-dark .link-source {
186 | stroke-opacity: 1;
187 | stroke-width: 2px;
188 | stroke: #45aa73;
189 | }
190 |
191 | body.vscode-dark .link-target {
192 | stroke-opacity: 1;
193 | stroke-width: 2px;
194 | stroke: #ff5711;
195 | }
196 |
197 | body.vscode-dark .link-dimmed {
198 | stroke-opacity: 0.075;
199 | }
200 |
201 | /* Parse trees */
202 | body.vscode-dark .tree-node {
203 | stroke-width: 2;
204 | stroke: #404040;
205 | fill: rgba(255, 255, 255, 1);
206 | }
207 |
208 | body.vscode-dark g .tree-root {
209 | stroke-width: 2;
210 | fill: #3a3c37;
211 | stroke: #ffffff;
212 | }
213 |
214 | body.vscode-dark g .tree-leaf {
215 | stroke-width: 2;
216 | fill: #828e66;
217 | stroke: #ffffff;
218 | }
219 |
220 | body.vscode-dark g .tree-error {
221 | stroke-width: 2;
222 | fill: rgb(187, 43, 33);
223 | stroke: #ffffff;
224 | }
225 |
226 | body.vscode-dark g .token-value {
227 | fill: white;
228 | stroke: none;
229 | font: 12pt "Source Code Pro", "Hack", "Consolas", "Andale Mono", monospace;
230 | }
231 |
232 | body.vscode-dark g .token-range {
233 | fill: #bb832c;
234 | stroke: none;
235 | font: 8pt "Source Code Pro", "Hack", "Consolas", "Andale Mono", monospace;
236 | }
237 |
238 | body.vscode-dark .saveSVGButton {
239 | background-image: url(./save-svg-dark.svg);
240 | }
241 |
242 | body.vscode-dark .saveHTMLButton {
243 | background-image: url(./save-html-dark.svg);
244 | }
245 |
246 | body.vscode-dark .rrdIcon {
247 | background-image: url(./rrd-dark.svg);
248 | }
249 |
250 | body.vscode-dark .atnIcon {
251 | background-image: url(./atn-dark.png);
252 | }
253 |
--------------------------------------------------------------------------------
/docs/grammars/GoslinFragments/dark.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Mike Lischke. All rights reserved.
3 | * Licensed under the MIT License. See License.txt in the project root for license information.
4 | */
5 |
6 | /*
7 | * This file contains all default CSS rules for the dark vscode them, used for various diagrams and graphs.
8 | * Use the "antlr4.customCSS" setting in vscode to specify your own file, if you like to override some rules.
9 | *
10 | * Usually most of the appearance is defined in light.css and here we only have some adjustments for
11 | * the dark theme.
12 | */
13 |
14 | /* ATN graphs. */
15 |
16 | body.vscode-dark .marker {
17 | fill: #eee;
18 | stroke: none;
19 | }
20 |
21 | body.vscode-dark .stateLabel {
22 | fill: #202020;
23 | }
24 |
25 | body.vscode-dark .stateTypeLabel {
26 | fill: #404040;
27 | }
28 |
29 | body.vscode-dark .linkLabel {
30 | fill: #ddd;
31 | }
32 |
33 | body.vscode-dark .linkLabel > .heading {
34 | fill: cadetblue;
35 | }
36 |
37 | body.vscode-dark .state {
38 | stroke: white;
39 | filter: url(#white-glow);
40 | }
41 |
42 | /* Railroad diagrams */
43 |
44 | body.vscode-dark .atn-graph-save-image {
45 | background: rgba(206, 11, 70, 1) url('../misc/save-dark.png');
46 | }
47 |
48 | body.vscode-dark .call-graph-save-image {
49 | background: url('../misc/save-svg-dark.svg');
50 | }
51 |
52 | body.vscode-dark .parse-tree-save-image {
53 | background: rgba(49, 112, 212, 1) url('../misc/save-dark.png');
54 | }
55 |
56 | body.vscode-dark svg.railroad-diagram path {
57 | /* The connection lines. */
58 | stroke-width: 2;
59 | stroke: darkgray;
60 | fill: rgba(0, 0, 0, 0);
61 | }
62 |
63 | body.vscode-dark svg.railroad-diagram text {
64 | /* All text except comments. */
65 | font: bold 12px Hack, "Source Code Pro", monospace;
66 | text-anchor: middle;
67 | fill: #404040;
68 | /* Use fill instead of color for svg text. */
69 | }
70 |
71 | body.vscode-dark svg.railroad-diagram text.comment {
72 | /* Comment text */
73 | font: italic 10px Hack, "Source Code Pro", monospace;
74 | fill: #909090;
75 | }
76 |
77 | body.vscode-dark svg.railroad-diagram g.non-terminal rect {
78 | /* The non-terminal boxes. */
79 | stroke-width: 2;
80 | stroke: #404040;
81 | fill: rgba(255, 255, 255, 1);
82 | }
83 |
84 | body.vscode-dark svg.railroad-diagram g.terminal rect {
85 | /* The terminal boxes. */
86 | stroke-width: 2;
87 | stroke: #404040;
88 | fill: rgba(255, 255, 255, 0.7);
89 | }
90 |
91 | body.vscode-dark svg.railroad-diagram text.diagram-text {
92 | /* Multiple choice text, not working atm. */
93 | font-size: 12px Hack, "Source Code Pro", monospace;
94 | fill: red;
95 | }
96 |
97 | body.vscode-dark svg.railroad-diagram path.diagram-text {
98 | /* Multiple choice text, not working atm. */
99 | stroke-width: 1;
100 | stroke: red;
101 | fill: white;
102 | cursor: help;
103 | }
104 |
105 | body.vscode-dark svg.railroad-diagram g.diagram-text:hover path.diagram-text {
106 | /* Multiple choice text, not working atm. */
107 | fill: #f00;
108 | }
109 |
110 | /* Call graphs */
111 |
112 | body.vscode-dark .node-source {
113 | fill: #e6db74;
114 | }
115 |
116 | body.vscode-dark .node-target {
117 | fill: #45aa73;
118 | }
119 |
120 | body.vscode-dark .module-1 {
121 | fill: #0ca9fd;
122 | }
123 |
124 | body.vscode-dark .module-2 {
125 | fill: #63bf8d;
126 | }
127 |
128 | body.vscode-dark .module-3 {
129 | fill: #ff8801;
130 | }
131 |
132 | body.vscode-dark .module-4 {
133 | fill: #b9fc34;
134 | }
135 |
136 | body.vscode-dark .module-5 {
137 | fill: #90e0e0;
138 | }
139 |
140 | body.vscode-dark .module-6 {
141 | fill: #b4a3f5;
142 | }
143 |
144 | body.vscode-dark .module-7 {
145 | fill: #f92672;
146 | }
147 |
148 | body.vscode-dark .module-8 {
149 | fill: #e9e901;
150 | }
151 |
152 | body.vscode-dark .module-9 {
153 | fill: #83be69;
154 | }
155 |
156 | body.vscode-dark .module-10 {
157 | fill: #f1d18c;
158 | }
159 |
160 | body.vscode-dark .node:hover {
161 | fill: #fff;
162 | }
163 |
164 | body.vscode-dark .node-source {
165 | fill: #ff5711;
166 | }
167 |
168 | body.vscode-dark .node-target {
169 | fill: #45aa73;
170 | }
171 |
172 | body.vscode-dark .link-source,
173 | body.vscode-dark .link-target {
174 | stroke-opacity: 1;
175 | stroke-width: 2px;
176 | }
177 |
178 | body.vscode-dark .link {
179 | stroke: #fff;
180 | stroke-opacity: .2;
181 | fill: none;
182 | pointer-events: none;
183 | }
184 |
185 | body.vscode-dark .link-source {
186 | stroke-opacity: 1;
187 | stroke-width: 2px;
188 | stroke: #45aa73;
189 | }
190 |
191 | body.vscode-dark .link-target {
192 | stroke-opacity: 1;
193 | stroke-width: 2px;
194 | stroke: #ff5711;
195 | }
196 |
197 | body.vscode-dark .link-dimmed {
198 | stroke-opacity: 0.075;
199 | }
200 |
201 | /* Parse trees */
202 | body.vscode-dark .tree-node {
203 | stroke-width: 2;
204 | stroke: #404040;
205 | fill: rgba(255, 255, 255, 1);
206 | }
207 |
208 | body.vscode-dark g .tree-root {
209 | stroke-width: 2;
210 | fill: #3a3c37;
211 | stroke: #ffffff;
212 | }
213 |
214 | body.vscode-dark g .tree-leaf {
215 | stroke-width: 2;
216 | fill: #828e66;
217 | stroke: #ffffff;
218 | }
219 |
220 | body.vscode-dark g .tree-error {
221 | stroke-width: 2;
222 | fill: rgb(187, 43, 33);
223 | stroke: #ffffff;
224 | }
225 |
226 | body.vscode-dark g .token-value {
227 | fill: white;
228 | stroke: none;
229 | font: 12pt "Source Code Pro", "Hack", "Consolas", "Andale Mono", monospace;
230 | }
231 |
232 | body.vscode-dark g .token-range {
233 | fill: #bb832c;
234 | stroke: none;
235 | font: 8pt "Source Code Pro", "Hack", "Consolas", "Andale Mono", monospace;
236 | }
237 |
238 | body.vscode-dark .saveSVGButton {
239 | background-image: url(./save-svg-dark.svg);
240 | }
241 |
242 | body.vscode-dark .saveHTMLButton {
243 | background-image: url(./save-html-dark.svg);
244 | }
245 |
246 | body.vscode-dark .rrdIcon {
247 | background-image: url(./rrd-dark.svg);
248 | }
249 |
250 | body.vscode-dark .atnIcon {
251 | background-image: url(./atn-dark.png);
252 | }
253 |
--------------------------------------------------------------------------------
/docs/grammars/Shorthand2020/dark.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Mike Lischke. All rights reserved.
3 | * Licensed under the MIT License. See License.txt in the project root for license information.
4 | */
5 |
6 | /*
7 | * This file contains all default CSS rules for the dark vscode them, used for various diagrams and graphs.
8 | * Use the "antlr4.customCSS" setting in vscode to specify your own file, if you like to override some rules.
9 | *
10 | * Usually most of the appearance is defined in light.css and here we only have some adjustments for
11 | * the dark theme.
12 | */
13 |
14 | /* ATN graphs. */
15 |
16 | body.vscode-dark .marker {
17 | fill: #eee;
18 | stroke: none;
19 | }
20 |
21 | body.vscode-dark .stateLabel {
22 | fill: #202020;
23 | }
24 |
25 | body.vscode-dark .stateTypeLabel {
26 | fill: #404040;
27 | }
28 |
29 | body.vscode-dark .linkLabel {
30 | fill: #ddd;
31 | }
32 |
33 | body.vscode-dark .linkLabel > .heading {
34 | fill: cadetblue;
35 | }
36 |
37 | body.vscode-dark .state {
38 | stroke: white;
39 | filter: url(#white-glow);
40 | }
41 |
42 | /* Railroad diagrams */
43 |
44 | body.vscode-dark .atn-graph-save-image {
45 | background: rgba(206, 11, 70, 1) url('../misc/save-dark.png');
46 | }
47 |
48 | body.vscode-dark .call-graph-save-image {
49 | background: url('../misc/save-svg-dark.svg');
50 | }
51 |
52 | body.vscode-dark .parse-tree-save-image {
53 | background: rgba(49, 112, 212, 1) url('../misc/save-dark.png');
54 | }
55 |
56 | body.vscode-dark svg.railroad-diagram path {
57 | /* The connection lines. */
58 | stroke-width: 2;
59 | stroke: darkgray;
60 | fill: rgba(0, 0, 0, 0);
61 | }
62 |
63 | body.vscode-dark svg.railroad-diagram text {
64 | /* All text except comments. */
65 | font: bold 12px Hack, "Source Code Pro", monospace;
66 | text-anchor: middle;
67 | fill: #404040;
68 | /* Use fill instead of color for svg text. */
69 | }
70 |
71 | body.vscode-dark svg.railroad-diagram text.comment {
72 | /* Comment text */
73 | font: italic 10px Hack, "Source Code Pro", monospace;
74 | fill: #909090;
75 | }
76 |
77 | body.vscode-dark svg.railroad-diagram g.non-terminal rect {
78 | /* The non-terminal boxes. */
79 | stroke-width: 2;
80 | stroke: #404040;
81 | fill: rgba(255, 255, 255, 1);
82 | }
83 |
84 | body.vscode-dark svg.railroad-diagram g.terminal rect {
85 | /* The terminal boxes. */
86 | stroke-width: 2;
87 | stroke: #404040;
88 | fill: rgba(255, 255, 255, 0.7);
89 | }
90 |
91 | body.vscode-dark svg.railroad-diagram text.diagram-text {
92 | /* Multiple choice text, not working atm. */
93 | font-size: 12px Hack, "Source Code Pro", monospace;
94 | fill: red;
95 | }
96 |
97 | body.vscode-dark svg.railroad-diagram path.diagram-text {
98 | /* Multiple choice text, not working atm. */
99 | stroke-width: 1;
100 | stroke: red;
101 | fill: white;
102 | cursor: help;
103 | }
104 |
105 | body.vscode-dark svg.railroad-diagram g.diagram-text:hover path.diagram-text {
106 | /* Multiple choice text, not working atm. */
107 | fill: #f00;
108 | }
109 |
110 | /* Call graphs */
111 |
112 | body.vscode-dark .node-source {
113 | fill: #e6db74;
114 | }
115 |
116 | body.vscode-dark .node-target {
117 | fill: #45aa73;
118 | }
119 |
120 | body.vscode-dark .module-1 {
121 | fill: #0ca9fd;
122 | }
123 |
124 | body.vscode-dark .module-2 {
125 | fill: #63bf8d;
126 | }
127 |
128 | body.vscode-dark .module-3 {
129 | fill: #ff8801;
130 | }
131 |
132 | body.vscode-dark .module-4 {
133 | fill: #b9fc34;
134 | }
135 |
136 | body.vscode-dark .module-5 {
137 | fill: #90e0e0;
138 | }
139 |
140 | body.vscode-dark .module-6 {
141 | fill: #b4a3f5;
142 | }
143 |
144 | body.vscode-dark .module-7 {
145 | fill: #f92672;
146 | }
147 |
148 | body.vscode-dark .module-8 {
149 | fill: #e9e901;
150 | }
151 |
152 | body.vscode-dark .module-9 {
153 | fill: #83be69;
154 | }
155 |
156 | body.vscode-dark .module-10 {
157 | fill: #f1d18c;
158 | }
159 |
160 | body.vscode-dark .node:hover {
161 | fill: #fff;
162 | }
163 |
164 | body.vscode-dark .node-source {
165 | fill: #ff5711;
166 | }
167 |
168 | body.vscode-dark .node-target {
169 | fill: #45aa73;
170 | }
171 |
172 | body.vscode-dark .link-source,
173 | body.vscode-dark .link-target {
174 | stroke-opacity: 1;
175 | stroke-width: 2px;
176 | }
177 |
178 | body.vscode-dark .link {
179 | stroke: #fff;
180 | stroke-opacity: .2;
181 | fill: none;
182 | pointer-events: none;
183 | }
184 |
185 | body.vscode-dark .link-source {
186 | stroke-opacity: 1;
187 | stroke-width: 2px;
188 | stroke: #45aa73;
189 | }
190 |
191 | body.vscode-dark .link-target {
192 | stroke-opacity: 1;
193 | stroke-width: 2px;
194 | stroke: #ff5711;
195 | }
196 |
197 | body.vscode-dark .link-dimmed {
198 | stroke-opacity: 0.075;
199 | }
200 |
201 | /* Parse trees */
202 | body.vscode-dark .tree-node {
203 | stroke-width: 2;
204 | stroke: #404040;
205 | fill: rgba(255, 255, 255, 1);
206 | }
207 |
208 | body.vscode-dark g .tree-root {
209 | stroke-width: 2;
210 | fill: #3a3c37;
211 | stroke: #ffffff;
212 | }
213 |
214 | body.vscode-dark g .tree-leaf {
215 | stroke-width: 2;
216 | fill: #828e66;
217 | stroke: #ffffff;
218 | }
219 |
220 | body.vscode-dark g .tree-error {
221 | stroke-width: 2;
222 | fill: rgb(187, 43, 33);
223 | stroke: #ffffff;
224 | }
225 |
226 | body.vscode-dark g .token-value {
227 | fill: white;
228 | stroke: none;
229 | font: 12pt "Source Code Pro", "Hack", "Consolas", "Andale Mono", monospace;
230 | }
231 |
232 | body.vscode-dark g .token-range {
233 | fill: #bb832c;
234 | stroke: none;
235 | font: 8pt "Source Code Pro", "Hack", "Consolas", "Andale Mono", monospace;
236 | }
237 |
238 | body.vscode-dark .saveSVGButton {
239 | background-image: url(./save-svg-dark.svg);
240 | }
241 |
242 | body.vscode-dark .saveHTMLButton {
243 | background-image: url(./save-html-dark.svg);
244 | }
245 |
246 | body.vscode-dark .rrdIcon {
247 | background-image: url(./rrd-dark.svg);
248 | }
249 |
250 | body.vscode-dark .atnIcon {
251 | background-image: url(./atn-dark.png);
252 | }
253 |
--------------------------------------------------------------------------------
/docs/grammars/SwissLipids/dark.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Mike Lischke. All rights reserved.
3 | * Licensed under the MIT License. See License.txt in the project root for license information.
4 | */
5 |
6 | /*
7 | * This file contains all default CSS rules for the dark vscode them, used for various diagrams and graphs.
8 | * Use the "antlr4.customCSS" setting in vscode to specify your own file, if you like to override some rules.
9 | *
10 | * Usually most of the appearance is defined in light.css and here we only have some adjustments for
11 | * the dark theme.
12 | */
13 |
14 | /* ATN graphs. */
15 |
16 | body.vscode-dark .marker {
17 | fill: #eee;
18 | stroke: none;
19 | }
20 |
21 | body.vscode-dark .stateLabel {
22 | fill: #202020;
23 | }
24 |
25 | body.vscode-dark .stateTypeLabel {
26 | fill: #404040;
27 | }
28 |
29 | body.vscode-dark .linkLabel {
30 | fill: #ddd;
31 | }
32 |
33 | body.vscode-dark .linkLabel > .heading {
34 | fill: cadetblue;
35 | }
36 |
37 | body.vscode-dark .state {
38 | stroke: white;
39 | filter: url(#white-glow);
40 | }
41 |
42 | /* Railroad diagrams */
43 |
44 | body.vscode-dark .atn-graph-save-image {
45 | background: rgba(206, 11, 70, 1) url('../misc/save-dark.png');
46 | }
47 |
48 | body.vscode-dark .call-graph-save-image {
49 | background: url('../misc/save-svg-dark.svg');
50 | }
51 |
52 | body.vscode-dark .parse-tree-save-image {
53 | background: rgba(49, 112, 212, 1) url('../misc/save-dark.png');
54 | }
55 |
56 | body.vscode-dark svg.railroad-diagram path {
57 | /* The connection lines. */
58 | stroke-width: 2;
59 | stroke: darkgray;
60 | fill: rgba(0, 0, 0, 0);
61 | }
62 |
63 | body.vscode-dark svg.railroad-diagram text {
64 | /* All text except comments. */
65 | font: bold 12px Hack, "Source Code Pro", monospace;
66 | text-anchor: middle;
67 | fill: #404040;
68 | /* Use fill instead of color for svg text. */
69 | }
70 |
71 | body.vscode-dark svg.railroad-diagram text.comment {
72 | /* Comment text */
73 | font: italic 10px Hack, "Source Code Pro", monospace;
74 | fill: #909090;
75 | }
76 |
77 | body.vscode-dark svg.railroad-diagram g.non-terminal rect {
78 | /* The non-terminal boxes. */
79 | stroke-width: 2;
80 | stroke: #404040;
81 | fill: rgba(255, 255, 255, 1);
82 | }
83 |
84 | body.vscode-dark svg.railroad-diagram g.terminal rect {
85 | /* The terminal boxes. */
86 | stroke-width: 2;
87 | stroke: #404040;
88 | fill: rgba(255, 255, 255, 0.7);
89 | }
90 |
91 | body.vscode-dark svg.railroad-diagram text.diagram-text {
92 | /* Multiple choice text, not working atm. */
93 | font-size: 12px Hack, "Source Code Pro", monospace;
94 | fill: red;
95 | }
96 |
97 | body.vscode-dark svg.railroad-diagram path.diagram-text {
98 | /* Multiple choice text, not working atm. */
99 | stroke-width: 1;
100 | stroke: red;
101 | fill: white;
102 | cursor: help;
103 | }
104 |
105 | body.vscode-dark svg.railroad-diagram g.diagram-text:hover path.diagram-text {
106 | /* Multiple choice text, not working atm. */
107 | fill: #f00;
108 | }
109 |
110 | /* Call graphs */
111 |
112 | body.vscode-dark .node-source {
113 | fill: #e6db74;
114 | }
115 |
116 | body.vscode-dark .node-target {
117 | fill: #45aa73;
118 | }
119 |
120 | body.vscode-dark .module-1 {
121 | fill: #0ca9fd;
122 | }
123 |
124 | body.vscode-dark .module-2 {
125 | fill: #63bf8d;
126 | }
127 |
128 | body.vscode-dark .module-3 {
129 | fill: #ff8801;
130 | }
131 |
132 | body.vscode-dark .module-4 {
133 | fill: #b9fc34;
134 | }
135 |
136 | body.vscode-dark .module-5 {
137 | fill: #90e0e0;
138 | }
139 |
140 | body.vscode-dark .module-6 {
141 | fill: #b4a3f5;
142 | }
143 |
144 | body.vscode-dark .module-7 {
145 | fill: #f92672;
146 | }
147 |
148 | body.vscode-dark .module-8 {
149 | fill: #e9e901;
150 | }
151 |
152 | body.vscode-dark .module-9 {
153 | fill: #83be69;
154 | }
155 |
156 | body.vscode-dark .module-10 {
157 | fill: #f1d18c;
158 | }
159 |
160 | body.vscode-dark .node:hover {
161 | fill: #fff;
162 | }
163 |
164 | body.vscode-dark .node-source {
165 | fill: #ff5711;
166 | }
167 |
168 | body.vscode-dark .node-target {
169 | fill: #45aa73;
170 | }
171 |
172 | body.vscode-dark .link-source,
173 | body.vscode-dark .link-target {
174 | stroke-opacity: 1;
175 | stroke-width: 2px;
176 | }
177 |
178 | body.vscode-dark .link {
179 | stroke: #fff;
180 | stroke-opacity: .2;
181 | fill: none;
182 | pointer-events: none;
183 | }
184 |
185 | body.vscode-dark .link-source {
186 | stroke-opacity: 1;
187 | stroke-width: 2px;
188 | stroke: #45aa73;
189 | }
190 |
191 | body.vscode-dark .link-target {
192 | stroke-opacity: 1;
193 | stroke-width: 2px;
194 | stroke: #ff5711;
195 | }
196 |
197 | body.vscode-dark .link-dimmed {
198 | stroke-opacity: 0.075;
199 | }
200 |
201 | /* Parse trees */
202 | body.vscode-dark .tree-node {
203 | stroke-width: 2;
204 | stroke: #404040;
205 | fill: rgba(255, 255, 255, 1);
206 | }
207 |
208 | body.vscode-dark g .tree-root {
209 | stroke-width: 2;
210 | fill: #3a3c37;
211 | stroke: #ffffff;
212 | }
213 |
214 | body.vscode-dark g .tree-leaf {
215 | stroke-width: 2;
216 | fill: #828e66;
217 | stroke: #ffffff;
218 | }
219 |
220 | body.vscode-dark g .tree-error {
221 | stroke-width: 2;
222 | fill: rgb(187, 43, 33);
223 | stroke: #ffffff;
224 | }
225 |
226 | body.vscode-dark g .token-value {
227 | fill: white;
228 | stroke: none;
229 | font: 12pt "Source Code Pro", "Hack", "Consolas", "Andale Mono", monospace;
230 | }
231 |
232 | body.vscode-dark g .token-range {
233 | fill: #bb832c;
234 | stroke: none;
235 | font: 8pt "Source Code Pro", "Hack", "Consolas", "Andale Mono", monospace;
236 | }
237 |
238 | body.vscode-dark .saveSVGButton {
239 | background-image: url(./save-svg-dark.svg);
240 | }
241 |
242 | body.vscode-dark .saveHTMLButton {
243 | background-image: url(./save-html-dark.svg);
244 | }
245 |
246 | body.vscode-dark .rrdIcon {
247 | background-image: url(./rrd-dark.svg);
248 | }
249 |
250 | body.vscode-dark .atnIcon {
251 | background-image: url(./atn-dark.png);
252 | }
253 |
--------------------------------------------------------------------------------
/goslin.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
173 |
--------------------------------------------------------------------------------
/SwissLipids.g4:
--------------------------------------------------------------------------------
1 | /*
2 | * MIT License
3 | *
4 | * Copyright (c) the authors (listed in global LICENSE file)
5 | *
6 | * Permission is hereby granted, free of charge, to any person obtaining a copy
7 | * of this software and associated documentation files (the 'Software'), to deal
8 | * in the Software without restriction, including without limitation the rights
9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | * copies of the Software, and to permit persons to whom the Software is
11 | * furnished to do so, subject to the following conditions:;
12 | *
13 | * The above copyright notice and this permission notice shall be included in all
14 | * copies or substantial portions of the Software.
15 | *
16 | * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | * LIABILITY, WHether IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 | * SOFTWARE.
23 | */
24 |
25 |
26 |
27 | grammar SwissLipids;
28 |
29 |
30 | /* first rule is always start rule */
31 | lipid : lipid_pure EOF | lipid_pure adduct_info EOF | lipid_pure variants EOF;
32 | lipid_pure : fatty_acid | gl | pl | sl | st;
33 |
34 | variants : variant | variant variants;
35 | variant : adduct_separator abc | abc | adduct_separator npos | npos;
36 | abc : '(a)' | '(b)' | '(c)' | '(d)' | '(e)' | '(f)' | '(g)';
37 | npos : '(n' number ')' | '[sn' number ']' | '[' number '_sn' number ']';
38 |
39 | /* adduct information */
40 | adduct_info : adduct_sep | adduct_separator adduct_sep;
41 | adduct_sep : '[M' adduct ']' charge_sign | '[M' adduct ']' charge charge_sign;
42 | adduct : adduct_set;
43 | adduct_set : adduct_element | adduct_element adduct_set;
44 | adduct_element : element | element number | number element | plus_minus element | plus_minus element number | plus_minus number element;
45 |
46 |
47 | /* fatty acyl rules */
48 | fa : fa_p | fa_p '.';
49 | fa_p : fa_core | fa_lcb_prefix fa_core | fa_core fa_lcb_suffix | fa_lcb_prefix fa_core fa_lcb_suffix;
50 | fa_core : carbon carbon_db_separator db | ether_type carbon carbon_db_separator db;
51 |
52 | lcb : lcb_core | fa_lcb_prefix lcb_core | lcb_core fa_lcb_suffix | fa_lcb_prefix lcb_core fa_lcb_suffix;
53 | lcb_core : hydroxyl carbon carbon_db_separator db;
54 |
55 | carbon : number;
56 | db : db_count | db_count db_positions;
57 | db_count : number;
58 | db_positions : ROB db_position RCB;
59 | db_position : db_single_position | db_position db_position_separator db_position;
60 | db_single_position : db_position_number | db_position_number cistrans;
61 | db_position_number : number;
62 | cistrans : 'E' | 'Z';
63 | ether_type : ether '-' | ether '.';
64 | ether : 'O' | 'P';
65 | hydroxyl : 'm' | 'd' | 't';
66 | fa_lcb_suffix : fa_lcb_suffix_core | fa_lcb_suffix_separator fa_lcb_suffix_core | ROB fa_lcb_suffix_core RCB;
67 | fa_lcb_suffix_core : fa_lcb_suffix_number fa_lcb_suffix_type | fa_lcb_suffix_number fa_lcb_suffix_separator fa_lcb_suffix_type;
68 | fa_lcb_suffix_type : 'OH' | 'me';
69 | fa_lcb_suffix_number : number;
70 | fa_lcb_prefix : fa_lcb_prefix_type | fa_lcb_prefix_type fa_lcb_prefix_separator;
71 | fa_lcb_prefix_type : 'iso';
72 |
73 | /* different fatty acyl types */
74 | fa_species : fa;
75 |
76 | fa2 : fa2_sorted | fa2_unsorted;
77 | fa2_sorted : fa sorted_fa_separator fa;
78 | fa2_unsorted : fa unsorted_fa_separator fa;
79 |
80 | fa3 : fa3_sorted | fa3_unsorted;
81 | fa3_sorted : fa sorted_fa_separator fa sorted_fa_separator fa;
82 | fa3_unsorted : fa unsorted_fa_separator fa unsorted_fa_separator fa;
83 |
84 | fa4 : fa4_sorted | fa4_unsorted;
85 | fa4_sorted : fa sorted_fa_separator fa sorted_fa_separator fa sorted_fa_separator fa;
86 | fa4_unsorted : fa unsorted_fa_separator fa unsorted_fa_separator fa unsorted_fa_separator fa;
87 |
88 |
89 |
90 |
91 |
92 | /* fatty acid rules */
93 | fatty_acid : fa_hg fa_fa | fa_hg headgroup_separator fa_fa | mediator;
94 | fa_hg : 'FFA' | 'FA' | 'fatty acid' | 'fatty alcohol' | 'NAE' | 'GP-NAE';
95 | fa_fa : ROB fa RCB;
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 | /* mediator rules */
104 | mediator : mediator_single | mediator_single headgroup_separator med_positions;
105 | mediator_single : mediator_single mediator_single | mediator_single '-' mediator_single | db_positions | med_positions | 'KETE' | 'keto' | 'oxo' | 'Hp' | 'EPE' | 'ETE' | 'ODE' | 'EPT' | 'H' | 'LXA4' | 'hydroxy' | 'Di' | 'RvE1' | 'glyceryl' | 'EpETrE' | 'DHE' | 'ETrE' | 'DHA' | 'DoHA' | 'LTB4' | 'PGE2' | ' PGE2' | 'PGF2alpha' | 'trihydroxy' | 'TriH' | 'OTrE' | 'dihydroxy' | 'Ep' | 'LXB4' | 'Tri' | 'PAHSA' | 'MUFA' | 'GPGP' | 'GPIP' | 'PGE1' | 'PGG2' | 'SFA' | 'PUFA' | 'PGI2' | 'TXA2' | 'CoA' | 'FAOH' | 'EA' | 'beta' | 'PGH2' | 'LTD4' | 'kete' | 'DPE' | ' PGD2' | 'PGD2' | 'PGF2' | 'LTC4' | 'LTA4' | 'PGD1' | 'PGA1' | 'LTDE4' | 'epoxyoleate' | 'epoxystearate' | 'carboxy' | 'PGH1' | 'EtrE' | 'HXA3' | 'HxA3' | 'HXA3-C';
106 |
107 |
108 |
109 | med_positions : med_position | ROB med_position RCB;
110 | med_position : med_position med_position_separator med_position | number med_suffix | number;
111 | med_suffix : 'S' | 'R';
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 | /* glycerolipid rules */
120 | gl : gl_regular | gl_mono | gl_molecular;
121 |
122 | gl_regular : gl_hg gl_fa | gl_hg headgroup_separator gl_fa | gl_hg_tg gl_half_sub_fa | gl_hg_tg headgroup_separator gl_half_sub_fa;
123 | gl_fa : ROB fa_species RCB | ROB fa3 RCB;
124 | gl_hg : 'MG' | 'DG' | gl_hg_tg | 'MAG' | 'DAG';
125 | gl_hg_tg : 'TG' | 'TAG';
126 |
127 | gl_molecular : gl_molecular_hg gl_molecular_fa | gl_molecular_hg headgroup_separator gl_molecular_fa;
128 | gl_molecular_fa : ROB fa2 RCB;
129 | gl_molecular_hg : 'DG' | 'DAG';
130 |
131 |
132 | gl_mono : gl_mono_hg gl_mono_fa | gl_mono_hg headgroup_separator gl_mono_fa;
133 | gl_mono_fa : ROB fa_species RCB | ROB fa2 RCB;
134 | gl_mono_hg : 'MHDG' | 'DHDG' | 'MGDG' | 'DGDG';
135 |
136 | gl_half_sub_fa : fa_species 'FA' fa_species;
137 |
138 |
139 |
140 |
141 |
142 | /* phospholipid rules */
143 | pl : pl_regular | pl_three | pl_four;
144 |
145 | pl_regular : pl_hg pl_fa | pl_hg headgroup_separator pl_fa;
146 | pl_fa : ROB fa_species RCB | ROB fa2 RCB;
147 | pl_hg : 'LPA' | 'LPC' | 'LPE' | 'LPG' | 'LPI' | 'LPS' | 'PA' | 'PC' | 'PE' | 'PG' | 'PI' | 'PS' | 'PGP' | 'PIP' | 'PIP[3]' | 'PIP[4]' | 'PIP[5]' | 'PIP2' | 'PIP2[3,4]' | 'PIP2[3,5]' | 'PIP2[4,5]' | 'PIP3' | 'PIP3[3,4,5]' | 'CDP-DAG';
148 |
149 | pl_three : pl_three_hg pl_three_fa | pl_three_hg headgroup_separator pl_three_fa;
150 | pl_three_fa : ROB fa_species RCB | ROB fa3 RCB;
151 | pl_three_hg : 'NAPE';
152 |
153 | pl_four : pl_four_hg pl_four_fa | pl_four_hg headgroup_separator pl_four_fa;
154 | pl_four_fa : ROB fa_species RCB | ROB fa2 RCB | ROB fa4 RCB;
155 | pl_four_hg : 'BMP' | 'LBPA' | 'Lysobisphosphatidate' | 'CL' | 'MLCL' | 'DLCL';
156 |
157 |
158 |
159 |
160 | /* sphingolipid rules */
161 | sl : sl_hg sl_lcb | sl_hg headgroup_separator sl_lcb | sl_hg lcb_18_1_fa;
162 | sl_hg : sl_hg_names | sl_hg_prefix sl_hg_names | sl_hg_names sl_hg_suffix | sl_hg_prefix sl_hg_names sl_hg_suffix;
163 | sl_hg_names : 'HexCer' | 'Hex2Cer' | 'SM' | 'PE-Cer' | 'Cer' | 'CER' | 'DCER' | 'LCER' | 'HCER' | 'CerP' | 'GD1a' | 'GM1b' | 'GT1b' | 'GQ1b' | 'GT1a' | 'GQ1c' | 'GP1c' | 'GD1c' | 'GD1b' | 'GT1c' | 'IPC' | 'MIPC' | 'M(IP)2C' | 'Gb3Cer' | 'Gb4Cer' | 'Forssman' | 'MSGG' | 'DSGG' | 'NOR1' | 'NORint' | 'NOR2' | 'Globo-H' | 'Globo-A' | 'SB1a' | 'SM1b' | 'SM1a' | 'Branched-Forssman' | 'Globo-B' | 'Para-Forssman' | 'Globo-Lex-9' | glyco_sphingo_lipid;
164 | glyco_sphingo_lipid : 'GA1' | 'Ga1' | 'GA2' | 'Ga2' |
165 | 'GB3' | 'Gb3' | 'GB4' | 'Gb4' |
166 | 'GD1' | 'Gd1' | 'GD2' | 'Gd2' | 'GD3' | 'Gd3' |
167 | 'GM1' | 'Gm1' | 'GM2' | 'Gm2' | 'GM3' | 'Gm3' | 'GM4' | 'Gm4' |
168 | 'GP1' | 'Gp1' |
169 | 'GQ1' | 'Gq1' |
170 | 'GT1' | 'Gt1' | 'GT2' | 'Gt2' | 'GT3' | 'Gt3';
171 |
172 | sl_hg_prefix : sl_hg_prefix '-' | sl_hg_prefix sl_hg_prefix | ROB sl_hg_prefix RCB | 'Glc' | 'NAc' | 'Gal' | 'Fuc' | 'SO3' | 'NeuGc' | 'i' | 'NeuAc' | 'Lac' | 'Lex' | '(3\'-sulfo)' | 'Ac-O-9' | '(alpha2-8)' | '(alpha2-6)' | 'NeuAc' | 'Sulfo';
173 | sl_hg_suffix : sl_hg_suffix sl_hg_suffix | sl_hg_suffix '/' | ROB sl_hg_suffix RCB | 'NeuAc' | 'NeuGc' | ' alpha';
174 |
175 | sl_lcb : sl_lcb_species | sl_lcb_subspecies;
176 | sl_lcb_species : ROB lcb RCB;
177 | sl_lcb_subspecies : ROB lcb sorted_fa_separator fa RCB;
178 | lcb_18_1_fa : fa_fa;
179 |
180 |
181 |
182 | /* sterol rules */
183 | st : st_species | st_sub1 | st_sub2;
184 |
185 | st_species : st_species_hg st_species_fa | st_species_hg headgroup_separator st_species_fa;
186 | st_species_hg : 'SE';
187 | st_species_fa : ROB fa_species RCB;
188 |
189 | st_sub1 : st_sub1_hg st_sub1_fa | st_sub1_hg headgroup_separator st_sub1_fa;
190 | st_sub1_hg : 'CE';
191 | st_sub1_fa : ROB fa RCB;
192 |
193 | st_sub2 : st_sub2_hg sorted_fa_separator fa RCB;
194 | st_sub2_hg : 'SE' ROB number COLON number;
195 |
196 |
197 | /* separators */
198 | SPACE : ' ';
199 | COLON : ':';
200 | SEMICOLON : ';';
201 | DASH : '-';
202 | UNDERSCORE : '_';
203 | SLASH : '/';
204 | BACKSLASH : '\\';
205 | COMMA: ',';
206 | ROB: '(' | '.';
207 | RCB: ')' | '.';
208 |
209 | unsorted_fa_separator : UNDERSCORE | '.';
210 | adduct_separator : SPACE;
211 | sorted_fa_separator : SLASH | '.';
212 | headgroup_separator : SPACE;
213 | carbon_db_separator : COLON | '.';
214 | db_position_separator : COMMA;
215 | med_position_separator : COMMA;
216 | fa_lcb_suffix_separator : DASH;
217 | fa_lcb_prefix_separator : DASH;
218 |
219 | number : digit | digit number;
220 | digit : '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9';
221 |
222 | element: 'C' | 'H' | 'N' | 'O' | 'P' | 'S' | 'Br' | 'I' | 'F' | 'Cl' | 'As';
223 | charge : '1' | '2' | '3' | '4';
224 | charge_sign : plus_minus;
225 | plus_minus : '-' | '+';
226 |
--------------------------------------------------------------------------------
/docs/grammars/Goslin/light.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Mike Lischke. All rights reserved.
3 | * Licensed under the MIT License. See License.txt in the project root for license information.
4 | */
5 |
6 | /*
7 | * This file contains all default CSS rules for the light vscode them, used for various diagrams and graphs.
8 | * Use the "antlr4.customCSS" setting in vscode to specify your own file, if you like to override some rules.
9 | *
10 | * Most of the appearance is defined here, while only some adjustments for the dark theme exist in dark.css.
11 | * This style sheet is also used for exported svg files.
12 | */
13 |
14 |
15 | /* ATN graphs */
16 |
17 | .transition {
18 | fill: none;
19 | stroke: #AAA;
20 | stroke-width: 2px;
21 | }
22 |
23 | .marker {
24 | fill: #999;
25 | stroke: none;
26 | }
27 |
28 | .stateLabel {
29 | font: bold 11pt "Helvetica Neue", Arial, sans-serif;
30 | fill: white;
31 | text-anchor: middle;
32 | pointer-events: none;
33 | }
34 |
35 | .stateTypeLabel {
36 | font: bold 7pt monospace;
37 | fill: #EEE;
38 | text-anchor: middle;
39 | pointer-events: none;
40 | }
41 |
42 | .linkLabel {
43 | font: 9pt monospace;
44 | fill: #606060;
45 | text-anchor: middle;
46 | pointer-events: none;
47 | white-space: pre;
48 | }
49 |
50 | .linkLabel > .heading {
51 | fill: cornflowerblue;
52 | font-weight: 800;
53 | }
54 |
55 | .linkLabel > .predicate {
56 | fill: gray;
57 | font-weight: 400;
58 | font-size: 7pt
59 | }
60 |
61 | .state {
62 | stroke: #505050;
63 | stroke-width: 3px;
64 | cursor: move;
65 | pointer-events: all;
66 | /*filter: url(#black-glow);*/
67 | }
68 |
69 | .state.BASIC {
70 | fill: #AAA;
71 | }
72 |
73 | .state.START {
74 | fill: #36bde0;
75 | }
76 |
77 | .state.BSTART {
78 | fill: #f39900;
79 | }
80 |
81 | .state.PBSTART {
82 | fill: #98c000;
83 | }
84 |
85 | .state.SBSTART {
86 | fill: #607dbd;
87 | }
88 |
89 | .state.TSTART {
90 | fill: #ffd300;
91 | }
92 |
93 | .state.STOP {
94 | fill: #2baa5b;
95 | }
96 |
97 | .state.BEND {
98 | fill: #c2c269;
99 | }
100 |
101 | .state.SLBACK {
102 | fill: #608b4e;
103 | }
104 |
105 | .state.SLENTRY {
106 | fill: #a260cb;
107 | }
108 |
109 | .state.PLBACK {
110 | fill: #517979;
111 | }
112 |
113 | .state.LEND {
114 | fill: #9b90c3;
115 | }
116 |
117 | .state.RULE {
118 | fill: #b73645;
119 | }
120 |
121 | .state.RULE.recursive {
122 | fill: #36bde0;
123 | }
124 |
125 |
126 | /* Railroad diagrams */
127 |
128 | /* The connection lines. */
129 | svg.railroad-diagram path {
130 | stroke-width: 2;
131 | stroke: darkgray;
132 | fill: rgba(0, 0, 0, 0);
133 | }
134 |
135 | /* All text except comments. */
136 | svg.railroad-diagram text {
137 | font: bold 12px Hack, "Source Code Pro", monospace;
138 | text-anchor: middle;
139 | fill: #404040;
140 | }
141 |
142 | /* Comment text */
143 | svg.railroad-diagram text.comment {
144 | font: italic 10px Hack, "Source Code Pro", monospace;
145 | fill: #404040;
146 | }
147 |
148 | /* The terminal boxes. */
149 | svg.railroad-diagram g.terminal rect {
150 | stroke-width: 2;
151 | stroke: #404040;
152 | fill: rgba(200, 200, 200, 1);
153 | }
154 |
155 | svg.railroad-diagram g.non-terminal rect {
156 | /* The non-terminal boxes. */
157 | stroke-width: 2;
158 | stroke: #404040;
159 | fill: rgba(255, 255, 255, 1);
160 | }
161 |
162 | /* Multiple choice text, not working atm. */
163 | svg.railroad-diagram text.diagram-text {
164 | font-size: 12px Hack, "Source Code Pro", monospace;
165 | fill: red;
166 | }
167 |
168 | /* Multiple choice text, not working atm. */
169 | svg.railroad-diagram path.diagram-text {
170 | stroke-width: 1;
171 | stroke: red;
172 | fill: red;
173 | cursor: help;
174 | }
175 |
176 | /* Multiple choice text, not working atm. */
177 | svg.railroad-diagram g.diagram-text:hover path.diagram-text {
178 | fill: #f00;
179 | }
180 |
181 | /* Call graphs */
182 |
183 | .node {
184 | font: 200 10px "Helvetica Neue", Helvetica, Arial, sans-serif;
185 | }
186 |
187 | .link {
188 | stroke: #000;
189 | stroke-opacity: .2;
190 | fill: none;
191 | pointer-events: none;
192 | }
193 |
194 | .module-1 {
195 | fill: #0ca9fd;
196 | }
197 |
198 | .module-2 {
199 | fill: #63bf8d;
200 | }
201 |
202 | .module-3 {
203 | fill: #ff8801;
204 | }
205 |
206 | .module-4 {
207 | fill: #b9fc34;
208 | }
209 |
210 | .module-5 {
211 | fill: #90e0e0;
212 | }
213 |
214 | .module-6 {
215 | fill: #b4a3f5;
216 | }
217 |
218 | .module-7 {
219 | fill: #f92672;
220 | }
221 |
222 | .module-8 {
223 | fill: #e9e901;
224 | }
225 |
226 | .module-9 {
227 | fill: #83be69;
228 | }
229 |
230 | .module-10 {
231 | fill: #f1d18c;
232 | }
233 |
234 | .node:hover {
235 | fill: #000;
236 | }
237 |
238 | .node:hover,
239 | .node-source,
240 | .node-target {
241 | font: 700 12px "Helvetica Neue", Helvetica, Arial, sans-serif;
242 | cursor: pointer;
243 | }
244 |
245 | .node-source {
246 | fill: #ff5711;
247 | }
248 |
249 | .node-target {
250 | fill: #45aa73;
251 | }
252 |
253 | .link-source,
254 | .link-target {
255 | stroke-opacity: 1;
256 | stroke-width: 2px;
257 | }
258 |
259 | .link-source {
260 | stroke: #3dcd92;
261 | }
262 |
263 | .link-target {
264 | stroke: #ff5711;
265 | }
266 |
267 | @keyframes fadeOut {
268 | 0% {
269 | stroke-opacity: 0.2;
270 | }
271 |
272 | 100% {
273 | stroke-opacity: 0.075;
274 | }
275 | }
276 |
277 | @keyframes fadeIn {
278 | 0% {
279 | stroke-opacity: 0.075;
280 | }
281 |
282 | 100% {
283 | stroke-opacity: 0.2;
284 | }
285 | }
286 |
287 | .link-dimmed {
288 | stroke-opacity: 0.075;
289 | }
290 |
291 |
292 | /* Parse trees */
293 | .tree-node {
294 | stroke-width: 2;
295 | stroke: #C0C0C0;
296 | fill: rgba(255, 255, 255, 1);
297 | }
298 |
299 | .tree-root {
300 | stroke-width: 2;
301 | fill: #7db6dd;
302 | stroke: #7db6dd;
303 | }
304 |
305 | .tree-leaf {
306 | cursor: default;
307 | stroke-width: 2;
308 | fill: rgba(160, 171, 136, 1);
309 | stroke: rgba(117, 119, 91, 1);
310 | }
311 |
312 | .tree-error {
313 | stroke-width: 2;
314 | fill: #dd8f7d;
315 | stroke: rgba(188, 106, 122, 1);
316 | }
317 |
318 | .tree-node text {
319 | cursor: default;
320 | font: 16px "Helvetica Neue", sans-serif;
321 | fill: rgba(41, 41, 41, 1);
322 | stroke: none;
323 | }
324 |
325 | .tree-leaf text,
326 | .tree-root text,
327 | .tree-error text {
328 | font: 16px "Helvetica Neue", sans-serif;
329 | fill: #ffffff;
330 | stroke: none;
331 | }
332 |
333 | .tree-link {
334 | stroke-width: 2px;
335 | fill: none;
336 | stroke: rgba(128, 128, 128, 1);
337 | }
338 |
339 | g .token-value {
340 | fill: #404040;
341 | stroke: none;
342 | font: 14pt "Source Code Pro", "Hack", "Consolas", "Andale Mono", monospace;
343 | }
344 |
345 | g .token-range {
346 | fill: rgba(0, 77, 98, 1);
347 | stroke: none;
348 | font: 8pt "Source Code Pro", "Hack", "Consolas", "Andale Mono", monospace;
349 | }
350 |
351 | .saveSVGButton {
352 | background-image: url(./save-svg-light.svg);
353 | width: 32px;
354 | height: 32px;
355 |
356 | margin-left: 8px;
357 |
358 | background-position: center;
359 | background-repeat: no-repeat;
360 | }
361 |
362 | .saveHTMLButton {
363 | background-image: url(./save-html-light.svg);
364 | width: 32px;
365 | height: 32px;
366 |
367 | background-position: center;
368 | background-repeat: no-repeat;
369 | }
370 |
371 | .headerIcon {
372 | width: 90px;
373 | height: 90px;
374 | margin-top: 20px;
375 |
376 | background-position: center;
377 | background-repeat: no-repeat;
378 | background-size: contain;
379 | }
380 |
381 | .rrdIcon {
382 | background-image: url(./rrd-light.svg);
383 | }
384 |
385 | .atnIcon {
386 | background-image: url(./atn-light.png);
387 | }
388 |
389 | g .rrd-warning {
390 | stroke: orange;
391 | }
392 |
393 | g .rrd-predicate {
394 | stroke: rgba(23, 159, 255, 0.5);
395 | }
396 |
397 | .atn-graph-color {
398 | color: crimson;
399 | }
400 |
401 | .rrd-graph-color {
402 | color: rgba(10, 188, 80, 1);
403 | }
404 |
405 | .call-graph-color {
406 | color: rgba(255, 191, 15, 1);
407 | }
408 |
409 | .call-graph-save-image {
410 | background: url('../misc/save-svg-light.png');
411 | vertical-align: middle;
412 | margin-left: 5px;
413 | width: 24px;
414 | height: 24px;
415 | display: inline-block;
416 | cursor: pointer;
417 | }
418 |
419 | .parse-tree-color {
420 | color: rgba(49, 112, 212, 1);
421 | }
422 |
423 | .parse-tree-save-image {
424 | background: rgba(49, 112, 212, 1) url('../misc/save.png');
425 | vertical-align: middle;
426 | margin-left: 5px;
427 | width: 24px;
428 | height: 24px;
429 | display: inline-block;
430 | cursor: pointer;
431 | }
432 |
433 | .switch label {
434 | width: 100%;
435 | height: 100%;
436 | margin: 0;
437 | padding: 0;
438 | display: block;
439 | position: absolute;
440 | top: 0;
441 | left: 0;
442 | z-index: 10;
443 | }
444 |
445 | .switch input {
446 | display: none;
447 | }
448 |
449 | .switch > span {
450 | display: inline-block;
451 | top: 3px;
452 | transition: left 0.2s;
453 | }
454 |
455 | .switch-border {
456 | height: 12px;
457 | width: 24px;
458 | position: relative;
459 | border: 1px solid rgba(49, 112, 212, 0.75);
460 | background-color: rgba(49, 112, 212, 0.75);
461 | border-radius: 3.5em;
462 | }
463 |
464 | .switch-handle-top {
465 | width: 12px;
466 | height: 12px;
467 | position: absolute;
468 | left: 0;
469 | top: 0;
470 | z-index: 4;
471 | background-color: white;
472 | border-radius: 2.5em;
473 | transition: left 0.2s;
474 | }
475 |
476 | .switch input:checked ~ .switch-handle-top {
477 | top: 0;
478 | left: 12px;
479 | }
480 |
--------------------------------------------------------------------------------
/docs/grammars/HMDB/light.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Mike Lischke. All rights reserved.
3 | * Licensed under the MIT License. See License.txt in the project root for license information.
4 | */
5 |
6 | /*
7 | * This file contains all default CSS rules for the light vscode them, used for various diagrams and graphs.
8 | * Use the "antlr4.customCSS" setting in vscode to specify your own file, if you like to override some rules.
9 | *
10 | * Most of the appearance is defined here, while only some adjustments for the dark theme exist in dark.css.
11 | * This style sheet is also used for exported svg files.
12 | */
13 |
14 |
15 | /* ATN graphs */
16 |
17 | .transition {
18 | fill: none;
19 | stroke: #AAA;
20 | stroke-width: 2px;
21 | }
22 |
23 | .marker {
24 | fill: #999;
25 | stroke: none;
26 | }
27 |
28 | .stateLabel {
29 | font: bold 11pt "Helvetica Neue", Arial, sans-serif;
30 | fill: white;
31 | text-anchor: middle;
32 | pointer-events: none;
33 | }
34 |
35 | .stateTypeLabel {
36 | font: bold 7pt monospace;
37 | fill: #EEE;
38 | text-anchor: middle;
39 | pointer-events: none;
40 | }
41 |
42 | .linkLabel {
43 | font: 9pt monospace;
44 | fill: #606060;
45 | text-anchor: middle;
46 | pointer-events: none;
47 | white-space: pre;
48 | }
49 |
50 | .linkLabel > .heading {
51 | fill: cornflowerblue;
52 | font-weight: 800;
53 | }
54 |
55 | .linkLabel > .predicate {
56 | fill: gray;
57 | font-weight: 400;
58 | font-size: 7pt
59 | }
60 |
61 | .state {
62 | stroke: #505050;
63 | stroke-width: 3px;
64 | cursor: move;
65 | pointer-events: all;
66 | /*filter: url(#black-glow);*/
67 | }
68 |
69 | .state.BASIC {
70 | fill: #AAA;
71 | }
72 |
73 | .state.START {
74 | fill: #36bde0;
75 | }
76 |
77 | .state.BSTART {
78 | fill: #f39900;
79 | }
80 |
81 | .state.PBSTART {
82 | fill: #98c000;
83 | }
84 |
85 | .state.SBSTART {
86 | fill: #607dbd;
87 | }
88 |
89 | .state.TSTART {
90 | fill: #ffd300;
91 | }
92 |
93 | .state.STOP {
94 | fill: #2baa5b;
95 | }
96 |
97 | .state.BEND {
98 | fill: #c2c269;
99 | }
100 |
101 | .state.SLBACK {
102 | fill: #608b4e;
103 | }
104 |
105 | .state.SLENTRY {
106 | fill: #a260cb;
107 | }
108 |
109 | .state.PLBACK {
110 | fill: #517979;
111 | }
112 |
113 | .state.LEND {
114 | fill: #9b90c3;
115 | }
116 |
117 | .state.RULE {
118 | fill: #b73645;
119 | }
120 |
121 | .state.RULE.recursive {
122 | fill: #36bde0;
123 | }
124 |
125 |
126 | /* Railroad diagrams */
127 |
128 | /* The connection lines. */
129 | svg.railroad-diagram path {
130 | stroke-width: 2;
131 | stroke: darkgray;
132 | fill: rgba(0, 0, 0, 0);
133 | }
134 |
135 | /* All text except comments. */
136 | svg.railroad-diagram text {
137 | font: bold 12px Hack, "Source Code Pro", monospace;
138 | text-anchor: middle;
139 | fill: #404040;
140 | }
141 |
142 | /* Comment text */
143 | svg.railroad-diagram text.comment {
144 | font: italic 10px Hack, "Source Code Pro", monospace;
145 | fill: #404040;
146 | }
147 |
148 | /* The terminal boxes. */
149 | svg.railroad-diagram g.terminal rect {
150 | stroke-width: 2;
151 | stroke: #404040;
152 | fill: rgba(200, 200, 200, 1);
153 | }
154 |
155 | svg.railroad-diagram g.non-terminal rect {
156 | /* The non-terminal boxes. */
157 | stroke-width: 2;
158 | stroke: #404040;
159 | fill: rgba(255, 255, 255, 1);
160 | }
161 |
162 | /* Multiple choice text, not working atm. */
163 | svg.railroad-diagram text.diagram-text {
164 | font-size: 12px Hack, "Source Code Pro", monospace;
165 | fill: red;
166 | }
167 |
168 | /* Multiple choice text, not working atm. */
169 | svg.railroad-diagram path.diagram-text {
170 | stroke-width: 1;
171 | stroke: red;
172 | fill: red;
173 | cursor: help;
174 | }
175 |
176 | /* Multiple choice text, not working atm. */
177 | svg.railroad-diagram g.diagram-text:hover path.diagram-text {
178 | fill: #f00;
179 | }
180 |
181 | /* Call graphs */
182 |
183 | .node {
184 | font: 200 10px "Helvetica Neue", Helvetica, Arial, sans-serif;
185 | }
186 |
187 | .link {
188 | stroke: #000;
189 | stroke-opacity: .2;
190 | fill: none;
191 | pointer-events: none;
192 | }
193 |
194 | .module-1 {
195 | fill: #0ca9fd;
196 | }
197 |
198 | .module-2 {
199 | fill: #63bf8d;
200 | }
201 |
202 | .module-3 {
203 | fill: #ff8801;
204 | }
205 |
206 | .module-4 {
207 | fill: #b9fc34;
208 | }
209 |
210 | .module-5 {
211 | fill: #90e0e0;
212 | }
213 |
214 | .module-6 {
215 | fill: #b4a3f5;
216 | }
217 |
218 | .module-7 {
219 | fill: #f92672;
220 | }
221 |
222 | .module-8 {
223 | fill: #e9e901;
224 | }
225 |
226 | .module-9 {
227 | fill: #83be69;
228 | }
229 |
230 | .module-10 {
231 | fill: #f1d18c;
232 | }
233 |
234 | .node:hover {
235 | fill: #000;
236 | }
237 |
238 | .node:hover,
239 | .node-source,
240 | .node-target {
241 | font: 700 12px "Helvetica Neue", Helvetica, Arial, sans-serif;
242 | cursor: pointer;
243 | }
244 |
245 | .node-source {
246 | fill: #ff5711;
247 | }
248 |
249 | .node-target {
250 | fill: #45aa73;
251 | }
252 |
253 | .link-source,
254 | .link-target {
255 | stroke-opacity: 1;
256 | stroke-width: 2px;
257 | }
258 |
259 | .link-source {
260 | stroke: #3dcd92;
261 | }
262 |
263 | .link-target {
264 | stroke: #ff5711;
265 | }
266 |
267 | @keyframes fadeOut {
268 | 0% {
269 | stroke-opacity: 0.2;
270 | }
271 |
272 | 100% {
273 | stroke-opacity: 0.075;
274 | }
275 | }
276 |
277 | @keyframes fadeIn {
278 | 0% {
279 | stroke-opacity: 0.075;
280 | }
281 |
282 | 100% {
283 | stroke-opacity: 0.2;
284 | }
285 | }
286 |
287 | .link-dimmed {
288 | stroke-opacity: 0.075;
289 | }
290 |
291 |
292 | /* Parse trees */
293 | .tree-node {
294 | stroke-width: 2;
295 | stroke: #C0C0C0;
296 | fill: rgba(255, 255, 255, 1);
297 | }
298 |
299 | .tree-root {
300 | stroke-width: 2;
301 | fill: #7db6dd;
302 | stroke: #7db6dd;
303 | }
304 |
305 | .tree-leaf {
306 | cursor: default;
307 | stroke-width: 2;
308 | fill: rgba(160, 171, 136, 1);
309 | stroke: rgba(117, 119, 91, 1);
310 | }
311 |
312 | .tree-error {
313 | stroke-width: 2;
314 | fill: #dd8f7d;
315 | stroke: rgba(188, 106, 122, 1);
316 | }
317 |
318 | .tree-node text {
319 | cursor: default;
320 | font: 16px "Helvetica Neue", sans-serif;
321 | fill: rgba(41, 41, 41, 1);
322 | stroke: none;
323 | }
324 |
325 | .tree-leaf text,
326 | .tree-root text,
327 | .tree-error text {
328 | font: 16px "Helvetica Neue", sans-serif;
329 | fill: #ffffff;
330 | stroke: none;
331 | }
332 |
333 | .tree-link {
334 | stroke-width: 2px;
335 | fill: none;
336 | stroke: rgba(128, 128, 128, 1);
337 | }
338 |
339 | g .token-value {
340 | fill: #404040;
341 | stroke: none;
342 | font: 14pt "Source Code Pro", "Hack", "Consolas", "Andale Mono", monospace;
343 | }
344 |
345 | g .token-range {
346 | fill: rgba(0, 77, 98, 1);
347 | stroke: none;
348 | font: 8pt "Source Code Pro", "Hack", "Consolas", "Andale Mono", monospace;
349 | }
350 |
351 | .saveSVGButton {
352 | background-image: url(./save-svg-light.svg);
353 | width: 32px;
354 | height: 32px;
355 |
356 | margin-left: 8px;
357 |
358 | background-position: center;
359 | background-repeat: no-repeat;
360 | }
361 |
362 | .saveHTMLButton {
363 | background-image: url(./save-html-light.svg);
364 | width: 32px;
365 | height: 32px;
366 |
367 | background-position: center;
368 | background-repeat: no-repeat;
369 | }
370 |
371 | .headerIcon {
372 | width: 90px;
373 | height: 90px;
374 | margin-top: 20px;
375 |
376 | background-position: center;
377 | background-repeat: no-repeat;
378 | background-size: contain;
379 | }
380 |
381 | .rrdIcon {
382 | background-image: url(./rrd-light.svg);
383 | }
384 |
385 | .atnIcon {
386 | background-image: url(./atn-light.png);
387 | }
388 |
389 | g .rrd-warning {
390 | stroke: orange;
391 | }
392 |
393 | g .rrd-predicate {
394 | stroke: rgba(23, 159, 255, 0.5);
395 | }
396 |
397 | .atn-graph-color {
398 | color: crimson;
399 | }
400 |
401 | .rrd-graph-color {
402 | color: rgba(10, 188, 80, 1);
403 | }
404 |
405 | .call-graph-color {
406 | color: rgba(255, 191, 15, 1);
407 | }
408 |
409 | .call-graph-save-image {
410 | background: url('../misc/save-svg-light.png');
411 | vertical-align: middle;
412 | margin-left: 5px;
413 | width: 24px;
414 | height: 24px;
415 | display: inline-block;
416 | cursor: pointer;
417 | }
418 |
419 | .parse-tree-color {
420 | color: rgba(49, 112, 212, 1);
421 | }
422 |
423 | .parse-tree-save-image {
424 | background: rgba(49, 112, 212, 1) url('../misc/save.png');
425 | vertical-align: middle;
426 | margin-left: 5px;
427 | width: 24px;
428 | height: 24px;
429 | display: inline-block;
430 | cursor: pointer;
431 | }
432 |
433 | .switch label {
434 | width: 100%;
435 | height: 100%;
436 | margin: 0;
437 | padding: 0;
438 | display: block;
439 | position: absolute;
440 | top: 0;
441 | left: 0;
442 | z-index: 10;
443 | }
444 |
445 | .switch input {
446 | display: none;
447 | }
448 |
449 | .switch > span {
450 | display: inline-block;
451 | top: 3px;
452 | transition: left 0.2s;
453 | }
454 |
455 | .switch-border {
456 | height: 12px;
457 | width: 24px;
458 | position: relative;
459 | border: 1px solid rgba(49, 112, 212, 0.75);
460 | background-color: rgba(49, 112, 212, 0.75);
461 | border-radius: 3.5em;
462 | }
463 |
464 | .switch-handle-top {
465 | width: 12px;
466 | height: 12px;
467 | position: absolute;
468 | left: 0;
469 | top: 0;
470 | z-index: 4;
471 | background-color: white;
472 | border-radius: 2.5em;
473 | transition: left 0.2s;
474 | }
475 |
476 | .switch input:checked ~ .switch-handle-top {
477 | top: 0;
478 | left: 12px;
479 | }
480 |
--------------------------------------------------------------------------------
/docs/grammars/FattyAcids/light.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Mike Lischke. All rights reserved.
3 | * Licensed under the MIT License. See License.txt in the project root for license information.
4 | */
5 |
6 | /*
7 | * This file contains all default CSS rules for the light vscode them, used for various diagrams and graphs.
8 | * Use the "antlr4.customCSS" setting in vscode to specify your own file, if you like to override some rules.
9 | *
10 | * Most of the appearance is defined here, while only some adjustments for the dark theme exist in dark.css.
11 | * This style sheet is also used for exported svg files.
12 | */
13 |
14 |
15 | /* ATN graphs */
16 |
17 | .transition {
18 | fill: none;
19 | stroke: #AAA;
20 | stroke-width: 2px;
21 | }
22 |
23 | .marker {
24 | fill: #999;
25 | stroke: none;
26 | }
27 |
28 | .stateLabel {
29 | font: bold 11pt "Helvetica Neue", Arial, sans-serif;
30 | fill: white;
31 | text-anchor: middle;
32 | pointer-events: none;
33 | }
34 |
35 | .stateTypeLabel {
36 | font: bold 7pt monospace;
37 | fill: #EEE;
38 | text-anchor: middle;
39 | pointer-events: none;
40 | }
41 |
42 | .linkLabel {
43 | font: 9pt monospace;
44 | fill: #606060;
45 | text-anchor: middle;
46 | pointer-events: none;
47 | white-space: pre;
48 | }
49 |
50 | .linkLabel > .heading {
51 | fill: cornflowerblue;
52 | font-weight: 800;
53 | }
54 |
55 | .linkLabel > .predicate {
56 | fill: gray;
57 | font-weight: 400;
58 | font-size: 7pt
59 | }
60 |
61 | .state {
62 | stroke: #505050;
63 | stroke-width: 3px;
64 | cursor: move;
65 | pointer-events: all;
66 | /*filter: url(#black-glow);*/
67 | }
68 |
69 | .state.BASIC {
70 | fill: #AAA;
71 | }
72 |
73 | .state.START {
74 | fill: #36bde0;
75 | }
76 |
77 | .state.BSTART {
78 | fill: #f39900;
79 | }
80 |
81 | .state.PBSTART {
82 | fill: #98c000;
83 | }
84 |
85 | .state.SBSTART {
86 | fill: #607dbd;
87 | }
88 |
89 | .state.TSTART {
90 | fill: #ffd300;
91 | }
92 |
93 | .state.STOP {
94 | fill: #2baa5b;
95 | }
96 |
97 | .state.BEND {
98 | fill: #c2c269;
99 | }
100 |
101 | .state.SLBACK {
102 | fill: #608b4e;
103 | }
104 |
105 | .state.SLENTRY {
106 | fill: #a260cb;
107 | }
108 |
109 | .state.PLBACK {
110 | fill: #517979;
111 | }
112 |
113 | .state.LEND {
114 | fill: #9b90c3;
115 | }
116 |
117 | .state.RULE {
118 | fill: #b73645;
119 | }
120 |
121 | .state.RULE.recursive {
122 | fill: #36bde0;
123 | }
124 |
125 |
126 | /* Railroad diagrams */
127 |
128 | /* The connection lines. */
129 | svg.railroad-diagram path {
130 | stroke-width: 2;
131 | stroke: darkgray;
132 | fill: rgba(0, 0, 0, 0);
133 | }
134 |
135 | /* All text except comments. */
136 | svg.railroad-diagram text {
137 | font: bold 12px Hack, "Source Code Pro", monospace;
138 | text-anchor: middle;
139 | fill: #404040;
140 | }
141 |
142 | /* Comment text */
143 | svg.railroad-diagram text.comment {
144 | font: italic 10px Hack, "Source Code Pro", monospace;
145 | fill: #404040;
146 | }
147 |
148 | /* The terminal boxes. */
149 | svg.railroad-diagram g.terminal rect {
150 | stroke-width: 2;
151 | stroke: #404040;
152 | fill: rgba(200, 200, 200, 1);
153 | }
154 |
155 | svg.railroad-diagram g.non-terminal rect {
156 | /* The non-terminal boxes. */
157 | stroke-width: 2;
158 | stroke: #404040;
159 | fill: rgba(255, 255, 255, 1);
160 | }
161 |
162 | /* Multiple choice text, not working atm. */
163 | svg.railroad-diagram text.diagram-text {
164 | font-size: 12px Hack, "Source Code Pro", monospace;
165 | fill: red;
166 | }
167 |
168 | /* Multiple choice text, not working atm. */
169 | svg.railroad-diagram path.diagram-text {
170 | stroke-width: 1;
171 | stroke: red;
172 | fill: red;
173 | cursor: help;
174 | }
175 |
176 | /* Multiple choice text, not working atm. */
177 | svg.railroad-diagram g.diagram-text:hover path.diagram-text {
178 | fill: #f00;
179 | }
180 |
181 | /* Call graphs */
182 |
183 | .node {
184 | font: 200 10px "Helvetica Neue", Helvetica, Arial, sans-serif;
185 | }
186 |
187 | .link {
188 | stroke: #000;
189 | stroke-opacity: .2;
190 | fill: none;
191 | pointer-events: none;
192 | }
193 |
194 | .module-1 {
195 | fill: #0ca9fd;
196 | }
197 |
198 | .module-2 {
199 | fill: #63bf8d;
200 | }
201 |
202 | .module-3 {
203 | fill: #ff8801;
204 | }
205 |
206 | .module-4 {
207 | fill: #b9fc34;
208 | }
209 |
210 | .module-5 {
211 | fill: #90e0e0;
212 | }
213 |
214 | .module-6 {
215 | fill: #b4a3f5;
216 | }
217 |
218 | .module-7 {
219 | fill: #f92672;
220 | }
221 |
222 | .module-8 {
223 | fill: #e9e901;
224 | }
225 |
226 | .module-9 {
227 | fill: #83be69;
228 | }
229 |
230 | .module-10 {
231 | fill: #f1d18c;
232 | }
233 |
234 | .node:hover {
235 | fill: #000;
236 | }
237 |
238 | .node:hover,
239 | .node-source,
240 | .node-target {
241 | font: 700 12px "Helvetica Neue", Helvetica, Arial, sans-serif;
242 | cursor: pointer;
243 | }
244 |
245 | .node-source {
246 | fill: #ff5711;
247 | }
248 |
249 | .node-target {
250 | fill: #45aa73;
251 | }
252 |
253 | .link-source,
254 | .link-target {
255 | stroke-opacity: 1;
256 | stroke-width: 2px;
257 | }
258 |
259 | .link-source {
260 | stroke: #3dcd92;
261 | }
262 |
263 | .link-target {
264 | stroke: #ff5711;
265 | }
266 |
267 | @keyframes fadeOut {
268 | 0% {
269 | stroke-opacity: 0.2;
270 | }
271 |
272 | 100% {
273 | stroke-opacity: 0.075;
274 | }
275 | }
276 |
277 | @keyframes fadeIn {
278 | 0% {
279 | stroke-opacity: 0.075;
280 | }
281 |
282 | 100% {
283 | stroke-opacity: 0.2;
284 | }
285 | }
286 |
287 | .link-dimmed {
288 | stroke-opacity: 0.075;
289 | }
290 |
291 |
292 | /* Parse trees */
293 | .tree-node {
294 | stroke-width: 2;
295 | stroke: #C0C0C0;
296 | fill: rgba(255, 255, 255, 1);
297 | }
298 |
299 | .tree-root {
300 | stroke-width: 2;
301 | fill: #7db6dd;
302 | stroke: #7db6dd;
303 | }
304 |
305 | .tree-leaf {
306 | cursor: default;
307 | stroke-width: 2;
308 | fill: rgba(160, 171, 136, 1);
309 | stroke: rgba(117, 119, 91, 1);
310 | }
311 |
312 | .tree-error {
313 | stroke-width: 2;
314 | fill: #dd8f7d;
315 | stroke: rgba(188, 106, 122, 1);
316 | }
317 |
318 | .tree-node text {
319 | cursor: default;
320 | font: 16px "Helvetica Neue", sans-serif;
321 | fill: rgba(41, 41, 41, 1);
322 | stroke: none;
323 | }
324 |
325 | .tree-leaf text,
326 | .tree-root text,
327 | .tree-error text {
328 | font: 16px "Helvetica Neue", sans-serif;
329 | fill: #ffffff;
330 | stroke: none;
331 | }
332 |
333 | .tree-link {
334 | stroke-width: 2px;
335 | fill: none;
336 | stroke: rgba(128, 128, 128, 1);
337 | }
338 |
339 | g .token-value {
340 | fill: #404040;
341 | stroke: none;
342 | font: 14pt "Source Code Pro", "Hack", "Consolas", "Andale Mono", monospace;
343 | }
344 |
345 | g .token-range {
346 | fill: rgba(0, 77, 98, 1);
347 | stroke: none;
348 | font: 8pt "Source Code Pro", "Hack", "Consolas", "Andale Mono", monospace;
349 | }
350 |
351 | .saveSVGButton {
352 | background-image: url(./save-svg-light.svg);
353 | width: 32px;
354 | height: 32px;
355 |
356 | margin-left: 8px;
357 |
358 | background-position: center;
359 | background-repeat: no-repeat;
360 | }
361 |
362 | .saveHTMLButton {
363 | background-image: url(./save-html-light.svg);
364 | width: 32px;
365 | height: 32px;
366 |
367 | background-position: center;
368 | background-repeat: no-repeat;
369 | }
370 |
371 | .headerIcon {
372 | width: 90px;
373 | height: 90px;
374 | margin-top: 20px;
375 |
376 | background-position: center;
377 | background-repeat: no-repeat;
378 | background-size: contain;
379 | }
380 |
381 | .rrdIcon {
382 | background-image: url(./rrd-light.svg);
383 | }
384 |
385 | .atnIcon {
386 | background-image: url(./atn-light.png);
387 | }
388 |
389 | g .rrd-warning {
390 | stroke: orange;
391 | }
392 |
393 | g .rrd-predicate {
394 | stroke: rgba(23, 159, 255, 0.5);
395 | }
396 |
397 | .atn-graph-color {
398 | color: crimson;
399 | }
400 |
401 | .rrd-graph-color {
402 | color: rgba(10, 188, 80, 1);
403 | }
404 |
405 | .call-graph-color {
406 | color: rgba(255, 191, 15, 1);
407 | }
408 |
409 | .call-graph-save-image {
410 | background: url('../misc/save-svg-light.png');
411 | vertical-align: middle;
412 | margin-left: 5px;
413 | width: 24px;
414 | height: 24px;
415 | display: inline-block;
416 | cursor: pointer;
417 | }
418 |
419 | .parse-tree-color {
420 | color: rgba(49, 112, 212, 1);
421 | }
422 |
423 | .parse-tree-save-image {
424 | background: rgba(49, 112, 212, 1) url('../misc/save.png');
425 | vertical-align: middle;
426 | margin-left: 5px;
427 | width: 24px;
428 | height: 24px;
429 | display: inline-block;
430 | cursor: pointer;
431 | }
432 |
433 | .switch label {
434 | width: 100%;
435 | height: 100%;
436 | margin: 0;
437 | padding: 0;
438 | display: block;
439 | position: absolute;
440 | top: 0;
441 | left: 0;
442 | z-index: 10;
443 | }
444 |
445 | .switch input {
446 | display: none;
447 | }
448 |
449 | .switch > span {
450 | display: inline-block;
451 | top: 3px;
452 | transition: left 0.2s;
453 | }
454 |
455 | .switch-border {
456 | height: 12px;
457 | width: 24px;
458 | position: relative;
459 | border: 1px solid rgba(49, 112, 212, 0.75);
460 | background-color: rgba(49, 112, 212, 0.75);
461 | border-radius: 3.5em;
462 | }
463 |
464 | .switch-handle-top {
465 | width: 12px;
466 | height: 12px;
467 | position: absolute;
468 | left: 0;
469 | top: 0;
470 | z-index: 4;
471 | background-color: white;
472 | border-radius: 2.5em;
473 | transition: left 0.2s;
474 | }
475 |
476 | .switch input:checked ~ .switch-handle-top {
477 | top: 0;
478 | left: 12px;
479 | }
480 |
--------------------------------------------------------------------------------
/docs/grammars/LipidMaps/light.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Mike Lischke. All rights reserved.
3 | * Licensed under the MIT License. See License.txt in the project root for license information.
4 | */
5 |
6 | /*
7 | * This file contains all default CSS rules for the light vscode them, used for various diagrams and graphs.
8 | * Use the "antlr4.customCSS" setting in vscode to specify your own file, if you like to override some rules.
9 | *
10 | * Most of the appearance is defined here, while only some adjustments for the dark theme exist in dark.css.
11 | * This style sheet is also used for exported svg files.
12 | */
13 |
14 |
15 | /* ATN graphs */
16 |
17 | .transition {
18 | fill: none;
19 | stroke: #AAA;
20 | stroke-width: 2px;
21 | }
22 |
23 | .marker {
24 | fill: #999;
25 | stroke: none;
26 | }
27 |
28 | .stateLabel {
29 | font: bold 11pt "Helvetica Neue", Arial, sans-serif;
30 | fill: white;
31 | text-anchor: middle;
32 | pointer-events: none;
33 | }
34 |
35 | .stateTypeLabel {
36 | font: bold 7pt monospace;
37 | fill: #EEE;
38 | text-anchor: middle;
39 | pointer-events: none;
40 | }
41 |
42 | .linkLabel {
43 | font: 9pt monospace;
44 | fill: #606060;
45 | text-anchor: middle;
46 | pointer-events: none;
47 | white-space: pre;
48 | }
49 |
50 | .linkLabel > .heading {
51 | fill: cornflowerblue;
52 | font-weight: 800;
53 | }
54 |
55 | .linkLabel > .predicate {
56 | fill: gray;
57 | font-weight: 400;
58 | font-size: 7pt
59 | }
60 |
61 | .state {
62 | stroke: #505050;
63 | stroke-width: 3px;
64 | cursor: move;
65 | pointer-events: all;
66 | /*filter: url(#black-glow);*/
67 | }
68 |
69 | .state.BASIC {
70 | fill: #AAA;
71 | }
72 |
73 | .state.START {
74 | fill: #36bde0;
75 | }
76 |
77 | .state.BSTART {
78 | fill: #f39900;
79 | }
80 |
81 | .state.PBSTART {
82 | fill: #98c000;
83 | }
84 |
85 | .state.SBSTART {
86 | fill: #607dbd;
87 | }
88 |
89 | .state.TSTART {
90 | fill: #ffd300;
91 | }
92 |
93 | .state.STOP {
94 | fill: #2baa5b;
95 | }
96 |
97 | .state.BEND {
98 | fill: #c2c269;
99 | }
100 |
101 | .state.SLBACK {
102 | fill: #608b4e;
103 | }
104 |
105 | .state.SLENTRY {
106 | fill: #a260cb;
107 | }
108 |
109 | .state.PLBACK {
110 | fill: #517979;
111 | }
112 |
113 | .state.LEND {
114 | fill: #9b90c3;
115 | }
116 |
117 | .state.RULE {
118 | fill: #b73645;
119 | }
120 |
121 | .state.RULE.recursive {
122 | fill: #36bde0;
123 | }
124 |
125 |
126 | /* Railroad diagrams */
127 |
128 | /* The connection lines. */
129 | svg.railroad-diagram path {
130 | stroke-width: 2;
131 | stroke: darkgray;
132 | fill: rgba(0, 0, 0, 0);
133 | }
134 |
135 | /* All text except comments. */
136 | svg.railroad-diagram text {
137 | font: bold 12px Hack, "Source Code Pro", monospace;
138 | text-anchor: middle;
139 | fill: #404040;
140 | }
141 |
142 | /* Comment text */
143 | svg.railroad-diagram text.comment {
144 | font: italic 10px Hack, "Source Code Pro", monospace;
145 | fill: #404040;
146 | }
147 |
148 | /* The terminal boxes. */
149 | svg.railroad-diagram g.terminal rect {
150 | stroke-width: 2;
151 | stroke: #404040;
152 | fill: rgba(200, 200, 200, 1);
153 | }
154 |
155 | svg.railroad-diagram g.non-terminal rect {
156 | /* The non-terminal boxes. */
157 | stroke-width: 2;
158 | stroke: #404040;
159 | fill: rgba(255, 255, 255, 1);
160 | }
161 |
162 | /* Multiple choice text, not working atm. */
163 | svg.railroad-diagram text.diagram-text {
164 | font-size: 12px Hack, "Source Code Pro", monospace;
165 | fill: red;
166 | }
167 |
168 | /* Multiple choice text, not working atm. */
169 | svg.railroad-diagram path.diagram-text {
170 | stroke-width: 1;
171 | stroke: red;
172 | fill: red;
173 | cursor: help;
174 | }
175 |
176 | /* Multiple choice text, not working atm. */
177 | svg.railroad-diagram g.diagram-text:hover path.diagram-text {
178 | fill: #f00;
179 | }
180 |
181 | /* Call graphs */
182 |
183 | .node {
184 | font: 200 10px "Helvetica Neue", Helvetica, Arial, sans-serif;
185 | }
186 |
187 | .link {
188 | stroke: #000;
189 | stroke-opacity: .2;
190 | fill: none;
191 | pointer-events: none;
192 | }
193 |
194 | .module-1 {
195 | fill: #0ca9fd;
196 | }
197 |
198 | .module-2 {
199 | fill: #63bf8d;
200 | }
201 |
202 | .module-3 {
203 | fill: #ff8801;
204 | }
205 |
206 | .module-4 {
207 | fill: #b9fc34;
208 | }
209 |
210 | .module-5 {
211 | fill: #90e0e0;
212 | }
213 |
214 | .module-6 {
215 | fill: #b4a3f5;
216 | }
217 |
218 | .module-7 {
219 | fill: #f92672;
220 | }
221 |
222 | .module-8 {
223 | fill: #e9e901;
224 | }
225 |
226 | .module-9 {
227 | fill: #83be69;
228 | }
229 |
230 | .module-10 {
231 | fill: #f1d18c;
232 | }
233 |
234 | .node:hover {
235 | fill: #000;
236 | }
237 |
238 | .node:hover,
239 | .node-source,
240 | .node-target {
241 | font: 700 12px "Helvetica Neue", Helvetica, Arial, sans-serif;
242 | cursor: pointer;
243 | }
244 |
245 | .node-source {
246 | fill: #ff5711;
247 | }
248 |
249 | .node-target {
250 | fill: #45aa73;
251 | }
252 |
253 | .link-source,
254 | .link-target {
255 | stroke-opacity: 1;
256 | stroke-width: 2px;
257 | }
258 |
259 | .link-source {
260 | stroke: #3dcd92;
261 | }
262 |
263 | .link-target {
264 | stroke: #ff5711;
265 | }
266 |
267 | @keyframes fadeOut {
268 | 0% {
269 | stroke-opacity: 0.2;
270 | }
271 |
272 | 100% {
273 | stroke-opacity: 0.075;
274 | }
275 | }
276 |
277 | @keyframes fadeIn {
278 | 0% {
279 | stroke-opacity: 0.075;
280 | }
281 |
282 | 100% {
283 | stroke-opacity: 0.2;
284 | }
285 | }
286 |
287 | .link-dimmed {
288 | stroke-opacity: 0.075;
289 | }
290 |
291 |
292 | /* Parse trees */
293 | .tree-node {
294 | stroke-width: 2;
295 | stroke: #C0C0C0;
296 | fill: rgba(255, 255, 255, 1);
297 | }
298 |
299 | .tree-root {
300 | stroke-width: 2;
301 | fill: #7db6dd;
302 | stroke: #7db6dd;
303 | }
304 |
305 | .tree-leaf {
306 | cursor: default;
307 | stroke-width: 2;
308 | fill: rgba(160, 171, 136, 1);
309 | stroke: rgba(117, 119, 91, 1);
310 | }
311 |
312 | .tree-error {
313 | stroke-width: 2;
314 | fill: #dd8f7d;
315 | stroke: rgba(188, 106, 122, 1);
316 | }
317 |
318 | .tree-node text {
319 | cursor: default;
320 | font: 16px "Helvetica Neue", sans-serif;
321 | fill: rgba(41, 41, 41, 1);
322 | stroke: none;
323 | }
324 |
325 | .tree-leaf text,
326 | .tree-root text,
327 | .tree-error text {
328 | font: 16px "Helvetica Neue", sans-serif;
329 | fill: #ffffff;
330 | stroke: none;
331 | }
332 |
333 | .tree-link {
334 | stroke-width: 2px;
335 | fill: none;
336 | stroke: rgba(128, 128, 128, 1);
337 | }
338 |
339 | g .token-value {
340 | fill: #404040;
341 | stroke: none;
342 | font: 14pt "Source Code Pro", "Hack", "Consolas", "Andale Mono", monospace;
343 | }
344 |
345 | g .token-range {
346 | fill: rgba(0, 77, 98, 1);
347 | stroke: none;
348 | font: 8pt "Source Code Pro", "Hack", "Consolas", "Andale Mono", monospace;
349 | }
350 |
351 | .saveSVGButton {
352 | background-image: url(./save-svg-light.svg);
353 | width: 32px;
354 | height: 32px;
355 |
356 | margin-left: 8px;
357 |
358 | background-position: center;
359 | background-repeat: no-repeat;
360 | }
361 |
362 | .saveHTMLButton {
363 | background-image: url(./save-html-light.svg);
364 | width: 32px;
365 | height: 32px;
366 |
367 | background-position: center;
368 | background-repeat: no-repeat;
369 | }
370 |
371 | .headerIcon {
372 | width: 90px;
373 | height: 90px;
374 | margin-top: 20px;
375 |
376 | background-position: center;
377 | background-repeat: no-repeat;
378 | background-size: contain;
379 | }
380 |
381 | .rrdIcon {
382 | background-image: url(./rrd-light.svg);
383 | }
384 |
385 | .atnIcon {
386 | background-image: url(./atn-light.png);
387 | }
388 |
389 | g .rrd-warning {
390 | stroke: orange;
391 | }
392 |
393 | g .rrd-predicate {
394 | stroke: rgba(23, 159, 255, 0.5);
395 | }
396 |
397 | .atn-graph-color {
398 | color: crimson;
399 | }
400 |
401 | .rrd-graph-color {
402 | color: rgba(10, 188, 80, 1);
403 | }
404 |
405 | .call-graph-color {
406 | color: rgba(255, 191, 15, 1);
407 | }
408 |
409 | .call-graph-save-image {
410 | background: url('../misc/save-svg-light.png');
411 | vertical-align: middle;
412 | margin-left: 5px;
413 | width: 24px;
414 | height: 24px;
415 | display: inline-block;
416 | cursor: pointer;
417 | }
418 |
419 | .parse-tree-color {
420 | color: rgba(49, 112, 212, 1);
421 | }
422 |
423 | .parse-tree-save-image {
424 | background: rgba(49, 112, 212, 1) url('../misc/save.png');
425 | vertical-align: middle;
426 | margin-left: 5px;
427 | width: 24px;
428 | height: 24px;
429 | display: inline-block;
430 | cursor: pointer;
431 | }
432 |
433 | .switch label {
434 | width: 100%;
435 | height: 100%;
436 | margin: 0;
437 | padding: 0;
438 | display: block;
439 | position: absolute;
440 | top: 0;
441 | left: 0;
442 | z-index: 10;
443 | }
444 |
445 | .switch input {
446 | display: none;
447 | }
448 |
449 | .switch > span {
450 | display: inline-block;
451 | top: 3px;
452 | transition: left 0.2s;
453 | }
454 |
455 | .switch-border {
456 | height: 12px;
457 | width: 24px;
458 | position: relative;
459 | border: 1px solid rgba(49, 112, 212, 0.75);
460 | background-color: rgba(49, 112, 212, 0.75);
461 | border-radius: 3.5em;
462 | }
463 |
464 | .switch-handle-top {
465 | width: 12px;
466 | height: 12px;
467 | position: absolute;
468 | left: 0;
469 | top: 0;
470 | z-index: 4;
471 | background-color: white;
472 | border-radius: 2.5em;
473 | transition: left 0.2s;
474 | }
475 |
476 | .switch input:checked ~ .switch-handle-top {
477 | top: 0;
478 | left: 12px;
479 | }
480 |
--------------------------------------------------------------------------------
/docs/grammars/Shorthand2020/light.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Mike Lischke. All rights reserved.
3 | * Licensed under the MIT License. See License.txt in the project root for license information.
4 | */
5 |
6 | /*
7 | * This file contains all default CSS rules for the light vscode them, used for various diagrams and graphs.
8 | * Use the "antlr4.customCSS" setting in vscode to specify your own file, if you like to override some rules.
9 | *
10 | * Most of the appearance is defined here, while only some adjustments for the dark theme exist in dark.css.
11 | * This style sheet is also used for exported svg files.
12 | */
13 |
14 |
15 | /* ATN graphs */
16 |
17 | .transition {
18 | fill: none;
19 | stroke: #AAA;
20 | stroke-width: 2px;
21 | }
22 |
23 | .marker {
24 | fill: #999;
25 | stroke: none;
26 | }
27 |
28 | .stateLabel {
29 | font: bold 11pt "Helvetica Neue", Arial, sans-serif;
30 | fill: white;
31 | text-anchor: middle;
32 | pointer-events: none;
33 | }
34 |
35 | .stateTypeLabel {
36 | font: bold 7pt monospace;
37 | fill: #EEE;
38 | text-anchor: middle;
39 | pointer-events: none;
40 | }
41 |
42 | .linkLabel {
43 | font: 9pt monospace;
44 | fill: #606060;
45 | text-anchor: middle;
46 | pointer-events: none;
47 | white-space: pre;
48 | }
49 |
50 | .linkLabel > .heading {
51 | fill: cornflowerblue;
52 | font-weight: 800;
53 | }
54 |
55 | .linkLabel > .predicate {
56 | fill: gray;
57 | font-weight: 400;
58 | font-size: 7pt
59 | }
60 |
61 | .state {
62 | stroke: #505050;
63 | stroke-width: 3px;
64 | cursor: move;
65 | pointer-events: all;
66 | /*filter: url(#black-glow);*/
67 | }
68 |
69 | .state.BASIC {
70 | fill: #AAA;
71 | }
72 |
73 | .state.START {
74 | fill: #36bde0;
75 | }
76 |
77 | .state.BSTART {
78 | fill: #f39900;
79 | }
80 |
81 | .state.PBSTART {
82 | fill: #98c000;
83 | }
84 |
85 | .state.SBSTART {
86 | fill: #607dbd;
87 | }
88 |
89 | .state.TSTART {
90 | fill: #ffd300;
91 | }
92 |
93 | .state.STOP {
94 | fill: #2baa5b;
95 | }
96 |
97 | .state.BEND {
98 | fill: #c2c269;
99 | }
100 |
101 | .state.SLBACK {
102 | fill: #608b4e;
103 | }
104 |
105 | .state.SLENTRY {
106 | fill: #a260cb;
107 | }
108 |
109 | .state.PLBACK {
110 | fill: #517979;
111 | }
112 |
113 | .state.LEND {
114 | fill: #9b90c3;
115 | }
116 |
117 | .state.RULE {
118 | fill: #b73645;
119 | }
120 |
121 | .state.RULE.recursive {
122 | fill: #36bde0;
123 | }
124 |
125 |
126 | /* Railroad diagrams */
127 |
128 | /* The connection lines. */
129 | svg.railroad-diagram path {
130 | stroke-width: 2;
131 | stroke: darkgray;
132 | fill: rgba(0, 0, 0, 0);
133 | }
134 |
135 | /* All text except comments. */
136 | svg.railroad-diagram text {
137 | font: bold 12px Hack, "Source Code Pro", monospace;
138 | text-anchor: middle;
139 | fill: #404040;
140 | }
141 |
142 | /* Comment text */
143 | svg.railroad-diagram text.comment {
144 | font: italic 10px Hack, "Source Code Pro", monospace;
145 | fill: #404040;
146 | }
147 |
148 | /* The terminal boxes. */
149 | svg.railroad-diagram g.terminal rect {
150 | stroke-width: 2;
151 | stroke: #404040;
152 | fill: rgba(200, 200, 200, 1);
153 | }
154 |
155 | svg.railroad-diagram g.non-terminal rect {
156 | /* The non-terminal boxes. */
157 | stroke-width: 2;
158 | stroke: #404040;
159 | fill: rgba(255, 255, 255, 1);
160 | }
161 |
162 | /* Multiple choice text, not working atm. */
163 | svg.railroad-diagram text.diagram-text {
164 | font-size: 12px Hack, "Source Code Pro", monospace;
165 | fill: red;
166 | }
167 |
168 | /* Multiple choice text, not working atm. */
169 | svg.railroad-diagram path.diagram-text {
170 | stroke-width: 1;
171 | stroke: red;
172 | fill: red;
173 | cursor: help;
174 | }
175 |
176 | /* Multiple choice text, not working atm. */
177 | svg.railroad-diagram g.diagram-text:hover path.diagram-text {
178 | fill: #f00;
179 | }
180 |
181 | /* Call graphs */
182 |
183 | .node {
184 | font: 200 10px "Helvetica Neue", Helvetica, Arial, sans-serif;
185 | }
186 |
187 | .link {
188 | stroke: #000;
189 | stroke-opacity: .2;
190 | fill: none;
191 | pointer-events: none;
192 | }
193 |
194 | .module-1 {
195 | fill: #0ca9fd;
196 | }
197 |
198 | .module-2 {
199 | fill: #63bf8d;
200 | }
201 |
202 | .module-3 {
203 | fill: #ff8801;
204 | }
205 |
206 | .module-4 {
207 | fill: #b9fc34;
208 | }
209 |
210 | .module-5 {
211 | fill: #90e0e0;
212 | }
213 |
214 | .module-6 {
215 | fill: #b4a3f5;
216 | }
217 |
218 | .module-7 {
219 | fill: #f92672;
220 | }
221 |
222 | .module-8 {
223 | fill: #e9e901;
224 | }
225 |
226 | .module-9 {
227 | fill: #83be69;
228 | }
229 |
230 | .module-10 {
231 | fill: #f1d18c;
232 | }
233 |
234 | .node:hover {
235 | fill: #000;
236 | }
237 |
238 | .node:hover,
239 | .node-source,
240 | .node-target {
241 | font: 700 12px "Helvetica Neue", Helvetica, Arial, sans-serif;
242 | cursor: pointer;
243 | }
244 |
245 | .node-source {
246 | fill: #ff5711;
247 | }
248 |
249 | .node-target {
250 | fill: #45aa73;
251 | }
252 |
253 | .link-source,
254 | .link-target {
255 | stroke-opacity: 1;
256 | stroke-width: 2px;
257 | }
258 |
259 | .link-source {
260 | stroke: #3dcd92;
261 | }
262 |
263 | .link-target {
264 | stroke: #ff5711;
265 | }
266 |
267 | @keyframes fadeOut {
268 | 0% {
269 | stroke-opacity: 0.2;
270 | }
271 |
272 | 100% {
273 | stroke-opacity: 0.075;
274 | }
275 | }
276 |
277 | @keyframes fadeIn {
278 | 0% {
279 | stroke-opacity: 0.075;
280 | }
281 |
282 | 100% {
283 | stroke-opacity: 0.2;
284 | }
285 | }
286 |
287 | .link-dimmed {
288 | stroke-opacity: 0.075;
289 | }
290 |
291 |
292 | /* Parse trees */
293 | .tree-node {
294 | stroke-width: 2;
295 | stroke: #C0C0C0;
296 | fill: rgba(255, 255, 255, 1);
297 | }
298 |
299 | .tree-root {
300 | stroke-width: 2;
301 | fill: #7db6dd;
302 | stroke: #7db6dd;
303 | }
304 |
305 | .tree-leaf {
306 | cursor: default;
307 | stroke-width: 2;
308 | fill: rgba(160, 171, 136, 1);
309 | stroke: rgba(117, 119, 91, 1);
310 | }
311 |
312 | .tree-error {
313 | stroke-width: 2;
314 | fill: #dd8f7d;
315 | stroke: rgba(188, 106, 122, 1);
316 | }
317 |
318 | .tree-node text {
319 | cursor: default;
320 | font: 16px "Helvetica Neue", sans-serif;
321 | fill: rgba(41, 41, 41, 1);
322 | stroke: none;
323 | }
324 |
325 | .tree-leaf text,
326 | .tree-root text,
327 | .tree-error text {
328 | font: 16px "Helvetica Neue", sans-serif;
329 | fill: #ffffff;
330 | stroke: none;
331 | }
332 |
333 | .tree-link {
334 | stroke-width: 2px;
335 | fill: none;
336 | stroke: rgba(128, 128, 128, 1);
337 | }
338 |
339 | g .token-value {
340 | fill: #404040;
341 | stroke: none;
342 | font: 14pt "Source Code Pro", "Hack", "Consolas", "Andale Mono", monospace;
343 | }
344 |
345 | g .token-range {
346 | fill: rgba(0, 77, 98, 1);
347 | stroke: none;
348 | font: 8pt "Source Code Pro", "Hack", "Consolas", "Andale Mono", monospace;
349 | }
350 |
351 | .saveSVGButton {
352 | background-image: url(./save-svg-light.svg);
353 | width: 32px;
354 | height: 32px;
355 |
356 | margin-left: 8px;
357 |
358 | background-position: center;
359 | background-repeat: no-repeat;
360 | }
361 |
362 | .saveHTMLButton {
363 | background-image: url(./save-html-light.svg);
364 | width: 32px;
365 | height: 32px;
366 |
367 | background-position: center;
368 | background-repeat: no-repeat;
369 | }
370 |
371 | .headerIcon {
372 | width: 90px;
373 | height: 90px;
374 | margin-top: 20px;
375 |
376 | background-position: center;
377 | background-repeat: no-repeat;
378 | background-size: contain;
379 | }
380 |
381 | .rrdIcon {
382 | background-image: url(./rrd-light.svg);
383 | }
384 |
385 | .atnIcon {
386 | background-image: url(./atn-light.png);
387 | }
388 |
389 | g .rrd-warning {
390 | stroke: orange;
391 | }
392 |
393 | g .rrd-predicate {
394 | stroke: rgba(23, 159, 255, 0.5);
395 | }
396 |
397 | .atn-graph-color {
398 | color: crimson;
399 | }
400 |
401 | .rrd-graph-color {
402 | color: rgba(10, 188, 80, 1);
403 | }
404 |
405 | .call-graph-color {
406 | color: rgba(255, 191, 15, 1);
407 | }
408 |
409 | .call-graph-save-image {
410 | background: url('../misc/save-svg-light.png');
411 | vertical-align: middle;
412 | margin-left: 5px;
413 | width: 24px;
414 | height: 24px;
415 | display: inline-block;
416 | cursor: pointer;
417 | }
418 |
419 | .parse-tree-color {
420 | color: rgba(49, 112, 212, 1);
421 | }
422 |
423 | .parse-tree-save-image {
424 | background: rgba(49, 112, 212, 1) url('../misc/save.png');
425 | vertical-align: middle;
426 | margin-left: 5px;
427 | width: 24px;
428 | height: 24px;
429 | display: inline-block;
430 | cursor: pointer;
431 | }
432 |
433 | .switch label {
434 | width: 100%;
435 | height: 100%;
436 | margin: 0;
437 | padding: 0;
438 | display: block;
439 | position: absolute;
440 | top: 0;
441 | left: 0;
442 | z-index: 10;
443 | }
444 |
445 | .switch input {
446 | display: none;
447 | }
448 |
449 | .switch > span {
450 | display: inline-block;
451 | top: 3px;
452 | transition: left 0.2s;
453 | }
454 |
455 | .switch-border {
456 | height: 12px;
457 | width: 24px;
458 | position: relative;
459 | border: 1px solid rgba(49, 112, 212, 0.75);
460 | background-color: rgba(49, 112, 212, 0.75);
461 | border-radius: 3.5em;
462 | }
463 |
464 | .switch-handle-top {
465 | width: 12px;
466 | height: 12px;
467 | position: absolute;
468 | left: 0;
469 | top: 0;
470 | z-index: 4;
471 | background-color: white;
472 | border-radius: 2.5em;
473 | transition: left 0.2s;
474 | }
475 |
476 | .switch input:checked ~ .switch-handle-top {
477 | top: 0;
478 | left: 12px;
479 | }
480 |
--------------------------------------------------------------------------------
/docs/grammars/SumFormula/light.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Mike Lischke. All rights reserved.
3 | * Licensed under the MIT License. See License.txt in the project root for license information.
4 | */
5 |
6 | /*
7 | * This file contains all default CSS rules for the light vscode them, used for various diagrams and graphs.
8 | * Use the "antlr4.customCSS" setting in vscode to specify your own file, if you like to override some rules.
9 | *
10 | * Most of the appearance is defined here, while only some adjustments for the dark theme exist in dark.css.
11 | * This style sheet is also used for exported svg files.
12 | */
13 |
14 |
15 | /* ATN graphs */
16 |
17 | .transition {
18 | fill: none;
19 | stroke: #AAA;
20 | stroke-width: 2px;
21 | }
22 |
23 | .marker {
24 | fill: #999;
25 | stroke: none;
26 | }
27 |
28 | .stateLabel {
29 | font: bold 11pt "Helvetica Neue", Arial, sans-serif;
30 | fill: white;
31 | text-anchor: middle;
32 | pointer-events: none;
33 | }
34 |
35 | .stateTypeLabel {
36 | font: bold 7pt monospace;
37 | fill: #EEE;
38 | text-anchor: middle;
39 | pointer-events: none;
40 | }
41 |
42 | .linkLabel {
43 | font: 9pt monospace;
44 | fill: #606060;
45 | text-anchor: middle;
46 | pointer-events: none;
47 | white-space: pre;
48 | }
49 |
50 | .linkLabel > .heading {
51 | fill: cornflowerblue;
52 | font-weight: 800;
53 | }
54 |
55 | .linkLabel > .predicate {
56 | fill: gray;
57 | font-weight: 400;
58 | font-size: 7pt
59 | }
60 |
61 | .state {
62 | stroke: #505050;
63 | stroke-width: 3px;
64 | cursor: move;
65 | pointer-events: all;
66 | /*filter: url(#black-glow);*/
67 | }
68 |
69 | .state.BASIC {
70 | fill: #AAA;
71 | }
72 |
73 | .state.START {
74 | fill: #36bde0;
75 | }
76 |
77 | .state.BSTART {
78 | fill: #f39900;
79 | }
80 |
81 | .state.PBSTART {
82 | fill: #98c000;
83 | }
84 |
85 | .state.SBSTART {
86 | fill: #607dbd;
87 | }
88 |
89 | .state.TSTART {
90 | fill: #ffd300;
91 | }
92 |
93 | .state.STOP {
94 | fill: #2baa5b;
95 | }
96 |
97 | .state.BEND {
98 | fill: #c2c269;
99 | }
100 |
101 | .state.SLBACK {
102 | fill: #608b4e;
103 | }
104 |
105 | .state.SLENTRY {
106 | fill: #a260cb;
107 | }
108 |
109 | .state.PLBACK {
110 | fill: #517979;
111 | }
112 |
113 | .state.LEND {
114 | fill: #9b90c3;
115 | }
116 |
117 | .state.RULE {
118 | fill: #b73645;
119 | }
120 |
121 | .state.RULE.recursive {
122 | fill: #36bde0;
123 | }
124 |
125 |
126 | /* Railroad diagrams */
127 |
128 | /* The connection lines. */
129 | svg.railroad-diagram path {
130 | stroke-width: 2;
131 | stroke: darkgray;
132 | fill: rgba(0, 0, 0, 0);
133 | }
134 |
135 | /* All text except comments. */
136 | svg.railroad-diagram text {
137 | font: bold 12px Hack, "Source Code Pro", monospace;
138 | text-anchor: middle;
139 | fill: #404040;
140 | }
141 |
142 | /* Comment text */
143 | svg.railroad-diagram text.comment {
144 | font: italic 10px Hack, "Source Code Pro", monospace;
145 | fill: #404040;
146 | }
147 |
148 | /* The terminal boxes. */
149 | svg.railroad-diagram g.terminal rect {
150 | stroke-width: 2;
151 | stroke: #404040;
152 | fill: rgba(200, 200, 200, 1);
153 | }
154 |
155 | svg.railroad-diagram g.non-terminal rect {
156 | /* The non-terminal boxes. */
157 | stroke-width: 2;
158 | stroke: #404040;
159 | fill: rgba(255, 255, 255, 1);
160 | }
161 |
162 | /* Multiple choice text, not working atm. */
163 | svg.railroad-diagram text.diagram-text {
164 | font-size: 12px Hack, "Source Code Pro", monospace;
165 | fill: red;
166 | }
167 |
168 | /* Multiple choice text, not working atm. */
169 | svg.railroad-diagram path.diagram-text {
170 | stroke-width: 1;
171 | stroke: red;
172 | fill: red;
173 | cursor: help;
174 | }
175 |
176 | /* Multiple choice text, not working atm. */
177 | svg.railroad-diagram g.diagram-text:hover path.diagram-text {
178 | fill: #f00;
179 | }
180 |
181 | /* Call graphs */
182 |
183 | .node {
184 | font: 200 10px "Helvetica Neue", Helvetica, Arial, sans-serif;
185 | }
186 |
187 | .link {
188 | stroke: #000;
189 | stroke-opacity: .2;
190 | fill: none;
191 | pointer-events: none;
192 | }
193 |
194 | .module-1 {
195 | fill: #0ca9fd;
196 | }
197 |
198 | .module-2 {
199 | fill: #63bf8d;
200 | }
201 |
202 | .module-3 {
203 | fill: #ff8801;
204 | }
205 |
206 | .module-4 {
207 | fill: #b9fc34;
208 | }
209 |
210 | .module-5 {
211 | fill: #90e0e0;
212 | }
213 |
214 | .module-6 {
215 | fill: #b4a3f5;
216 | }
217 |
218 | .module-7 {
219 | fill: #f92672;
220 | }
221 |
222 | .module-8 {
223 | fill: #e9e901;
224 | }
225 |
226 | .module-9 {
227 | fill: #83be69;
228 | }
229 |
230 | .module-10 {
231 | fill: #f1d18c;
232 | }
233 |
234 | .node:hover {
235 | fill: #000;
236 | }
237 |
238 | .node:hover,
239 | .node-source,
240 | .node-target {
241 | font: 700 12px "Helvetica Neue", Helvetica, Arial, sans-serif;
242 | cursor: pointer;
243 | }
244 |
245 | .node-source {
246 | fill: #ff5711;
247 | }
248 |
249 | .node-target {
250 | fill: #45aa73;
251 | }
252 |
253 | .link-source,
254 | .link-target {
255 | stroke-opacity: 1;
256 | stroke-width: 2px;
257 | }
258 |
259 | .link-source {
260 | stroke: #3dcd92;
261 | }
262 |
263 | .link-target {
264 | stroke: #ff5711;
265 | }
266 |
267 | @keyframes fadeOut {
268 | 0% {
269 | stroke-opacity: 0.2;
270 | }
271 |
272 | 100% {
273 | stroke-opacity: 0.075;
274 | }
275 | }
276 |
277 | @keyframes fadeIn {
278 | 0% {
279 | stroke-opacity: 0.075;
280 | }
281 |
282 | 100% {
283 | stroke-opacity: 0.2;
284 | }
285 | }
286 |
287 | .link-dimmed {
288 | stroke-opacity: 0.075;
289 | }
290 |
291 |
292 | /* Parse trees */
293 | .tree-node {
294 | stroke-width: 2;
295 | stroke: #C0C0C0;
296 | fill: rgba(255, 255, 255, 1);
297 | }
298 |
299 | .tree-root {
300 | stroke-width: 2;
301 | fill: #7db6dd;
302 | stroke: #7db6dd;
303 | }
304 |
305 | .tree-leaf {
306 | cursor: default;
307 | stroke-width: 2;
308 | fill: rgba(160, 171, 136, 1);
309 | stroke: rgba(117, 119, 91, 1);
310 | }
311 |
312 | .tree-error {
313 | stroke-width: 2;
314 | fill: #dd8f7d;
315 | stroke: rgba(188, 106, 122, 1);
316 | }
317 |
318 | .tree-node text {
319 | cursor: default;
320 | font: 16px "Helvetica Neue", sans-serif;
321 | fill: rgba(41, 41, 41, 1);
322 | stroke: none;
323 | }
324 |
325 | .tree-leaf text,
326 | .tree-root text,
327 | .tree-error text {
328 | font: 16px "Helvetica Neue", sans-serif;
329 | fill: #ffffff;
330 | stroke: none;
331 | }
332 |
333 | .tree-link {
334 | stroke-width: 2px;
335 | fill: none;
336 | stroke: rgba(128, 128, 128, 1);
337 | }
338 |
339 | g .token-value {
340 | fill: #404040;
341 | stroke: none;
342 | font: 14pt "Source Code Pro", "Hack", "Consolas", "Andale Mono", monospace;
343 | }
344 |
345 | g .token-range {
346 | fill: rgba(0, 77, 98, 1);
347 | stroke: none;
348 | font: 8pt "Source Code Pro", "Hack", "Consolas", "Andale Mono", monospace;
349 | }
350 |
351 | .saveSVGButton {
352 | background-image: url(./save-svg-light.svg);
353 | width: 32px;
354 | height: 32px;
355 |
356 | margin-left: 8px;
357 |
358 | background-position: center;
359 | background-repeat: no-repeat;
360 | }
361 |
362 | .saveHTMLButton {
363 | background-image: url(./save-html-light.svg);
364 | width: 32px;
365 | height: 32px;
366 |
367 | background-position: center;
368 | background-repeat: no-repeat;
369 | }
370 |
371 | .headerIcon {
372 | width: 90px;
373 | height: 90px;
374 | margin-top: 20px;
375 |
376 | background-position: center;
377 | background-repeat: no-repeat;
378 | background-size: contain;
379 | }
380 |
381 | .rrdIcon {
382 | background-image: url(./rrd-light.svg);
383 | }
384 |
385 | .atnIcon {
386 | background-image: url(./atn-light.png);
387 | }
388 |
389 | g .rrd-warning {
390 | stroke: orange;
391 | }
392 |
393 | g .rrd-predicate {
394 | stroke: rgba(23, 159, 255, 0.5);
395 | }
396 |
397 | .atn-graph-color {
398 | color: crimson;
399 | }
400 |
401 | .rrd-graph-color {
402 | color: rgba(10, 188, 80, 1);
403 | }
404 |
405 | .call-graph-color {
406 | color: rgba(255, 191, 15, 1);
407 | }
408 |
409 | .call-graph-save-image {
410 | background: url('../misc/save-svg-light.png');
411 | vertical-align: middle;
412 | margin-left: 5px;
413 | width: 24px;
414 | height: 24px;
415 | display: inline-block;
416 | cursor: pointer;
417 | }
418 |
419 | .parse-tree-color {
420 | color: rgba(49, 112, 212, 1);
421 | }
422 |
423 | .parse-tree-save-image {
424 | background: rgba(49, 112, 212, 1) url('../misc/save.png');
425 | vertical-align: middle;
426 | margin-left: 5px;
427 | width: 24px;
428 | height: 24px;
429 | display: inline-block;
430 | cursor: pointer;
431 | }
432 |
433 | .switch label {
434 | width: 100%;
435 | height: 100%;
436 | margin: 0;
437 | padding: 0;
438 | display: block;
439 | position: absolute;
440 | top: 0;
441 | left: 0;
442 | z-index: 10;
443 | }
444 |
445 | .switch input {
446 | display: none;
447 | }
448 |
449 | .switch > span {
450 | display: inline-block;
451 | top: 3px;
452 | transition: left 0.2s;
453 | }
454 |
455 | .switch-border {
456 | height: 12px;
457 | width: 24px;
458 | position: relative;
459 | border: 1px solid rgba(49, 112, 212, 0.75);
460 | background-color: rgba(49, 112, 212, 0.75);
461 | border-radius: 3.5em;
462 | }
463 |
464 | .switch-handle-top {
465 | width: 12px;
466 | height: 12px;
467 | position: absolute;
468 | left: 0;
469 | top: 0;
470 | z-index: 4;
471 | background-color: white;
472 | border-radius: 2.5em;
473 | transition: left 0.2s;
474 | }
475 |
476 | .switch input:checked ~ .switch-handle-top {
477 | top: 0;
478 | left: 12px;
479 | }
480 |
--------------------------------------------------------------------------------
/docs/grammars/SwissLipids/light.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Mike Lischke. All rights reserved.
3 | * Licensed under the MIT License. See License.txt in the project root for license information.
4 | */
5 |
6 | /*
7 | * This file contains all default CSS rules for the light vscode them, used for various diagrams and graphs.
8 | * Use the "antlr4.customCSS" setting in vscode to specify your own file, if you like to override some rules.
9 | *
10 | * Most of the appearance is defined here, while only some adjustments for the dark theme exist in dark.css.
11 | * This style sheet is also used for exported svg files.
12 | */
13 |
14 |
15 | /* ATN graphs */
16 |
17 | .transition {
18 | fill: none;
19 | stroke: #AAA;
20 | stroke-width: 2px;
21 | }
22 |
23 | .marker {
24 | fill: #999;
25 | stroke: none;
26 | }
27 |
28 | .stateLabel {
29 | font: bold 11pt "Helvetica Neue", Arial, sans-serif;
30 | fill: white;
31 | text-anchor: middle;
32 | pointer-events: none;
33 | }
34 |
35 | .stateTypeLabel {
36 | font: bold 7pt monospace;
37 | fill: #EEE;
38 | text-anchor: middle;
39 | pointer-events: none;
40 | }
41 |
42 | .linkLabel {
43 | font: 9pt monospace;
44 | fill: #606060;
45 | text-anchor: middle;
46 | pointer-events: none;
47 | white-space: pre;
48 | }
49 |
50 | .linkLabel > .heading {
51 | fill: cornflowerblue;
52 | font-weight: 800;
53 | }
54 |
55 | .linkLabel > .predicate {
56 | fill: gray;
57 | font-weight: 400;
58 | font-size: 7pt
59 | }
60 |
61 | .state {
62 | stroke: #505050;
63 | stroke-width: 3px;
64 | cursor: move;
65 | pointer-events: all;
66 | /*filter: url(#black-glow);*/
67 | }
68 |
69 | .state.BASIC {
70 | fill: #AAA;
71 | }
72 |
73 | .state.START {
74 | fill: #36bde0;
75 | }
76 |
77 | .state.BSTART {
78 | fill: #f39900;
79 | }
80 |
81 | .state.PBSTART {
82 | fill: #98c000;
83 | }
84 |
85 | .state.SBSTART {
86 | fill: #607dbd;
87 | }
88 |
89 | .state.TSTART {
90 | fill: #ffd300;
91 | }
92 |
93 | .state.STOP {
94 | fill: #2baa5b;
95 | }
96 |
97 | .state.BEND {
98 | fill: #c2c269;
99 | }
100 |
101 | .state.SLBACK {
102 | fill: #608b4e;
103 | }
104 |
105 | .state.SLENTRY {
106 | fill: #a260cb;
107 | }
108 |
109 | .state.PLBACK {
110 | fill: #517979;
111 | }
112 |
113 | .state.LEND {
114 | fill: #9b90c3;
115 | }
116 |
117 | .state.RULE {
118 | fill: #b73645;
119 | }
120 |
121 | .state.RULE.recursive {
122 | fill: #36bde0;
123 | }
124 |
125 |
126 | /* Railroad diagrams */
127 |
128 | /* The connection lines. */
129 | svg.railroad-diagram path {
130 | stroke-width: 2;
131 | stroke: darkgray;
132 | fill: rgba(0, 0, 0, 0);
133 | }
134 |
135 | /* All text except comments. */
136 | svg.railroad-diagram text {
137 | font: bold 12px Hack, "Source Code Pro", monospace;
138 | text-anchor: middle;
139 | fill: #404040;
140 | }
141 |
142 | /* Comment text */
143 | svg.railroad-diagram text.comment {
144 | font: italic 10px Hack, "Source Code Pro", monospace;
145 | fill: #404040;
146 | }
147 |
148 | /* The terminal boxes. */
149 | svg.railroad-diagram g.terminal rect {
150 | stroke-width: 2;
151 | stroke: #404040;
152 | fill: rgba(200, 200, 200, 1);
153 | }
154 |
155 | svg.railroad-diagram g.non-terminal rect {
156 | /* The non-terminal boxes. */
157 | stroke-width: 2;
158 | stroke: #404040;
159 | fill: rgba(255, 255, 255, 1);
160 | }
161 |
162 | /* Multiple choice text, not working atm. */
163 | svg.railroad-diagram text.diagram-text {
164 | font-size: 12px Hack, "Source Code Pro", monospace;
165 | fill: red;
166 | }
167 |
168 | /* Multiple choice text, not working atm. */
169 | svg.railroad-diagram path.diagram-text {
170 | stroke-width: 1;
171 | stroke: red;
172 | fill: red;
173 | cursor: help;
174 | }
175 |
176 | /* Multiple choice text, not working atm. */
177 | svg.railroad-diagram g.diagram-text:hover path.diagram-text {
178 | fill: #f00;
179 | }
180 |
181 | /* Call graphs */
182 |
183 | .node {
184 | font: 200 10px "Helvetica Neue", Helvetica, Arial, sans-serif;
185 | }
186 |
187 | .link {
188 | stroke: #000;
189 | stroke-opacity: .2;
190 | fill: none;
191 | pointer-events: none;
192 | }
193 |
194 | .module-1 {
195 | fill: #0ca9fd;
196 | }
197 |
198 | .module-2 {
199 | fill: #63bf8d;
200 | }
201 |
202 | .module-3 {
203 | fill: #ff8801;
204 | }
205 |
206 | .module-4 {
207 | fill: #b9fc34;
208 | }
209 |
210 | .module-5 {
211 | fill: #90e0e0;
212 | }
213 |
214 | .module-6 {
215 | fill: #b4a3f5;
216 | }
217 |
218 | .module-7 {
219 | fill: #f92672;
220 | }
221 |
222 | .module-8 {
223 | fill: #e9e901;
224 | }
225 |
226 | .module-9 {
227 | fill: #83be69;
228 | }
229 |
230 | .module-10 {
231 | fill: #f1d18c;
232 | }
233 |
234 | .node:hover {
235 | fill: #000;
236 | }
237 |
238 | .node:hover,
239 | .node-source,
240 | .node-target {
241 | font: 700 12px "Helvetica Neue", Helvetica, Arial, sans-serif;
242 | cursor: pointer;
243 | }
244 |
245 | .node-source {
246 | fill: #ff5711;
247 | }
248 |
249 | .node-target {
250 | fill: #45aa73;
251 | }
252 |
253 | .link-source,
254 | .link-target {
255 | stroke-opacity: 1;
256 | stroke-width: 2px;
257 | }
258 |
259 | .link-source {
260 | stroke: #3dcd92;
261 | }
262 |
263 | .link-target {
264 | stroke: #ff5711;
265 | }
266 |
267 | @keyframes fadeOut {
268 | 0% {
269 | stroke-opacity: 0.2;
270 | }
271 |
272 | 100% {
273 | stroke-opacity: 0.075;
274 | }
275 | }
276 |
277 | @keyframes fadeIn {
278 | 0% {
279 | stroke-opacity: 0.075;
280 | }
281 |
282 | 100% {
283 | stroke-opacity: 0.2;
284 | }
285 | }
286 |
287 | .link-dimmed {
288 | stroke-opacity: 0.075;
289 | }
290 |
291 |
292 | /* Parse trees */
293 | .tree-node {
294 | stroke-width: 2;
295 | stroke: #C0C0C0;
296 | fill: rgba(255, 255, 255, 1);
297 | }
298 |
299 | .tree-root {
300 | stroke-width: 2;
301 | fill: #7db6dd;
302 | stroke: #7db6dd;
303 | }
304 |
305 | .tree-leaf {
306 | cursor: default;
307 | stroke-width: 2;
308 | fill: rgba(160, 171, 136, 1);
309 | stroke: rgba(117, 119, 91, 1);
310 | }
311 |
312 | .tree-error {
313 | stroke-width: 2;
314 | fill: #dd8f7d;
315 | stroke: rgba(188, 106, 122, 1);
316 | }
317 |
318 | .tree-node text {
319 | cursor: default;
320 | font: 16px "Helvetica Neue", sans-serif;
321 | fill: rgba(41, 41, 41, 1);
322 | stroke: none;
323 | }
324 |
325 | .tree-leaf text,
326 | .tree-root text,
327 | .tree-error text {
328 | font: 16px "Helvetica Neue", sans-serif;
329 | fill: #ffffff;
330 | stroke: none;
331 | }
332 |
333 | .tree-link {
334 | stroke-width: 2px;
335 | fill: none;
336 | stroke: rgba(128, 128, 128, 1);
337 | }
338 |
339 | g .token-value {
340 | fill: #404040;
341 | stroke: none;
342 | font: 14pt "Source Code Pro", "Hack", "Consolas", "Andale Mono", monospace;
343 | }
344 |
345 | g .token-range {
346 | fill: rgba(0, 77, 98, 1);
347 | stroke: none;
348 | font: 8pt "Source Code Pro", "Hack", "Consolas", "Andale Mono", monospace;
349 | }
350 |
351 | .saveSVGButton {
352 | background-image: url(./save-svg-light.svg);
353 | width: 32px;
354 | height: 32px;
355 |
356 | margin-left: 8px;
357 |
358 | background-position: center;
359 | background-repeat: no-repeat;
360 | }
361 |
362 | .saveHTMLButton {
363 | background-image: url(./save-html-light.svg);
364 | width: 32px;
365 | height: 32px;
366 |
367 | background-position: center;
368 | background-repeat: no-repeat;
369 | }
370 |
371 | .headerIcon {
372 | width: 90px;
373 | height: 90px;
374 | margin-top: 20px;
375 |
376 | background-position: center;
377 | background-repeat: no-repeat;
378 | background-size: contain;
379 | }
380 |
381 | .rrdIcon {
382 | background-image: url(./rrd-light.svg);
383 | }
384 |
385 | .atnIcon {
386 | background-image: url(./atn-light.png);
387 | }
388 |
389 | g .rrd-warning {
390 | stroke: orange;
391 | }
392 |
393 | g .rrd-predicate {
394 | stroke: rgba(23, 159, 255, 0.5);
395 | }
396 |
397 | .atn-graph-color {
398 | color: crimson;
399 | }
400 |
401 | .rrd-graph-color {
402 | color: rgba(10, 188, 80, 1);
403 | }
404 |
405 | .call-graph-color {
406 | color: rgba(255, 191, 15, 1);
407 | }
408 |
409 | .call-graph-save-image {
410 | background: url('../misc/save-svg-light.png');
411 | vertical-align: middle;
412 | margin-left: 5px;
413 | width: 24px;
414 | height: 24px;
415 | display: inline-block;
416 | cursor: pointer;
417 | }
418 |
419 | .parse-tree-color {
420 | color: rgba(49, 112, 212, 1);
421 | }
422 |
423 | .parse-tree-save-image {
424 | background: rgba(49, 112, 212, 1) url('../misc/save.png');
425 | vertical-align: middle;
426 | margin-left: 5px;
427 | width: 24px;
428 | height: 24px;
429 | display: inline-block;
430 | cursor: pointer;
431 | }
432 |
433 | .switch label {
434 | width: 100%;
435 | height: 100%;
436 | margin: 0;
437 | padding: 0;
438 | display: block;
439 | position: absolute;
440 | top: 0;
441 | left: 0;
442 | z-index: 10;
443 | }
444 |
445 | .switch input {
446 | display: none;
447 | }
448 |
449 | .switch > span {
450 | display: inline-block;
451 | top: 3px;
452 | transition: left 0.2s;
453 | }
454 |
455 | .switch-border {
456 | height: 12px;
457 | width: 24px;
458 | position: relative;
459 | border: 1px solid rgba(49, 112, 212, 0.75);
460 | background-color: rgba(49, 112, 212, 0.75);
461 | border-radius: 3.5em;
462 | }
463 |
464 | .switch-handle-top {
465 | width: 12px;
466 | height: 12px;
467 | position: absolute;
468 | left: 0;
469 | top: 0;
470 | z-index: 4;
471 | background-color: white;
472 | border-radius: 2.5em;
473 | transition: left 0.2s;
474 | }
475 |
476 | .switch input:checked ~ .switch-handle-top {
477 | top: 0;
478 | left: 12px;
479 | }
480 |
--------------------------------------------------------------------------------
/docs/grammars/GoslinFragments/light.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Mike Lischke. All rights reserved.
3 | * Licensed under the MIT License. See License.txt in the project root for license information.
4 | */
5 |
6 | /*
7 | * This file contains all default CSS rules for the light vscode them, used for various diagrams and graphs.
8 | * Use the "antlr4.customCSS" setting in vscode to specify your own file, if you like to override some rules.
9 | *
10 | * Most of the appearance is defined here, while only some adjustments for the dark theme exist in dark.css.
11 | * This style sheet is also used for exported svg files.
12 | */
13 |
14 |
15 | /* ATN graphs */
16 |
17 | .transition {
18 | fill: none;
19 | stroke: #AAA;
20 | stroke-width: 2px;
21 | }
22 |
23 | .marker {
24 | fill: #999;
25 | stroke: none;
26 | }
27 |
28 | .stateLabel {
29 | font: bold 11pt "Helvetica Neue", Arial, sans-serif;
30 | fill: white;
31 | text-anchor: middle;
32 | pointer-events: none;
33 | }
34 |
35 | .stateTypeLabel {
36 | font: bold 7pt monospace;
37 | fill: #EEE;
38 | text-anchor: middle;
39 | pointer-events: none;
40 | }
41 |
42 | .linkLabel {
43 | font: 9pt monospace;
44 | fill: #606060;
45 | text-anchor: middle;
46 | pointer-events: none;
47 | white-space: pre;
48 | }
49 |
50 | .linkLabel > .heading {
51 | fill: cornflowerblue;
52 | font-weight: 800;
53 | }
54 |
55 | .linkLabel > .predicate {
56 | fill: gray;
57 | font-weight: 400;
58 | font-size: 7pt
59 | }
60 |
61 | .state {
62 | stroke: #505050;
63 | stroke-width: 3px;
64 | cursor: move;
65 | pointer-events: all;
66 | /*filter: url(#black-glow);*/
67 | }
68 |
69 | .state.BASIC {
70 | fill: #AAA;
71 | }
72 |
73 | .state.START {
74 | fill: #36bde0;
75 | }
76 |
77 | .state.BSTART {
78 | fill: #f39900;
79 | }
80 |
81 | .state.PBSTART {
82 | fill: #98c000;
83 | }
84 |
85 | .state.SBSTART {
86 | fill: #607dbd;
87 | }
88 |
89 | .state.TSTART {
90 | fill: #ffd300;
91 | }
92 |
93 | .state.STOP {
94 | fill: #2baa5b;
95 | }
96 |
97 | .state.BEND {
98 | fill: #c2c269;
99 | }
100 |
101 | .state.SLBACK {
102 | fill: #608b4e;
103 | }
104 |
105 | .state.SLENTRY {
106 | fill: #a260cb;
107 | }
108 |
109 | .state.PLBACK {
110 | fill: #517979;
111 | }
112 |
113 | .state.LEND {
114 | fill: #9b90c3;
115 | }
116 |
117 | .state.RULE {
118 | fill: #b73645;
119 | }
120 |
121 | .state.RULE.recursive {
122 | fill: #36bde0;
123 | }
124 |
125 |
126 | /* Railroad diagrams */
127 |
128 | /* The connection lines. */
129 | svg.railroad-diagram path {
130 | stroke-width: 2;
131 | stroke: darkgray;
132 | fill: rgba(0, 0, 0, 0);
133 | }
134 |
135 | /* All text except comments. */
136 | svg.railroad-diagram text {
137 | font: bold 12px Hack, "Source Code Pro", monospace;
138 | text-anchor: middle;
139 | fill: #404040;
140 | }
141 |
142 | /* Comment text */
143 | svg.railroad-diagram text.comment {
144 | font: italic 10px Hack, "Source Code Pro", monospace;
145 | fill: #404040;
146 | }
147 |
148 | /* The terminal boxes. */
149 | svg.railroad-diagram g.terminal rect {
150 | stroke-width: 2;
151 | stroke: #404040;
152 | fill: rgba(200, 200, 200, 1);
153 | }
154 |
155 | svg.railroad-diagram g.non-terminal rect {
156 | /* The non-terminal boxes. */
157 | stroke-width: 2;
158 | stroke: #404040;
159 | fill: rgba(255, 255, 255, 1);
160 | }
161 |
162 | /* Multiple choice text, not working atm. */
163 | svg.railroad-diagram text.diagram-text {
164 | font-size: 12px Hack, "Source Code Pro", monospace;
165 | fill: red;
166 | }
167 |
168 | /* Multiple choice text, not working atm. */
169 | svg.railroad-diagram path.diagram-text {
170 | stroke-width: 1;
171 | stroke: red;
172 | fill: red;
173 | cursor: help;
174 | }
175 |
176 | /* Multiple choice text, not working atm. */
177 | svg.railroad-diagram g.diagram-text:hover path.diagram-text {
178 | fill: #f00;
179 | }
180 |
181 | /* Call graphs */
182 |
183 | .node {
184 | font: 200 10px "Helvetica Neue", Helvetica, Arial, sans-serif;
185 | }
186 |
187 | .link {
188 | stroke: #000;
189 | stroke-opacity: .2;
190 | fill: none;
191 | pointer-events: none;
192 | }
193 |
194 | .module-1 {
195 | fill: #0ca9fd;
196 | }
197 |
198 | .module-2 {
199 | fill: #63bf8d;
200 | }
201 |
202 | .module-3 {
203 | fill: #ff8801;
204 | }
205 |
206 | .module-4 {
207 | fill: #b9fc34;
208 | }
209 |
210 | .module-5 {
211 | fill: #90e0e0;
212 | }
213 |
214 | .module-6 {
215 | fill: #b4a3f5;
216 | }
217 |
218 | .module-7 {
219 | fill: #f92672;
220 | }
221 |
222 | .module-8 {
223 | fill: #e9e901;
224 | }
225 |
226 | .module-9 {
227 | fill: #83be69;
228 | }
229 |
230 | .module-10 {
231 | fill: #f1d18c;
232 | }
233 |
234 | .node:hover {
235 | fill: #000;
236 | }
237 |
238 | .node:hover,
239 | .node-source,
240 | .node-target {
241 | font: 700 12px "Helvetica Neue", Helvetica, Arial, sans-serif;
242 | cursor: pointer;
243 | }
244 |
245 | .node-source {
246 | fill: #ff5711;
247 | }
248 |
249 | .node-target {
250 | fill: #45aa73;
251 | }
252 |
253 | .link-source,
254 | .link-target {
255 | stroke-opacity: 1;
256 | stroke-width: 2px;
257 | }
258 |
259 | .link-source {
260 | stroke: #3dcd92;
261 | }
262 |
263 | .link-target {
264 | stroke: #ff5711;
265 | }
266 |
267 | @keyframes fadeOut {
268 | 0% {
269 | stroke-opacity: 0.2;
270 | }
271 |
272 | 100% {
273 | stroke-opacity: 0.075;
274 | }
275 | }
276 |
277 | @keyframes fadeIn {
278 | 0% {
279 | stroke-opacity: 0.075;
280 | }
281 |
282 | 100% {
283 | stroke-opacity: 0.2;
284 | }
285 | }
286 |
287 | .link-dimmed {
288 | stroke-opacity: 0.075;
289 | }
290 |
291 |
292 | /* Parse trees */
293 | .tree-node {
294 | stroke-width: 2;
295 | stroke: #C0C0C0;
296 | fill: rgba(255, 255, 255, 1);
297 | }
298 |
299 | .tree-root {
300 | stroke-width: 2;
301 | fill: #7db6dd;
302 | stroke: #7db6dd;
303 | }
304 |
305 | .tree-leaf {
306 | cursor: default;
307 | stroke-width: 2;
308 | fill: rgba(160, 171, 136, 1);
309 | stroke: rgba(117, 119, 91, 1);
310 | }
311 |
312 | .tree-error {
313 | stroke-width: 2;
314 | fill: #dd8f7d;
315 | stroke: rgba(188, 106, 122, 1);
316 | }
317 |
318 | .tree-node text {
319 | cursor: default;
320 | font: 16px "Helvetica Neue", sans-serif;
321 | fill: rgba(41, 41, 41, 1);
322 | stroke: none;
323 | }
324 |
325 | .tree-leaf text,
326 | .tree-root text,
327 | .tree-error text {
328 | font: 16px "Helvetica Neue", sans-serif;
329 | fill: #ffffff;
330 | stroke: none;
331 | }
332 |
333 | .tree-link {
334 | stroke-width: 2px;
335 | fill: none;
336 | stroke: rgba(128, 128, 128, 1);
337 | }
338 |
339 | g .token-value {
340 | fill: #404040;
341 | stroke: none;
342 | font: 14pt "Source Code Pro", "Hack", "Consolas", "Andale Mono", monospace;
343 | }
344 |
345 | g .token-range {
346 | fill: rgba(0, 77, 98, 1);
347 | stroke: none;
348 | font: 8pt "Source Code Pro", "Hack", "Consolas", "Andale Mono", monospace;
349 | }
350 |
351 | .saveSVGButton {
352 | background-image: url(./save-svg-light.svg);
353 | width: 32px;
354 | height: 32px;
355 |
356 | margin-left: 8px;
357 |
358 | background-position: center;
359 | background-repeat: no-repeat;
360 | }
361 |
362 | .saveHTMLButton {
363 | background-image: url(./save-html-light.svg);
364 | width: 32px;
365 | height: 32px;
366 |
367 | background-position: center;
368 | background-repeat: no-repeat;
369 | }
370 |
371 | .headerIcon {
372 | width: 90px;
373 | height: 90px;
374 | margin-top: 20px;
375 |
376 | background-position: center;
377 | background-repeat: no-repeat;
378 | background-size: contain;
379 | }
380 |
381 | .rrdIcon {
382 | background-image: url(./rrd-light.svg);
383 | }
384 |
385 | .atnIcon {
386 | background-image: url(./atn-light.png);
387 | }
388 |
389 | g .rrd-warning {
390 | stroke: orange;
391 | }
392 |
393 | g .rrd-predicate {
394 | stroke: rgba(23, 159, 255, 0.5);
395 | }
396 |
397 | .atn-graph-color {
398 | color: crimson;
399 | }
400 |
401 | .rrd-graph-color {
402 | color: rgba(10, 188, 80, 1);
403 | }
404 |
405 | .call-graph-color {
406 | color: rgba(255, 191, 15, 1);
407 | }
408 |
409 | .call-graph-save-image {
410 | background: url('../misc/save-svg-light.png');
411 | vertical-align: middle;
412 | margin-left: 5px;
413 | width: 24px;
414 | height: 24px;
415 | display: inline-block;
416 | cursor: pointer;
417 | }
418 |
419 | .parse-tree-color {
420 | color: rgba(49, 112, 212, 1);
421 | }
422 |
423 | .parse-tree-save-image {
424 | background: rgba(49, 112, 212, 1) url('../misc/save.png');
425 | vertical-align: middle;
426 | margin-left: 5px;
427 | width: 24px;
428 | height: 24px;
429 | display: inline-block;
430 | cursor: pointer;
431 | }
432 |
433 | .switch label {
434 | width: 100%;
435 | height: 100%;
436 | margin: 0;
437 | padding: 0;
438 | display: block;
439 | position: absolute;
440 | top: 0;
441 | left: 0;
442 | z-index: 10;
443 | }
444 |
445 | .switch input {
446 | display: none;
447 | }
448 |
449 | .switch > span {
450 | display: inline-block;
451 | top: 3px;
452 | transition: left 0.2s;
453 | }
454 |
455 | .switch-border {
456 | height: 12px;
457 | width: 24px;
458 | position: relative;
459 | border: 1px solid rgba(49, 112, 212, 0.75);
460 | background-color: rgba(49, 112, 212, 0.75);
461 | border-radius: 3.5em;
462 | }
463 |
464 | .switch-handle-top {
465 | width: 12px;
466 | height: 12px;
467 | position: absolute;
468 | left: 0;
469 | top: 0;
470 | z-index: 4;
471 | background-color: white;
472 | border-radius: 2.5em;
473 | transition: left 0.2s;
474 | }
475 |
476 | .switch input:checked ~ .switch-handle-top {
477 | top: 0;
478 | left: 12px;
479 | }
480 |
--------------------------------------------------------------------------------
/FattyAcids.g4:
--------------------------------------------------------------------------------
1 | /*
2 | * MIT License
3 | *
4 | * Copyright (c) the authors (listed in global LICENSE file)
5 | *
6 | * Permission is hereby granted, free of charge, to any person obtaining a copy
7 | * of this software and associated documentation files (the 'Software'), to deal
8 | * in the Software without restriction, including without limitation the rights
9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | * copies of the Software, and to permit persons to whom the Software is
11 | * furnished to do so, subject to the following conditions:;
12 | *
13 | * The above copyright notice and this permission notice shall be included in all
14 | * copies or substantial portions of the Software.
15 | *
16 | * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | * LIABILITY, WHether IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 | * SOFTWARE.
23 | */
24 |
25 | grammar FattyAcids;
26 |
27 |
28 | /* first rule is always start rule, EOF = end of file */
29 | lipid : fatty_acid EOF;
30 |
31 | fatty_acid: regular_fatty_acid | wax | car | ethanolamine | amine | acetic_acid;
32 | fatty_acid_recursion: regular_fatty_acid;
33 | wax : wax_ester regular_fatty_acid;
34 | wax_ester : fatty_acid_recursion SPACE | ROB fatty_acid_recursion RCB SPACE | methyl SPACE | methyl DASH;
35 | methyl : 'methyl';
36 | car : car_positions DASH car_fa '-4-(' car_spec ')butanoate';
37 | car_fa : SOB regular_fatty_acid SCB | COB regular_fatty_acid CCB;
38 | car_spec : 'trimethylammonio' | 'trimethylazaniumyl';
39 |
40 | car_positions : functional_position | ROB car_position RCB DASH functional_position;
41 | car_position : number;
42 | ethanolamine : amine_prefix ROB fatty_acid_recursion RCB DASH 'ethanolamine';
43 | amine : amine_prefix amine_n DASH regular_fatty_acid SPACE 'amine';
44 | amine_prefix : 'n-' | '(+/-)n-';
45 | amine_n : fatty_acid_recursion | ROB fatty_acid_recursion RCB | methyl;
46 | acetic_acid : acetic_recursion 'acetic acid';
47 | acetic_recursion : ROB fatty_acid_recursion RCB | SOB fatty_acid_recursion SCB | COB fatty_acid_recursion CCB;
48 |
49 | regular_fatty_acid : ate_type |
50 | ol_position_description |
51 | additional_len acid_type_regular |
52 | additional_len acid_type_double |
53 | additional_descriptions double_bond_positions fatty_length acid_type_double |
54 | sum_add fatty_length acid_type_regular |
55 | sum_add fatty_length acid_type_double |
56 | fg_pos_summary fatty_length acid_type_double |
57 | /* double_bond_positions fatty_length acid_type_double | */
58 | fg_pos_summary double_bond_positions fatty_length acid_type_double |
59 | sum_add double_bond_positions fatty_length acid_type_double;
60 |
61 | additional_len : additional_descriptions fatty_length | fatty_length;
62 | sum_add : fg_pos_summary additional_descriptions;
63 | ol_position_description : ol_position DASH fatty_length ol_ending |
64 | fg_pos_summary ol_position DASH fatty_length ol_ending |
65 | fg_pos_summary DASH ol_position DASH fatty_length ol_ending |
66 | sum_add ol_position DASH fatty_length ol_ending |
67 | sum_add DASH ol_position DASH fatty_length ol_ending |
68 | additional_descriptions ol_position DASH fatty_length ol_ending |
69 | additional_descriptions DASH ol_position DASH fatty_length ol_ending;
70 | ol_ending : 'ol' | 'nol';
71 | ol_position : ol_pos | ol_pos PRIME | ol_pos cistrans_b | ol_pos PRIME cistrans_b;
72 | ol_pos : number;
73 |
74 |
75 | fatty_length : notation_specials | notation_regular | cycle notation_specials | cycle notation_regular | tetrahydrofuran notation_specials;
76 | notation_regular : notation_last_digit | notation_last_digit notation_second_digit | notation_second_digit;
77 | /* 1, 2, 2, 3, 4, 4, 4, 5, 6, 7, 8, 9 */
78 | notation_last_digit : 'un' | 'hen' | 'do' | 'di' | 'tri' | 'buta' | 'but' | 'tetra' | 'penta' | 'pent' | 'hexa' | 'hex' | 'hepta' | 'hept' | 'octa' | 'oct' | 'nona' | 'non';
79 | /* 0, 10, 10, 20, 20, 30 */
80 | notation_second_digit: 'deca' | 'dec' | 'cosa' | 'cos' | 'eicosa' | 'eicos' | 'triaconta' | 'triacont' | 'tetraconta' | 'tetracont' | 'pentaconta' | 'pantacont' | 'hexaconta' | 'hexacont' | 'heptaconta' | 'heptacont' | 'octaconta' | 'octacont' | 'nonaconta' | 'nonacont';
81 | /* 4, 10, 20, 21, 21, 30, 30 */
82 | notation_specials: 'etha' | 'eth' | 'buta' | 'but' | 'butr' | 'valer' | 'propa' | 'propi' | 'propio' | 'prop' | 'eicosa' | 'eicos' | 'icosa' | 'icos' | prosta | isoprop | furan;
83 | isoprop: 'isoprop';
84 | prosta : 'prosta' | 'prost' | 'prostan';
85 | tetrahydrofuran : 'tetrahydro';
86 | furan : 'furan';
87 |
88 | acid_type_regular: acid_single_type | acid_single_type cyclo_position;
89 | acid_type_double: db_num acid_type_regular;
90 | acid_single_type: 'noic acid' | 'nic acid' | 'nal' | dioic | 'noyloxy' | 'noyl' | ol | dial | 'noate' | 'nate' | coa | yl | 'ne' | 'yloxy';
91 | coa : 'noyl' coa_ending | 'yl' coa_ending | 'nyl' coa_ending;
92 | coa_ending : 'coa' | '-coa';
93 | yl : 'yl' | 'nyl' | 'n' DASH yl_ending DASH 'yl' | DASH yl_ending DASH 'yl';
94 | yl_ending: number;
95 |
96 | db_num: DASH double_bond_positions DASH db_length db_suffix | DASH double_bond_positions DASH db_suffix | db_length db_suffix | db_suffix;
97 | db_suffix : 'e' | 'ne' | 'ene' | 'en' | 'n';
98 | dial : 'dial';
99 | db_length: notation_regular;
100 | dioic : 'n' DASH functional_positions DASH dioic_acid | DASH functional_positions DASH dioic_acid | 'ne' dioic_acid;
101 | dioic_acid : 'dioic acid';
102 | ol : 'nol' | db_suffix DASH hydroxyl_positions DASH notation_regular 'ol' | db_suffix DASH hydroxyl_position DASH 'ol' | DASH hydroxyl_positions DASH notation_regular 'ol' | DASH hydroxyl_position DASH 'ol';
103 | ate_type : ate | additional_descriptions ate;
104 | ate : 'formate' | 'acetate' | 'butyrate' | 'propionate' | 'valerate' | isobut;
105 | isobut : 'isobutyrate';
106 |
107 |
108 | hydroxyl_positions : hydroxyl_positions pos_separator hydroxyl_positions | hydroxyl_position;
109 | hydroxyl_position : hydroxyl_number | hydroxyl_number cistrans_b | hydroxyl_number PRIME cistrans_b;
110 | hydroxyl_number : number;
111 |
112 | additional_descriptions : additional_descriptions_m | additional_descriptions_m DASH;
113 | additional_descriptions_m : additional_descriptions_m additional_descriptions_m | additional_description;
114 | additional_description : functional_group | functional_group DASH | pos_neg | reduction | reduction DASH;
115 | functional_group : multi_functional_group | single_functional_group | epoxy | methylene_group;
116 | pos_neg : '(+/-)-' | '(+)-' | '(-)-';
117 |
118 | double_bond_positions : double_bond_positions_pure DASH | ROB double_bond_positions_pure RCB DASH | double_bond_positions_pure | ROB double_bond_positions_pure RCB;
119 | double_bond_positions_pure : double_bond_positions_pure pos_separator double_bond_positions_pure | double_bond_position;
120 | double_bond_position : db_number | db_number cistrans_b | db_number PRIME | db_number PRIME cistrans_b | cistrans_b;
121 | cistrans_b : cistrans | ROB cistrans RCB;
122 | cistrans : 'e' | 'z' | 'r' | 's' | 'a' | 'b' | 'c';
123 | db_number : number;
124 | fg_pos_summary : functional_positions DASH;
125 |
126 | multi_functional_group : functional_positions DASH functional_length functional_group_type | functional_positions DASH functional_group_type;
127 | functional_length : notation_last_digit | notation_second_digit | notation_last_digit notation_second_digit;
128 | functional_positions : functional_positions_pure | ROB functional_positions_pure RCB;
129 | functional_positions_pure : functional_positions_pure pos_separator functional_positions_pure | functional_position;
130 | single_functional_group : functional_position DASH functional_group_type_name | functional_position functional_group_type_name | recursion_description | recursion_description DASH;
131 | functional_group_type_name : functional_group_type | ROB functional_group_type RCB;
132 | functional_group_type : 'hydroxy' | 'oxo' | 'bromo' | 'thio' | 'keto' | 'methyl' | 'hydroperoxy' | homo | 'phospho' | 'fluro' | 'fluoro' | 'chloro' | methylene | 'sulfooxy' | 'amino' | 'sulfanyl' | 'methoxy' | 'iodo' | 'cyano' | 'nitro' | 'oh' | 'thio' | 'mercapto' | 'carboxy' | 'acetoxy' | 'cysteinyl' | 'phenyl' | 's-glutathionyl' | 's-cysteinyl' | 'butylperoxy' | 'dimethylarsinoyl' | 'methylsulfanyl' | 'imino' | 's-cysteinylglycinyl';
133 | epoxy : functional_position pos_separator functional_position DASH 'epoxy' | functional_position ROB functional_position RCB DASH 'epoxy' | ROB functional_position pos_separator functional_position RCB DASH 'epoxy';
134 | methylene_group : functional_positions DASH methylene;
135 | methylene : 'methylene';
136 | /* acetoxy : 'acetoxy'; */
137 |
138 | functional_position : functional_position_pure | ROB functional_position_pure RCB;
139 | functional_position_pure : functional_pos | functional_pos PRIME | functional_pos func_stereo | functional_pos PRIME func_stereo | func_stereo;
140 | functional_pos : number;
141 | func_stereo : cistrans_b;
142 | reduction : functional_position DASH 'nor' | functional_positions DASH functional_length 'nor';
143 | homo : 'homo';
144 |
145 | cycle : 'cyclo';
146 | cyclo_position : '-cyclo' SOB functional_position pos_separator functional_position SCB | ' cyclo' SOB functional_position pos_separator functional_position SCB | ' cyclo ' SOB functional_position pos_separator functional_position SCB | '-cyclo-' SOB functional_position pos_separator functional_position SCB | ' cyclo-' SOB functional_position pos_separator functional_position SCB;
147 |
148 | recursion_description : recursion_position DASH recursion;
149 | recursion : fatty_acid | ROB fatty_acid RCB | SOB fatty_acid SCB | COB fatty_acid CCB;
150 | recursion_position : ROB functional_positions RCB | recursion_pos | recursion_pos cistrans_b;
151 | recursion_pos : number;
152 |
153 |
154 |
155 |
156 | /* separators */
157 | SPACE : ' ';
158 | COLON : ':';
159 | SEMICOLON : ';';
160 | DASH : '-' | '‐';
161 | UNDERSCORE : '_';
162 | SLASH : '/';
163 | BACKSLASH : '\\';
164 | COMMA: ',';
165 | ROB: '(';
166 | RCB: ')';
167 | SOB: '[';
168 | SCB: ']';
169 | COB: '{';
170 | CCB: '}';
171 | PRIME: '\'';
172 | pos_separator : COMMA;
173 |
174 |
175 |
176 | number : digit | digit number;
177 | digit : '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9';
178 |
179 |
180 |
--------------------------------------------------------------------------------
/GoslinFragments.g4:
--------------------------------------------------------------------------------
1 | /*
2 | * MIT License
3 | *
4 | * Copyright (c) the authors (listed in global LICENSE file)
5 | *
6 | * Permission is hereby granted, free of charge, to any person obtaining a copy
7 | * of this software and associated documentation files (the 'Software'), to deal
8 | * in the Software without restriction, including without limitation the rights
9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | * copies of the Software, and to permit persons to whom the Software is
11 | * furnished to do so, subject to the following conditions:;
12 | *
13 | * The above copyright notice and this permission notice shall be included in all
14 | * copies or substantial portions of the Software.
15 | *
16 | * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | * LIABILITY, WHether IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 | * SOFTWARE.
23 | */
24 |
25 | /* This is a BNF / ANTLR4 grammar for lipid subspecies identifiers following
26 | * J.K. Pauling et al. 2017, PLoS One, 12(11):e0188394.
27 | */
28 |
29 | grammar GoslinFragments;
30 |
31 | /* first rule is always start rule */
32 | lipid : lipid_eof EOF;
33 | lipid_eof : just_lipid | just_lipid FRAGMENT_SEPARATOR fragment_name;
34 | just_lipid : lipid_pure | lipid_pure adduct_info;
35 | lipid_pure : gl | pl | sl | sterol | mediatorc | saccharolipid;
36 |
37 | /* rules for fragments */
38 | fragment_name : frag_char;
39 | frag_char : frag_char frag_char | character | sign;
40 | sign : '-' | '+' | ' ' | ',' | '(' | ')' | '[' | ']' | ':' | '*' | ';';
41 |
42 | /* adduct information */
43 | adduct_info : '[M' adduct ']' charge charge_sign | adduct_separator '[M' adduct ']' charge charge_sign;
44 | adduct : '+H' | '+2H' | '+NH4' | '-H' | '-2H' | '+HCOO' | '+CH3COO' | charge_sign arbitrary_adduct;
45 | arbitrary_adduct : adduct4 | adduct4 adduct4;
46 | adduct4 : adduct2 | adduct2 adduct2;
47 | adduct2 : character | character character;
48 |
49 | fa2 : fa2_unsorted | fa2_sorted;
50 | fa2_unsorted: fa DASH fa | fa UNDERSCORE fa;
51 | fa2_sorted: fa SLASH fa | fa BACKSLASH fa;
52 | fa3 : fa3_unsorted | fa3_sorted;
53 | fa3_unsorted: fa DASH fa DASH fa | fa UNDERSCORE fa UNDERSCORE fa;
54 | fa3_sorted: fa SLASH fa SLASH fa | fa BACKSLASH fa BACKSLASH fa;
55 | fa4 : fa4_unsorted | fa4_sorted;
56 | fa4_unsorted: fa DASH fa DASH fa DASH fa | fa UNDERSCORE fa UNDERSCORE fa UNDERSCORE fa;
57 | fa4_sorted: fa SLASH fa SLASH fa SLASH fa | fa BACKSLASH fa BACKSLASH fa BACKSLASH fa;
58 |
59 | /* glycerolipid rules */
60 | gl : sqml | mgl | dgl | sgl | tgl;
61 | sqml : hg_sqml_full headgroup_separator fa;
62 | mgl : hg_mgl_full headgroup_separator fa;
63 | dgl : hg_dgl_full headgroup_separator gl_species | hg_dgl_full headgroup_separator dgl_subspecies;
64 | sgl : hg_sgl_full headgroup_separator gl_species | hg_sgl_full headgroup_separator dgl_subspecies;
65 | tgl : hg_tgl_full headgroup_separator gl_species | hg_tgl_full headgroup_separator tgl_subspecies;
66 | gl_species : fa;
67 | dgl_subspecies : fa2;
68 | tgl_subspecies : fa3;
69 |
70 | hg_sqml_full : hg_sqml | hg_mgl heavy_hg;
71 | hg_mgl_full : hg_mgl | hg_mgl heavy_hg;
72 | hg_dgl_full : hg_dgl | hg_dgl heavy_hg;
73 | hg_sgl_full : hg_sgl | hg_sgl heavy_hg;
74 | hg_tgl_full : hg_tgl | hg_tgl heavy_hg;
75 |
76 | hg_sqml : 'SQMG';
77 | hg_mgl : 'MAG';
78 | hg_dgl : 'DAG';
79 | hg_sgl : 'MGDG' | 'DGDG' | 'SQDG';
80 | hg_tgl : 'TAG';
81 |
82 |
83 |
84 | /* phospholipid rules */
85 | pl : lpl | dpl | tpl | pl_o | cl | mlcl | dlcl;
86 | pl_o : lpl_o | dpl_o;
87 | lpl : hg_lplc headgroup_separator fa;
88 | lpl_o : hg_lpl_oc plasmalogen_separator fa;
89 | dpl : hg_plc headgroup_separator pl_species | hg_plc headgroup_separator pl_subspecies;
90 | tpl : hg_tplc headgroup_separator pl_species | hg_tplc headgroup_separator tpl_subspecies;
91 | dpl_o : hg_pl_oc plasmalogen_separator pl_species | hg_pl_oc plasmalogen_separator pl_subspecies;
92 | dlcl : hg_dlclc headgroup_separator pl_species | hg_dlclc headgroup_separator dlcl_subspecies;
93 | mlcl : hg_mlclc headgroup_separator pl_species | hg_mlclc headgroup_separator mlcl_subspecies;
94 | cl : hg_clc headgroup_separator pl_species | hg_clc headgroup_separator cl_subspecies;
95 |
96 | pl_species : fa;
97 | pl_subspecies : fa2;
98 | tpl_subspecies : fa3;
99 | dlcl_subspecies : fa2;
100 | mlcl_subspecies : fa3;
101 | cl_subspecies : fa4;
102 |
103 | heavy_hg : heavy;
104 |
105 |
106 | hg_clc : hg_cl | hg_cl heavy_hg;
107 | hg_cl : 'CL';
108 | hg_mlclc : hg_mlcl | hg_mlcl heavy_hg;
109 | hg_mlcl : 'MLCL';
110 | hg_dlclc : hg_dlcl | hg_dlcl heavy_hg;
111 | hg_dlcl : 'DLCL';
112 | hg_plc : hg_pl | hg_pl heavy_hg;
113 | hg_pl : 'BMP' | 'CDP-DAG' | 'DMPE' | 'MMPE' | 'PA' | 'PC' | 'PE' | 'PEt' | 'PG' | 'PI' | hg_pip | 'PS' | 'LBPA' | 'PGP' | 'PPA' | 'Glc-GP' | '6-Ac-Glc-GP' | hg_pim | 'PnC' | 'PnE' | 'PT' | 'PE-NMe2' | 'PE-NMe' | 'PIMIP' | 'CDPDAG';
114 | hg_pim : 'PIM' hg_pim_number;
115 | hg_pim_number : number;
116 | hg_pip : hg_pip_pure | hg_pip_pure hg_pip_m | hg_pip_pure hg_pip_d | hg_pip_pure hg_pip_t;
117 | hg_pip_pure : 'PIP';
118 | hg_pip_m : '[3\']' | '[4\']' | '[5\']';
119 | hg_pip_d : '2' | '2[3\',4\']' | '2[4\',5\']' | '2[3\',5\']';
120 | hg_pip_t : '3' | '3[3\',4\',5\']';
121 | hg_tplc : hg_tpl | hg_tpl heavy_hg;
122 | hg_tpl : 'SLBPA' | 'NAPE';
123 | hg_lplc : hg_lpl | hg_lpl heavy_hg;
124 | hg_lpl : 'LPA' | 'LPC' | 'LPE' | 'LPG' | 'LPI' | 'LPS' | hg_lpim | 'CPA' | 'LCDPDAG' | 'LDMPE' | 'LMMPE' | 'LPIMIP' | 'LPIN';
125 | hg_lpim : 'LPIM' hg_lpim_number;
126 | hg_lpim_number : number;
127 | hg_lpl_oc : hg_lpl_o ' O' | hg_lpl_o heavy_hg ' O';
128 | hg_lpl_o : hg_lpl;
129 | hg_pl_oc : hg_pl_o ' O' | hg_pl_o heavy_hg ' O';
130 | hg_pl_o : hg_pl;
131 |
132 |
133 |
134 | /* sphingolipid rules */
135 | sl : lsl | dsl;
136 | lsl : hg_lslc headgroup_separator lcb;
137 | dsl : hg_dslc headgroup_separator sl_species | hg_dslc headgroup_separator sl_subspecies;
138 |
139 | sl_species : lcb;
140 | sl_subspecies : lcb sorted_fa_separator fa;
141 |
142 | hg_lslc : hg_lsl | hg_lsl heavy_hg;
143 | hg_lsl : 'LCB' | 'LCBP' | 'LHexCer' | 'LSM';
144 | hg_dslc : hg_dsl | hg_dsl heavy_hg;
145 | hg_dsl : 'Cer' | 'CerP' | 'EPC' | 'GB4' | 'GD3' | 'GB3' | 'GM1' | 'GM3' | 'GM4' | 'Hex3Cer' | 'Hex2Cer' | 'HexCer' | 'IPC' | 'M(IP)2C' | 'MIPC' | 'SHexCer' | 'SM' | 'FMC-5' | 'FMC-6' ;
146 |
147 |
148 |
149 | /* sterol lipids */
150 | sterol : stc | ste | stes;
151 | stc : st | st heavy_hg;
152 | st : 'Ch' | 'Cholesterol' | 'ST 27:1;1' | 'ST 27:2;1' | 'ST 28:3;1' | 'ST 30:2;1' | 'ST 29:2;1' | 'ST 28:2;1' | 'Desmosterol' | 'Stigmasterol' | 'Ergosterol' | 'Lanosterol';
153 | ste : hg_stc sorted_fa_separator fa;
154 | stes : hg_stcs headgroup_separator fa;
155 | hg_stc : hg_ste | hg_ste heavy_hg;
156 | hg_ste : 'SE 27:1' | 'SE 27:2' | 'SE 28:3' | 'SE 30:2' | 'SE 29:2' | 'SE 28:2';
157 | hg_stcs : hg_stes | hg_ste heavy_hg;
158 | hg_stes : 'ChE' | 'CE';
159 |
160 |
161 | /* mediator lipids */
162 | mediatorc : mediator | mediator heavy_hg;
163 | mediator : '10-HDoHE' | '11-HDoHE' | '11-HETE' | '11,12-DHET' | '11(12)-EET'| '12-HEPE' | '12-HETE' | '12-HHTrE' | '12-OxoETE' | '12(13)-EpOME' | '13-HODE' | '13-HOTrE' | '14,15-DHET' | '14(15)-EET' | '14(15)-EpETE' | '15-HEPE' | '15-HETE' | '15d-PGJ2' | '16-HDoHE' | '16-HETE' | '18-HEPE' | '5-HEPE' | '5-HETE' | '5-HpETE' | '5-OxoETE' | '5,12-DiHETE' | '5,6-DiHETE' | '5,6,15-LXA4' | '5(6)-EET' | '8-HDoHE' | '8-HETE' | '8,9-DHET' | '8(9)-EET' | '9-HEPE' | '9-HETE' | '9-HODE' | '9-HOTrE' | '9(10)-EpOME' | 'AA' | 'alpha-LA' | 'DHA' | 'EPA' | 'Linoleic acid' | 'LTB4' | 'LTC4' | 'LTD4' | 'Maresin 1' | 'Palmitic acid' | 'PGB2' | 'PGD2' | 'PGE2' | 'PGF2alpha' | 'PGI2' | 'Resolvin D1' | 'Resolvin D2' | 'Resolvin D3' | 'Resolvin D5' | 'tetranor-12-HETE' | 'TXB1' | 'TXB2' | 'TXB3';
164 |
165 |
166 |
167 |
168 | /* saccharolipids rules */
169 | saccharolipid : sac_di | sac_f;
170 | sac_di : hg_sac_di_c headgroup_separator sac_species | hg_sac_di_c headgroup_separator sac_di_subspecies;
171 | hg_sac_di_c : hg_sac_di | hg_sac_di heavy_hg;
172 | hg_sac_di : 'DAT' | 'AC2SGL';
173 | sac_f : hg_sac_f_c headgroup_separator sac_species | hg_sac_f_c headgroup_separator sac_f_subspecies;
174 | hg_sac_f_c : hg_sac_f | hg_sac_f heavy_hg;
175 | hg_sac_f : 'PAT16' | 'PAT18';
176 |
177 | sac_species : fa;
178 | sac_di_subspecies : fa2;
179 | sac_f_subspecies : fa4;
180 |
181 |
182 |
183 | /* generic rules */
184 | fa : fa_pure | fa_pure heavy_fa | fa_pure ether | fa_pure ether heavy_fa;
185 | heavy_fa : heavy;
186 | fa_pure : carbon carbon_db_separator db | carbon carbon_db_separator db db_hydroxyl_separator hydroxyl;
187 | ether : 'a' | 'p';
188 | lcb : lcb_pure | lcb_pure heavy_lcb;
189 | heavy_lcb : heavy;
190 | lcb_pure : carbon carbon_db_separator db db_hydroxyl_separator hydroxyl | old_hydroxyl carbon carbon_db_separator db;
191 | carbon : number;
192 | db : db_count | db_count db_positions;
193 | db_count : number;
194 | db_positions : ROB db_position RCB;
195 | db_position : db_single_position | db_position db_position_separator db_position;
196 | db_single_position : db_position_number | db_position_number cistrans;
197 | db_position_number : number;
198 | cistrans : 'E' | 'Z';
199 | hydroxyl : number;
200 | old_hydroxyl : 'd' | 't';
201 | number : digit | digit number;
202 | digit : '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9';
203 |
204 |
205 |
206 |
207 |
208 | heavy : '(+' isotopes ')';
209 | isotopes : isotopes isotopes | isotope;
210 | isotope : '[' isotope_number ']' isotope_element isotope_count | '[' isotope_number ']' isotope_element;
211 | isotope_number : number;
212 | isotope_element : element;
213 | isotope_count : number;
214 | element : 'C' | 'H' | 'O' | 'N' | 'P' | 'S';
215 |
216 | /* separators */
217 | SPACE : ' ';
218 | COLON : ':';
219 | SEMICOLON : ';';
220 | DASH : '-';
221 | UNDERSCORE : '_';
222 | SLASH : '/';
223 | BACKSLASH : '\\';
224 | COMMA: ',';
225 | ROB: '(';
226 | RCB: ')';
227 | FRAGMENT_SEPARATOR : ' - ';
228 |
229 | sorted_fa_separator : SLASH | BACKSLASH;
230 | adduct_separator : SPACE;
231 | unsorted_fa_separator : DASH | UNDERSCORE;
232 | plasmalogen_separator : headgroup_separator | DASH;
233 | headgroup_separator : SPACE;
234 | carbon_db_separator : COLON;
235 | db_hydroxyl_separator : SEMICOLON;
236 | db_position_separator : COMMA;
237 | round_open_bracket : ROB;
238 | round_close_bracket : RCB;
239 |
240 | character : 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h' | 'i' | 'j' | 'k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't' | 'u' | 'v' | 'w' | 'x' | 'y' | 'z' | 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I' | 'J' | 'K' | 'L' | 'M' | 'N' | 'O' | 'P' | 'Q' | 'R' | 'S' | 'T' | 'U' | 'V' | 'W' | 'X' | 'Y' | 'Z' |'0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9';
241 | charge : '1' | '2' | '3' | '4';
242 | charge_sign : '-' | '+';
243 |
--------------------------------------------------------------------------------
/testfiles/lipid-masses.csv:
--------------------------------------------------------------------------------
1 | Molecule List Name,Precursor Name,Precursor Ion Formula,Precursor Adduct,Precursor m/z,Precursor Charge
2 | PA,PA 16:0-18:1,C37H71O8P,[M-H]1-,673.4813805,-1
3 | PA,PA 16:0-18:1,C37H71O8P,[M-H]1-,673.4813805,-1
4 | PA,PA 16:0-18:1,C37H71O8P,[M-H]1-,673.4813805,-1
5 | PA,PA 16:0-18:1,C37H71O8P,[M-H]1-,673.4813805,-1
6 | PC,PC 21:0-22:6,C51H90NO8P,[M+CH3COO]1-,934.6542591,-1
7 | PC,PC 21:0-22:6,C51H90NO8P,[M+HCOO]1-,920.6386091,-1
8 | PC,PC 21:0-22:6,C51H90NO8P,[M+CH3COO]1-,934.6542591,-1
9 | PC,PC 21:0-22:6,C51H90NO8P,[M+HCOO]1-,920.6386091,-1
10 | PC,PC 21:0-22:6,C51H90NO8P,[M+H]1+,876.6476822,1
11 | PE,PE 17:0-17:0,C39H78NO8P,[M+H]1+,720.5537818,1
12 | PE,PE 17:0-17:0,C39H78NO8P,[M-H]1-,718.5392298,-1
13 | PG,PG 17:0-20:4,C43H77O10P,[M-H]1-,783.51816,-1
14 | PG,PG 17:0-20:4,C43H77O10P,[M-H]1-,783.51816,-1
15 | PG,PG 17:0-20:4,C43H77O10P,[M+H]1+,785.532712,1
16 | PI,PI 21:0-22:6,C52H89O13P,[M-H]1-,951.5968043,-1
17 | PI,PI 21:0-22:6,C52H89O13P,[M-H]1-,951.5968043,-1
18 | PI,PI 21:0-22:6,C52H89O13P,[M+H]1+,953.6113563,1
19 | PS,PS 12:0-13:0,C31H60NO10P,[M-H]1-,636.3882084,-1
20 | PS,PS 12:0-13:0,C31H60NO10P,[M-H]1-,636.3882084,-1
21 | PS,PS 12:0-13:0,C31H60NO10P,[M+H]1+,638.4027604,1
22 | PIP,PIP 17:0-20:4,C46H82O16P2,[M-H]1-,951.500535,-1
23 | PIP,PIP 17:0-20:4,C46H82O16P2,[M-H]1-,951.500535,-1
24 | PIP,PIP 17:0-20:4,C46H82O16P2,[M-H]1-,951.500535,-1
25 | PIP,PIP 17:0-20:4,C46H82O16P2,[M-H]1-,951.500535,-1
26 | PIP,PIP 17:0-20:4,C46H82O16P2,[M-H]1-,951.500535,-1
27 | PIP2,PIP2 17:0-20:4,C46H83O19P3,[M-H]1-,1031.466866,-1
28 | PIP2,PIP2 17:0-20:4,C46H83O19P3,[M-H]1-,1031.466866,-1
29 | PIP2,PIP2 17:0-20:4,C46H83O19P3,[M-H]1-,1031.466866,-1
30 | PIP2,PIP2 17:0-20:4,C46H83O19P3,[M-H]1-,1031.466866,-1
31 | PIP3,PIP3 17:0-20:4,C46H84O22P4,[M-H]1-,1111.433197,-1
32 | PIP3,PIP3 17:0-20:4,C46H84O22P4,[M-H]1-,1111.433197,-1
33 | PIP3,PIP3 17:0-20:4,C46H84O22P4,[M-H]1-,1111.433197,-1
34 | PIP3,PIP3 17:0-20:4,C46H84O22P4,[M-H]1-,1111.433197,-1
35 | MG,MAG 16:0,C19H38O4,[M+NH4]1+,348.3108354,1
36 | MG,MAG 16:0,C19H38O4,[M+NH4]1+,348.3108354,1
37 | DG,DAG 16:0-16:0,C35H68O5,[M+NH4]1+,586.5405011,1
38 | DG,DAG 16:0-16:0,C35H68O5,[M+NH4]1+,586.5405011,1
39 | TG,TAG 14:0-14:0-14:0,C45H86O6,[M+NH4]1+,740.6762664,1
40 | TG,TAG 14:0-14:0-14:0,C45H86O6,[M+NH4]1+,740.6762664,1
41 | CL,CL 18:1-18:1-18:1-18:1,C81H150O17P2,[M-H]1-,1456.027552,-1
42 | CL,CL 18:1-18:1-18:1-18:1,C81H150O17P2,[M-H]1-,1456.027552,-1
43 | CL,CL 18:1-18:1-18:1-18:1,C81H150O17P2,[M-H]1-,1456.027552,-1
44 | CL,CL 18:1-18:1-18:1-18:1,C81H150O17P2,[M-H]1-,1456.027552,-1
45 | LCL,MLCL 18:1-18:1-18:1,C63H118O16P2,[M-H]1-,1191.782236,-1
46 | LCL,MLCL 18:1-18:1-18:1,C63H118O16P2,[M-H]1-,1191.782236,-1
47 | LCL,MLCL 18:1-18:1-18:1,C63H118O16P2,[M-H]1-,1191.782236,-1
48 | LCL,MLCL 18:1-18:1-18:1,C63H118O16P2,[M-H]1-,1191.782236,-1
49 | Cer,Cer 18:1;2/16:0,C34H67NO3,[M+H]1+,538.5193712,1
50 | Cer,Cer 18:1;2/16:0,C34H67NO3,[M+H]1+,538.5193712,1
51 | Cer,Cer 18:1;2/16:0,C34H67NO3,[M+HCOO]1-,582.5102981,-1
52 | Cer,Cer 18:1;2/16:0,C34H67NO3,[M-H]1-,536.5048192,-1
53 | Cer,Cer 18:1;2/16:0,C34H67NO3,[M-H]1-,536.5048192,-1
54 | CerP,CerP 18:1;2/12:0,C30H60NO6P,[M+H]1+,562.4231019,1
55 | CerP,CerP 18:1;2/12:0,C30H60NO6P,[M+H]1+,562.4231019,1
56 | CerP,CerP 18:1;2/12:0,C30H60NO6P,[M-H]1-,560.4085499,-1
57 | HexCer,HexCer 18:1;2/12:0,C36H69NO8,[M+H]1+,644.5095945,1
58 | HexCer,HexCer 18:1;2/12:0,C36H69NO8,[M+H]1+,644.5095945,1
59 | HexCer,HexCer 18:1;2/12:0,C36H69NO8,[M+H]1+,644.5095945,1
60 | HexCer,HexCer 18:1;2/12:0,C36H69NO8,[M+HCOO]1-,688.5005213,-1
61 | HexCer,HexCer 18:1;2/12:0,C36H69NO8,[M-H]1-,642.4950425,-1
62 | SHexCer,SHexCer 18:1;2/12:0,C36H69NO11S,[M+H]1+,724.466409,1
63 | SHexCer,SHexCer 18:1;2/12:0,C36H69NO11S,[M+H]1+,724.466409,1
64 | SHexCer,SHexCer 18:1;2/12:0,C36H69NO11S,[M+H]1+,724.466409,1
65 | SHexCer,SHexCer 18:1;2/12:0,C36H69NO11S,[M-H]1-,722.451857,-1
66 | SHexCer,SHexCer 18:1;2/12:0,C36H69NO11S,[M-H]1-,722.451857,-1
67 | SHexCer,SHexCer 18:1;2/12:0,C36H69NO11S,[M-H]1-,722.451857,-1
68 | Hex2Cer,Hex2Cer 18:1;2/12:0,C42H79NO13,[M+H]1+,806.562418,1
69 | Hex2Cer,Hex2Cer 18:1;2/12:0,C42H79NO13,[M+H]1+,806.562418,1
70 | Hex2Cer,Hex2Cer 18:1;2/12:0,C42H79NO13,[M+HCOO]1-,850.5533448,-1
71 | Hex2Cer,Hex2Cer 18:1;2/12:0,C42H79NO13,[M-H]1-,804.547866,-1
72 | Hex2Cer,Hex2Cer 18:1;2/12:0,C42H79NO13,[M-H]1-,804.547866,-1
73 | MIPC,MIPC 18:0;3/26:0;1,C56H110NO18P,[M-H]1-,1114.738777,-1
74 | MIPC,MIPC 18:0;3/26:0;1,C56H110NO18P,[M-H]1-,1114.738777,-1
75 | M(IP)2C,M(IP)2C 18:0;3/26:0;1,C62H121NO26P2,[M-H]1-,1356.757932,-1
76 | M(IP)2C,M(IP)2C 18:0;3/26:0;1,C62H121NO26P2,[M-H]1-,1356.757932,-1
77 | M(IP)2C,M(IP)2C 18:0;3/26:0;1,C62H121NO26P2,[M-H]1-,1356.757932,-1
78 | EPC,EPC 17:1;2/12:0,C31H63N2O6P,[M+H]1+,591.449651,1
79 | IPC,IPC 18:0;3/26:0;1,C50H100NO13P,[M-H]1-,952.6859537,-1
80 | IPC,IPC 18:0;3/26:0;1,C50H100NO13P,[M-H]1-,952.6859537,-1
81 | IPC,IPC 18:0;3/26:0;1,C50H100NO13P,[M-H]1-,952.6859537,-1
82 | SM,SM 18:1;2/12:0,C35H71N2O6P,[M+H]1+,647.5122513,1
83 | SM,SM 18:1;2/12:0,C35H71N2O6P,[M+H]1+,647.5122513,1
84 | LPC,LPC 19:0,C27H56NO7P,[M+H]1+,538.3867164,1
85 | LPC,LPC 19:0,C27H56NO7P,[M+HCOO]1-,582.3776432,-1
86 | LPC,LPC O-19:1p,C27H56NO6P,[M+H]1+,522.3918017,1
87 | LPC,LPC O-19:1p,C27H56NO6P,[M+HCOO]1-,566.3827286,-1
88 | LPC,LPC O-19:0a,C27H58NO6P,[M+HCOO]1-,568.3983787,-1
89 | LPE,LPE 16:0,C21H44NO7P,[M+H]1+,454.292816,1
90 | LPE,LPE 16:0,C21H44NO7P,[M-H]1-,452.278264,-1
91 | LPE,LPE O-16:1p,C21H44NO6P,[M+H]1+,438.2979013,1
92 | LPE,LPE O-16:1p,C21H44NO6P,[M-H]1-,436.2833493,-1
93 | LPE,LPE O-16:0a,C21H46NO6P,[M+H]1+,440.3135514,1
94 | LPE,LPE O-16:0a,C21H46NO6P,[M-H]1-,438.2989994,-1
95 | LPI,LPI 17:1,C26H49O12P,[M+H]1+,585.3034403,1
96 | LPI,LPI 17:1,C26H49O12P,[M+H]1+,585.3034403,1
97 | LPI,LPI 17:1,C26H49O12P,[M-H]1-,583.2888883,-1
98 | LPI,LPI 17:1,C26H49O12P,[M-H]1-,583.2888883,-1
99 | LPG,LPG 17:1,C23H45O9P,[M-H]1-,495.2728442,-1
100 | LPG,LPG 17:1,C23H45O9P,[M-H]1-,495.2728442,-1
101 | LPG,LPG 17:1,C23H45O9P,[M+H]1+,497.2873962,1
102 | LPA,LPA 17:1,C20H39O7P,[M+NH4]1+,440.2771663,1
103 | LPA,LPA 17:1,C20H39O7P,[M+NH4]1+,440.2771663,1
104 | LPA,LPA 17:1,C20H39O7P,[M-H]1-,421.2360648,-1
105 | LPA,LPA 17:1,C20H39O7P,[M-H]1-,421.2360648,-1
106 | LPS,LPS 17:1,C23H44NO9P,[M+H]1+,510.2826452,1
107 | LPS,LPS 17:1,C23H44NO9P,[M+H]1+,510.2826452,1
108 | LPS,LPS 17:1,C23H44NO9P,[M-H]1-,508.2680932,-1
109 | LPS,LPS 17:1,C23H44NO9P,[M-H]1-,508.2680932,-1
110 | SPB,LCB 17:0;2,C17H37NO2,[M+H]1+,288.2897056,1
111 | SPB,LCB 17:0;2,C17H37NO2,[M+H]1+,288.2897056,1
112 | SPB,LCB 17:1;2,C17H35NO2,[M+H]1+,286.2740555,1
113 | SPB,LCB 17:1;2,C17H35NO2,[M+H]1+,286.2740555,1
114 | SPBP,LCBP 17:1;2,C17H36NO5P,[M+H]1+,366.2403864,1
115 | SPBP,LCBP 17:1;2,C17H36NO5P,[M+H]1+,366.2403864,1
116 | LSM,LSM 17:1;2,C22H47N2O5P,[M+H]1+,451.3295358,1
117 | LSM,LSM 17:1;2,C22H47N2O5P,[M+H]1+,451.3295358,1
118 | MMPE,MMPE 18:1-18:1,C42H80NO8P,[M+H]1+,758.5694318,1
119 | MMPE,MMPE 18:1-18:1,C42H80NO8P,[M+H]1+,758.5694318,1
120 | MMPE,MMPE 18:1-18:1,C42H80NO8P,[M+H]1+,758.5694318,1
121 | MMPE,MMPE 18:1-18:1,C42H80NO8P,[M-H]1-,756.5548798,-1
122 | MMPE,MMPE 18:1-18:1,C42H80NO8P,[M-H]1-,756.5548798,-1
123 | MMPE,MMPE 18:1-18:1,C42H80NO8P,[M-H]1-,756.5548798,-1
124 | DMPE,DMPE 18:1-18:1,C43H82NO8P,[M+H]1+,772.5850819,1
125 | DMPE,DMPE 18:1-18:1,C43H82NO8P,[M+H]1+,772.5850819,1
126 | DMPE,DMPE 18:1-18:1,C43H82NO8P,[M+H]1+,772.5850819,1
127 | DMPE,DMPE 18:1-18:1,C43H82NO8P,[M-H]1-,770.5705299,-1
128 | DMPE,DMPE 18:1-18:1,C43H82NO8P,[M-H]1-,770.5705299,-1
129 | DMPE,DMPE 18:1-18:1,C43H82NO8P,[M-H]1-,770.5705299,-1
130 | MGDG,MGDG 16:0-16:1,C41H76O10,[M+NH4]1+,746.5776745,1
131 | MGDG,MGDG 16:0-16:1,C41H76O10,[M+H]1+,729.551125,1
132 | MGDG,MGDG 16:0-16:1,C41H76O10,[M+CH3COO]1-,787.5577019,-1
133 | MGDG,MGDG 16:0-16:1,C41H76O10,[M-H]1-,727.536573,-1
134 | MGDG,MGDG 16:0-16:1,C41H76O10,[M-H]1-,727.536573,-1
135 | DGDG,DGDG 16:0-16:1,C47H86O15,[M+CH3COO]1-,949.6105254,-1
136 | DGDG,DGDG 16:0-16:1,C47H86O15,[M-H]1-,889.5893965,-1
137 | DGDG,DGDG 16:0-16:1,C47H86O15,[M-H]1-,889.5893965,-1
138 | DGDG,DGDG 16:0-16:1,C47H86O15,[M+NH4]1+,908.630498,1
139 | DGDG,DGDG 16:0-16:1,C47H86O15,[M+H]1+,891.6039485,1
140 | SQDG,SQDG 16:0-16:0,C41H78O12S,[M+NH4]1+,812.5552246,1
141 | SQDG,SQDG 16:0-16:0,C41H78O12S,[M+H]1+,795.528675,1
142 | SQDG,SQDG 16:0-16:0,C41H78O12S,[M-H]1-,793.514123,-1
143 | SQDG,SQDG 16:0-16:0,C41H78O12S,[M-H]1-,793.514123,-1
144 | Hex3Cer,Hex3Cer 18:1;2/24:1,C60H111NO18,[M+H]1+,1134.787392,1
145 | Hex3Cer,Hex3Cer 18:1;2/24:1,C60H111NO18,[M+H]1+,1134.787392,1
146 | Hex3HexNAcCer,GB4 18:1;2/24:1,C68H124N2O23,[M+H]1+,1337.866765,1
147 | Hex3HexNAcCer,GB4 18:1;2/24:1,C68H124N2O23,[M+H]1+,1337.866765,1
148 | Hex3HexNAcCer,GB4 18:1;2/24:1,C68H124N2O23,[M+H]1+,1337.866765,1
149 | Hex2NeuAc2Cer,GD3 18:1;2/24:0,C76H137N3O29,[M-H]1-,1554.9265,-1
150 | Hex2NeuAc2Cer,GD3 18:1;2/24:0,C76H137N3O29,[M-H]1-,1554.9265,-1
151 | Hex2NeuAcCer,GM3 18:1;2/24:1,C65H118N2O21,[M-H]1-,1261.815433,-1
152 | Hex2NeuAcCer,GM3 18:1;2/24:1,C65H118N2O21,[M-H]1-,1261.815433,-1
153 | HexNeuAcCer,GM4 18:1;2/24:0;1,C59H110N2O17,[M-H]1-,1117.773175,-1
154 | HexNeuAcCer,GM4 18:1;2/24:0;1,C59H110N2O17,[M-H]1-,1117.773175,-1
155 | PEt,PEt 16:0-18:1,C39H75O8P,[M+NH4]1+,720.5537822,1
156 | PEt,PEt 16:0-18:1,C39H75O8P,[M+H]1+,703.5272327,1
157 | PEt,PEt 16:0-18:1,C39H75O8P,[M+H]1+,703.5272327,1
158 | PEt,PEt 16:0-18:1,C39H75O8P,[M+H]1+,703.5272327,1
159 | PEt,PEt 16:0-18:1,C39H75O8P,[M+CH3COO]1-,761.5338096,-1
160 | PEt,PEt 16:0-18:1,C39H75O8P,[M-H]1-,701.5126807,-1
161 | PEt,PEt 16:0-18:1,C39H75O8P,[M-H]1-,701.5126807,-1
162 | CDPDAG,CDPDAG 18:1-18:1,C48H85N3O15P2,[M+H]1+,1006.552869,1
163 | CDPDAG,CDPDAG 18:1-18:1,C48H85N3O15P2,[M+H]1+,1006.552869,1
164 | CDPDAG,CDPDAG 18:1-18:1,C48H85N3O15P2,[M-H]1-,1004.538317,-1
165 | CDPDAG,CDPDAG 18:1-18:1,C48H85N3O15P2,[M-H]1-,1004.538317,-1
166 | BMP,BMP 18:1-18:1,C42H79O10P,[M+H]1+,775.5483621,1
167 | BMP,BMP 18:1-18:1,C42H79O10P,[M+H]1+,775.5483621,1
168 | BMP,BMP 18:1-18:1,C42H79O10P,[M-H]1-,773.5338101,-1
169 | LHexCer,LHexCer 18:1;2,C24H47NO7,[M+H]1+,462.3425291,1
170 | LHexCer,LHexCer 18:1;2,C24H47NO7,[M+CH3COO]1-,520.349106,-1
171 | LHexCer,LHexCer 18:1;2,C24H47NO7,[M-H]1-,460.3279771,-1
172 | ST 27:1;O,ST 27:1;1,C27H46O,[M+NH4]1+,404.3886918,1
173 | SE 27:1,SE 27:1/17:0,C44H78O2,[M+NH4]1+,656.6340076,1
174 | PC,PC O-18:1p/20:4,C46H84NO7P,[M+CH3COO]1-,852.6123943,-1
175 | PC,PC O-18:1p/20:4,C46H84NO7P,[M+CH3COO]1-,852.6123943,-1
176 | PC,PC O-18:1p/20:4,C46H84NO7P,[M+CH3COO]1-,852.6123943,-1
177 | PC,PC O-18:1p/20:4,C46H84NO7P,[M+CH3COO]1-,852.6123943,-1
178 | PC,PC O-18:1p/20:4,C46H84NO7P,[M+H]1+,794.6058174,1
179 | PC,PC O-18:0a/20:4,C46H86NO7P,[M+CH3COO]1-,854.6280444,-1
180 | PC,PC O-18:0a/20:4,C46H86NO7P,[M+H]1+,796.6214674,1
181 | PE,PE O-18:1p/22:6,C45H78NO7P,[M-H]1-,774.5443,-1
182 | PE,PE O-18:1p/22:6,C45H78NO7P,[M-H]1-,774.5443,-1
183 | PE,PE O-18:1p/22:6,C45H78NO7P,[M+H]1+,776.5588671,1
184 | PE,PE O-18:1p/22:6,C45H78NO7P,[M+H]1+,776.5588671,1
185 | PE,PE O-18:0a/22:6,C45H80NO7P,[M-H]1-,776.5599652,-1
186 | PE,PE O-18:0a/20:4,C43H80NO7P,[M+H]1+,754.5745172,1
187 | PE,PE O-18:0a/20:4,C43H80NO7P,[M+H]1+,754.5745172,1
188 | CL,CL 18:1-18:1-18:1-18:1,C81H150O17P2,[M-H]1-,1456.027552,-1
189 | LCL,MLCL 18:1-18:1-18:1,C63H118O16P2,[M-H]1-,1191.782236,-1
190 | M(IP)2C,M(IP)2C 18:0;3/26:0;1,C62H121NO26P2,[M-H]1-,1356.757932,-1
191 |
--------------------------------------------------------------------------------
/HMDB.g4:
--------------------------------------------------------------------------------
1 | /*
2 | * MIT License
3 | *
4 | * Copyright (c) the authors (listed in global LICENSE file)
5 | *
6 | * Permission is hereby granted, free of charge, to any person obtaining a copy
7 | * of this software and associated documentation files (the 'Software'), to deal
8 | * in the Software without restriction, including without limitation the rights
9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | * copies of the Software, and to permit persons to whom the Software is
11 | * furnished to do so, subject to the following conditions:;
12 | *
13 | * The above copyright notice and this permission notice shall be included in all
14 | * copies or substantial portions of the Software.
15 | *
16 | * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | * LIABILITY, WHether IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 | * SOFTWARE.
23 | */
24 |
25 |
26 |
27 | grammar HMDB;
28 |
29 |
30 | /* first rule is always start rule */
31 | lipid : lipid_pure EOF | lipid_pure adduct_info EOF;
32 | lipid_pure : lipid_class | lipid_class lipid_suffix;
33 | lipid_class : fatty_acid | gl | pl | sl | st;
34 |
35 | lipid_suffix : '[rac]';
36 |
37 | /* adduct information */
38 | adduct_info : adduct_sep | adduct_separator adduct_sep;
39 | adduct_sep : '[M' adduct ']' charge_sign | '[M' adduct ']' charge charge_sign;
40 | adduct : adduct_set;
41 | adduct_set : adduct_element | adduct_element adduct_set;
42 | adduct_element : element | element number | number element | plus_minus element | plus_minus element number | plus_minus number element;
43 |
44 |
45 |
46 |
47 | /* fatty acyl rules */
48 | fa : fa_core | furan_fa | fa_lcb_prefix fa_core | fa_core fa_lcb_suffix | fa_lcb_prefix fa_core fa_lcb_suffix | fa_synonym;
49 | fa_core : carbon carbon_db_separator db | ether carbon carbon_db_separator db | methyl carbon carbon_db_separator db;
50 |
51 | furan_fa : furan_fa_mono | furan_fa_di;
52 | furan_fa_mono : furan_first_number 'M' furan_second_number | 'MonoMe(' furan_first_number ',' furan_second_number ')';
53 | furan_fa_di : furan_first_number 'D' furan_second_number | 'DiMe(' furan_first_number ',' furan_second_number ')';
54 | furan_first_number : number;
55 | furan_second_number : number;
56 |
57 | fa_synonym : 'Palmitic acid' | 'Linoleic acid' | 'AA' | 'ALA' | 'EPA' | 'DHA' | 'LTB4' | 'Resolvin D3' | 'Maresin 1' | 'Resolvin D2' | 'Resolvin D5' | 'Resolvin D1' | 'TXB1' | 'TXB2' | 'TXB3' | 'PGF2alpha' | 'PGD2' | 'PGE2' | 'PGB2' | 'PGJ2' | '15d-PGJ2';
58 |
59 | lcb : lcb_core | fa_lcb_prefix lcb_core | lcb_core fa_lcb_suffix | fa_lcb_prefix lcb_core fa_lcb_suffix;
60 | lcb_core : hydroxyl carbon carbon_db_separator db;
61 |
62 | carbon : number;
63 | db : db_count | db_count db_positions | db_count db_suffix | db_count db_positions db_suffix;
64 | db_count : number;
65 | db_suffix : 'e' | 'n' db_suffix_number;
66 | db_suffix_number : number;
67 | db_positions : ROB db_position RCB;
68 | db_position : db_single_position | db_position db_position_separator db_position;
69 | db_single_position : db_position_number | db_position_number cistrans;
70 | db_position_number : number;
71 | cistrans : 'E' | 'Z';
72 | ether : ether_type | ether_link_pos ether_type;
73 | ether_link_pos : number '-';
74 | ether_type : 'o-' | 'O-' | 'P-';
75 | methyl : 'i-' | 'a-';
76 | hydroxyl : 'm' | 'd' | 't';
77 | fa_lcb_suffix : fa_lcb_suffix_core | fa_lcb_suffix_separator fa_lcb_suffix_core | ROB fa_lcb_suffix_core RCB | fa_lcb_suffix_full;
78 | fa_lcb_suffix_full : fa_lcb_suffix_full_sep fa_lcb_suffix_number fa_lcb_suffix_types ROB fa_lcb_suffix_positions RCB | fa_lcb_suffix_full_sep fa_lcb_suffix_types ROB fa_lcb_suffix_position_core RCB;
79 | fa_lcb_suffix_full_sep : fa_lcb_suffix_separator | '+=';
80 | fa_lcb_suffix_core : fa_lcb_suffix_type | fa_lcb_suffix_number fa_lcb_suffix_type | fa_lcb_suffix_number fa_lcb_suffix_separator fa_lcb_suffix_type;
81 | fa_lcb_suffix_type : 'OH' | 'me';
82 | fa_lcb_suffix_types : 'OH' | 'me' | 'O';
83 | fa_lcb_suffix_number : number;
84 | fa_lcb_prefix : fa_lcb_prefix_type | fa_lcb_prefix_type fa_lcb_prefix_separator;
85 | fa_lcb_prefix_type : 'iso';
86 | fa_lcb_suffix_positions : fa_lcb_suffix_position_core COMMA fa_lcb_suffix_positions | fa_lcb_suffix_position_core;
87 | fa_lcb_suffix_position_core : fa_lcb_suffix_position | fa_lcb_suffix_position med_suffix;
88 | fa_lcb_suffix_position : number;
89 |
90 | /* different fatty acyl types */
91 | fa_species : fa;
92 |
93 | fa2 : fa2_sorted | fa2_unsorted;
94 | fa2_sorted : fa sorted_fa_separator fa;
95 | fa2_unsorted : fa unsorted_fa_separator fa;
96 |
97 | fa3 : fa3_sorted | fa3_unsorted;
98 | fa3_sorted : fa sorted_fa_separator fa sorted_fa_separator fa;
99 | fa3_unsorted : fa unsorted_fa_separator fa unsorted_fa_separator fa;
100 |
101 | fa4 : fa4_sorted | fa4_unsorted;
102 | fa4_sorted : fa sorted_fa_separator fa sorted_fa_separator fa sorted_fa_separator fa;
103 | fa4_unsorted : fa unsorted_fa_separator fa unsorted_fa_separator fa unsorted_fa_separator fa;
104 |
105 |
106 |
107 |
108 |
109 | /* fatty acid rules */
110 | fatty_acid : fa_hg fa_fa | fa_hg interlink_fa | fa_hg headgroup_separator fa_fa | mediator;
111 | fa_hg : 'FA' | 'fatty acid' | 'fatty alcohol' | 'NAE' | 'GP-NAE' | 'FAHFA';
112 | fa_fa : ROB fa RCB;
113 | interlink_fa : ROB fa sorted_fa_separator fa RCB;
114 |
115 |
116 |
117 |
118 |
119 | /* mediator rules */
120 | mediator : mediator_single | mediator_single headgroup_separator med_positions;
121 | mediator_single : mediator_single mediator_single | mediator_single '-' mediator_single | db_positions | med_positions | 'KETE' | 'keto' | 'oxo' | 'Hp' | 'EPE' | 'ETE' | 'ODE' | 'EPT' | 'H' | 'LXA4' | 'hydroxy' | 'Di' | 'RvE1' | 'glyceryl' | 'EpETrE' | 'DHE' | 'ETrE' | 'DHA' | 'DoHA' | 'LTB4' | 'PGE2' | ' PGE2' | 'PGF2alpha' | 'trihydroxy' | 'TriH' | 'OTrE' | 'dihydroxy' | 'Ep' | 'LXB4' | 'Tri' | 'PAHSA' | 'MUFA' | 'GPGP' | 'GPIP' | 'PGE1' | 'PGG2' | 'SFA' | 'PUFA' | 'PGI2' | 'TXA2' | 'CoA' | 'FAOH' | 'EA' | 'beta' | 'PGH2' | 'LTD4' | 'kete' | 'DPE' | ' PGD2' | 'PGD2' | 'PGF2' | 'LTC4' | 'LTA4' | 'PGD1' | 'PGA1' | 'LTDE4' | 'epoxyoleate' | 'epoxystearate' | 'carboxy' | 'PGH1' | 'EtrE' | 'HXA3' | 'HxA3' | 'HXA3-C';
122 |
123 |
124 |
125 | med_positions : med_position | ROB med_position RCB;
126 | med_position : med_position med_position_separator med_position | number med_suffix | number;
127 | med_suffix : 'S' | 'R';
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 | /* glycerolipid rules */
136 | gl : gl_regular | gl_mono | gl_molecular;
137 |
138 | gl_regular : gl_hg gl_fa | gl_hg headgroup_separator gl_fa;
139 | gl_fa : ROB fa_species RCB | ROB fa3 RCB;
140 | gl_hg : 'MG' | 'DG' | 'TG' | 'MAG' | 'DAG' | 'TAG';
141 |
142 | gl_molecular : gl_molecular_hg gl_molecular_fa | gl_molecular_hg headgroup_separator gl_molecular_fa;
143 | gl_molecular_fa : ROB fa2 RCB;
144 | gl_molecular_hg : 'DG' | 'DAG';
145 |
146 |
147 | gl_mono : gl_mono_hg gl_mono_fa | gl_mono_hg headgroup_separator gl_mono_fa;
148 | gl_mono_fa : ROB fa_species RCB | ROB fa2 RCB;
149 | gl_mono_hg : 'MHDG' | 'DHDG' | 'MGDG' | 'DGDG';
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 | /* phospholipid rules */
158 | pl : pl_regular | pl_three | pl_four;
159 |
160 | pl_regular : pl_hg pl_fa | pl_hg headgroup_separator pl_fa;
161 | pl_fa : ROB fa_species RCB | ROB fa2 RCB;
162 | pl_hg : 'LPA' | 'LPC' | 'LPE' | 'LPG' | 'LPI' | 'LPS' | 'PA' | 'PC' | 'PE' | 'PG' | 'PI' | 'PS' | 'PGP' | 'PIP' | 'PIP[3]' | 'PIP[4]' | 'PIP[5]' | 'PIP2' | 'PIP2[3,4]' | 'PIP2[3,5]' | 'PIP2[4,5]' | 'PIP3' | 'PIP3[3,4,5]' | 'CDP-DAG' | 'LysoPA' | 'LysoPC' | 'LysoPE' | 'LysoPG' | 'LysoPI' | 'LysoPS' | 'PE-NMe' | 'PE-NMe2' | 'CDP-DG';
163 |
164 | pl_three : pl_three_hg pl_three_fa | pl_three_hg headgroup_separator pl_three_fa;
165 | pl_three_fa : ROB fa_species RCB | ROB fa3 RCB;
166 | pl_three_hg : 'NAPE';
167 |
168 | pl_four : pl_four_hg pl_four_fa | pl_four_hg headgroup_separator pl_four_fa;
169 | pl_four_fa : ROB fa_species RCB | ROB fa2 RCB | ROB fa4 RCB;
170 | pl_four_hg : 'BMP' | 'LBPA' | 'Lysobisphosphatidate' | 'CL' | 'MLCL' | 'DLCL';
171 |
172 |
173 |
174 |
175 | /* sphingolipid rules */
176 | sl : sl_hg sl_lcb | sl_hg headgroup_separator sl_lcb;
177 | sl_hg : all_sl_hg_names | sl_hg_prefix all_sl_hg_names | all_sl_hg_names sl_hg_suffix | sl_hg_prefix all_sl_hg_names sl_hg_suffix;
178 | all_sl_hg_names : sl_hg_names | ganglioside;
179 | sl_hg_names : 'HexCer' | 'Hex2Cer' | 'SM' | 'PE-Cer' | 'Cer' | 'CerP' | 'IPC' | 'MIPC' | 'M(IP)2C' | 'Gb3Cer' | 'Gb4Cer' | 'Forssman' | 'MSGG' | 'DSGG' | 'NOR1' | 'NORint' | 'NOR2' | 'Globo-H' | 'Globo-A' | 'SB1a' | 'SM1b' | 'SM1a' | 'Branched-Forssman' | 'Globo-B' | 'Para-Forssman' | 'Globo-Lex-9' | 'LysoSM' | 'Glucosylceramide' | 'Ceramide' | 'Tetrahexosylceramide';
180 | ganglioside : 'Ganglioside' headgroup_separator ganglioside_names | ganglioside_names;
181 | ganglioside_names : 'Gb3' | 'GA2' | 'GA1' | 'GM3' | 'GM2' | 'GM1' | 'GD3' | 'GT3' | 'GD1' | 'GT1' | 'GQ1' | 'GM4' | 'GD2' | 'GT2' | 'GP1' | 'GD1a' | 'GM1b' | 'GT1b' | 'GQ1b' | 'GT1a' | 'GQ1c' | 'GP1c' | 'GD1c' | 'GD1b' | 'GT1c' | 'Ga1' | 'Ga2' | 'GB3' | 'Gb3' | 'GB4' | 'Gb4' | 'Gd1' | 'Gd2' | 'Gd3' | 'Gm1' | 'Gm2' | 'Gm3' | 'Gm4' | 'GP1' | 'Gp1' | 'Gq1' | 'Gt1' | 'Gt2' | 'Gt3';
182 |
183 | sl_hg_prefix : sl_hg_prefix '-' | sl_hg_prefix sl_hg_prefix | ROB sl_hg_prefix RCB | 'Glc' | 'NAc' | 'Gal' | 'Fuc' | 'SO3' | 'NeuGc' | 'i' | 'NeuAc' | 'Lac' | 'Lex' | '(3\'-sulfo)' | 'Ac-O-9' | '(alpha2-8)' | '(alpha2-6)' | 'NeuAc' | 'Sulfo';
184 | sl_hg_suffix : sl_hg_suffix sl_hg_suffix | sl_hg_suffix '/' | ROB sl_hg_suffix RCB | 'NeuAc' | 'NeuGc' | ' alpha';
185 |
186 | sl_lcb : sl_lcb_species | sl_lcb_subspecies;
187 | sl_lcb_species : ROB lcb RCB;
188 | sl_lcb_subspecies : ROB lcb sorted_fa_separator fa RCB;
189 |
190 |
191 |
192 |
193 | /* sterol rules */
194 | st : st_species | st_sub1 | st_sub2;
195 |
196 | st_species : st_species_hg st_species_fa | st_species_hg headgroup_separator st_species_fa;
197 | st_species_hg : 'SE';
198 | st_species_fa : ROB fa_species RCB;
199 |
200 | st_sub1 : st_sub1_hg st_sub1_fa | st_sub1_hg headgroup_separator st_sub1_fa;
201 | st_sub1_hg : 'CE';
202 | st_sub1_fa : ROB fa RCB;
203 |
204 | st_sub2 : st_sub2_hg st_sub2_fa | st_sub2_hg headgroup_separator st_sub2_fa;
205 | st_sub2_hg : 'SE';
206 | st_sub2_fa : ROB fa2 RCB;
207 |
208 |
209 | /* separators */
210 | SPACE : ' ';
211 | COLON : ':';
212 | SEMICOLON : ';';
213 | DASH : '-';
214 | UNDERSCORE : '_';
215 | SLASH : '/';
216 | BACKSLASH : '\\';
217 | COMMA: ',';
218 | ROB: '(';
219 | RCB: ')';
220 |
221 | unsorted_fa_separator : UNDERSCORE;
222 | sorted_fa_separator : SLASH;
223 | adduct_separator : SPACE;
224 | headgroup_separator : SPACE;
225 | carbon_db_separator : COLON;
226 | db_position_separator : COMMA;
227 | med_position_separator : COMMA;
228 | fa_lcb_suffix_separator : DASH;
229 | fa_lcb_prefix_separator : DASH;
230 |
231 | number : digit | digit number;
232 | digit : '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9';
233 |
234 | element: 'C' | 'H' | 'N' | 'O' | 'P' | 'S' | 'Br' | 'I' | 'F' | 'Cl' | 'As';
235 | charge : '1' | '2' | '3' | '4';
236 | charge_sign : plus_minus;
237 | plus_minus : '-' | '+';
238 |
--------------------------------------------------------------------------------