Goldie: Parse Tree Mode

Goldie
Parsing System (v0.9)
Goldie Home (v0.9)
Getting Started

- Requirements
- Download / Install
- Never Used a Parsing Tool?
- Goldie Overview
- Beginner's Tutorial
- Grammar Definition Language
- Contact / Support
  - Message Board
  - Issue Tracking

Goldie's Tools

- AlterCGT
- DumpCGT
- GenDocs
  - Template Format
- GRMC: Grammar Compiler
- JsonViewer
  - Parse Tree Mode
- Parse
- StaticLang
- Other Tools

GoldieLib Overview

- Static And Dynamic Styles
- Ambiguous Symbols

GoldieLib Reference

- Base
- Exception
- class Language
- class Lexer
- class Parser
- struct Symbol
- class Token
- Ver

GoldieLib Sample Apps

- Calculator Static
- Calculator Dynamic
- Sample Generic Parse

CGT File Format
FAQ
Change Log
If You Use Git Master
Future Work
Developers

- Scripts for Developers
- Library Source and StaticLang

Goldie Home (v0.9) -> Goldie's Tools -> JsonViewer -> Parse Tree Mode

# Parse Tree Mode

The version of JsonViewer included with Goldie has been customized to include a special Parse Tree Mode for viewing a text document side-by-side with a JSON-based tree that describes the text. In this mode, you can click on a tree node to highlight its corresponding text, or jump from a location in the text to the corresponding tree node.

This page describes the special data JsonViewer looks for to enable and use this mode.

## Sample

Goldie includes the sample JSON file jsonSample.json that demonstrates how to create a JSON file that JsonViewer's Parse Tree Mode can use. Here is the content of the file:

{ parseTreeMode: true, source: "Once upon a time...", "Story": { srcIndexStart: 0, srcLength: 19, "Sentence": { srcIndexStart: 0, srcLength: 16, "Word 1": { srcIndexStart: 0, srcLength: 4, }, "Word 2": { srcIndexStart: 5, srcLength: 4, }, "Word 3": { srcIndexStart: 10, srcLength: 1, }, "Word 4": { srcIndexStart: 12, srcLength: 4, } }, "Punctuation": { srcIndexStart: 16, srcLength: 3, } } }

If you load that file into JsonViewer, it will look like this:

As you can see, this JSON file describes a text file containing Once upon a time.... It also tells JsonViewer that Once upon a time is a "Story", ... is "Punctuation", and Once though time are "Word 1" through "Word 4". (Remember that JSON objects can't have multiple members with the same name.)

Click a tree node in the left panel to highlight the corresponding section of text. Click a location in the text and then click "Jump to Node" to select the corresponding node.

## Reference

All of the following are optional. However, if none of them are used, then Parse Tree Mode won't be particularly useful.

parseTreeMode

This can go in either the root JSON object (as in the example above), or the first JSON object immediately inside the root ("Story" in the example above).

Giving this a value of true instructs JsonViewer to automatically turn on Parse Tree Mode when loading the file.

source

This can go in either the root JSON object (as in the example above), or the first JSON object immediately inside the root ("Story" in the example above).

This contains the actual text that the JSON file describes. This text will be shown in the middle panel. Don't forget to properly escape any double-quotes.

file

Not recommended: Use source instead.

This can go in either the root JSON object, or the first JSON object immediately inside the root ("Story" in the example above).

If source is omitted, then file can be used to load the source text from a specific file. The value of this should be the filename containing the text that the JSON file describes.

This is NOT recommended, however, because the two files may become out-of-sync. It is recommended that you use source instead. (This can be safely included in addition to source though, because if source is included, JsonViewer will simply ignore file.)

srcIndexStart
srcLength

Any JSON object that includes both srcIndexStart and srcLength is considered to refer to a specific section of the text. This section of the text starts at srcIndexStart (zero-indexed) and extends for srcLength characters.