Libraries.Data.Formats.JavaScriptObjectNotationLexer Documentation

This class is used by the JavaScriptObjectNotation object to read in JavaScriptObjectNotation (JSON) formatted data from text values or from disk. It can be used directly by an advanced user who wants to perform custom reading of token data from a file.

Example Code

use Libraries.Data.Formats.JavaScriptObjectNotation
use Libraries.Data.Formats.JavaScriptObjectNotationDefaultListener
use Libraries.Data.Formats.JavaScriptObjectNotationLexer
use Libraries.Data.Formats.JavaScriptObjectNotationParser

private action ReadToObject(text value) returns JavaScriptObjectNotation
    if value = undefined
        return undefined
    end
    JavaScriptObjectNotationDefaultListener listen
    JavaScriptObjectNotationLexer lex
    JavaScriptObjectNotationParser parse

    lex:SetListener(listen)
    parse:SetListener(listen)
    lex:Read(value)
    parse:Parse(lex)
    return listen:GetObject()
end

Inherits from: Libraries.Language.Object

Summary

Variable Summary Table

VariablesDescription
integer RIGHT_BRACE
integer NULL
integer NUMBER
integer COMMA
integer INTEGER
integer TRUE
integer LEFT_BRACE
integer RIGHT_BRACKET
integer COLON
integer LEFT_BRACKET
integer FALSE
integer STRING

Actions Summary Table

ActionsDescription
Compare(Libraries.Language.Object object)This action compares two object hash codes and returns an integer.
Empty()This method empties the list of tokens.
Equals(Libraries.Language.Object object)This action determines if two objects are equal based on their hash code values.
GetHashCode()This action gets the hash code for an object.
GetListener()This method is used to get the JavaScriptObjectNotationListener object used by the lexer.
GetSize()This method returns the number of tokens in the token stream.
GetToken(integer i)This method returns a token at a particular position in the lex.
IsEmpty()This method Returns whether or not there are tokens in the token stream
Read(text value)This method is used to read a text value and converts it into a token strea.
Read(Libraries.System.File file)This method is used to read a text file and converts it into a token strea.
SetListener(Libraries.Data.Formats.JavaScriptObjectNotationListener listener)This method is used to set the JavaScriptObjectNotationListener object used by the lexer.
ThrowError(integer line, integer column, integer index, text message)This method handles error message throwing if something goes wrong.

Actions Documentation

Compare(Libraries.Language.Object object)

This action compares two object hash codes and returns an integer. The result is larger if this hash code is larger than the object passed as a parameter, smaller, or equal. In this case, -1 means smaller, 0 means equal, and 1 means larger. This action was changed in Quorum 7 to return an integer, instead of a CompareResult object, because the previous implementation was causing efficiency issues.

Example Code

Object o
        Object t
        integer result = o:Compare(t) //1 (larger), 0 (equal), or -1 (smaller)

Parameters

Return

integer: The Compare result, Smaller, Equal, or Larger.

Empty()

This method empties the list of tokens.

Example Code

use Libraries.Data.Formats.JavaScriptObjectNotation
    use Libraries.Data.Formats.JavaScriptObjectNotationDefaultListener
    use Libraries.Data.Formats.JavaScriptObjectNotationLexer
    use Libraries.Data.Formats.JavaScriptObjectNotationToken

    private action EmptyTokens(text value)
        if value = undefined
            return undefined
        end
        JavaScriptObjectNotationDefaultListener listen
        JavaScriptObjectNotationLexer lex
        JavaScriptObjectNotationParser parse

        lex:SetListener(listen)
        parse:SetListener(listen)
        lex:Read(value)
        lex:Empty()

Equals(Libraries.Language.Object object)

This action determines if two objects are equal based on their hash code values.

Example Code

use Libraries.Language.Object
        use Libraries.Language.Types.Text
        Object o
        Text t
        boolean result = o:Equals(t)

Parameters

Return

boolean: True if the hash codes are equal and false if they are not equal.

GetHashCode()

This action gets the hash code for an object.

Example Code

Object o
        integer hash = o:GetHashCode()

Return

integer: The integer hash code of the object.

GetListener()

This method is used to get the JavaScriptObjectNotationListener object used by the lexer.

Example Code

use Libraries.Data.Formats.JavaScriptObjectNotationListener
    use Libraries.Data.Formats.JavaScriptObjectNotationLexer

    action GetParserListener(JavaScriptObjectNotationLexer lex) returns JavaScriptObjectNotationListener
        return lex:GetListener()
    end

Return

Libraries.Data.Formats.JavaScriptObjectNotationListener: The JavaScriptObjectNotationListener.

GetSize()

This method returns the number of tokens in the token stream.

Example Code

use Libraries.Data.Formats.JavaScriptObjectNotation
    use Libraries.Data.Formats.JavaScriptObjectNotationDefaultListener
    use Libraries.Data.Formats.JavaScriptObjectNotationLexer
    use Libraries.Data.Formats.JavaScriptObjectNotationToken

    private action GetNumberOfTokens(text value) returns integer
        if value = undefined
            return undefined
        end
        JavaScriptObjectNotationDefaultListener listen
        JavaScriptObjectNotationLexer lex
        JavaScriptObjectNotationParser parse

        lex:SetListener(listen)
        parse:SetListener(listen)
        lex:Read(value)
        return lex:GetSize()

Return

integer: The number of tokens in the stream.

GetToken(integer i)

This method returns a token at a particular position in the lex.

Example Code

use Libraries.Data.Formats.JavaScriptObjectNotation
    use Libraries.Data.Formats.JavaScriptObjectNotationDefaultListener
    use Libraries.Data.Formats.JavaScriptObjectNotationLexer
    use Libraries.Data.Formats.JavaScriptObjectNotationToken

    JavaScriptObjectNotationDefaultListener listener

    action Start
        listener:EnterStart()
        currentToken = 0
        JavaScriptObjectNotationToken token = lexer:GetToken(currentToken)
        if token:tokenID = lexer:LEFT_BRACKET
            ParseObject()
        else 
            ThrowError(token, undefined, "I can only begin reading files that start with a left bracket")
        end
        listener:ExitStart()
    end

Parameters

Return

Libraries.Data.Formats.JavaScriptObjectNotationToken: The JavaScriptObjectNotationToken.

IsEmpty()

This method Returns whether or not there are tokens in the token stream

Example Code

use Libraries.Data.Formats.JavaScriptObjectNotation
    use Libraries.Data.Formats.JavaScriptObjectNotationDefaultListener
    use Libraries.Data.Formats.JavaScriptObjectNotationLexer
    use Libraries.Data.Formats.JavaScriptObjectNotationToken

    private action ReadToObject(text value)
        if value = undefined
            return undefined
        end
        JavaScriptObjectNotationDefaultListener listen
        JavaScriptObjectNotationLexer lex
        JavaScriptObjectNotationParser parse

        lex:SetListener(listen)
        parse:SetListener(listen)
        lex:Read(value)
        if lex:IsEmpty()
            output "No tokens"
        else
            parse:Parse(lex)
        end
    end

Return

boolean: A boolean value to indicate if the stream is empty.

Read(text value)

This method is used to read a text value and converts it into a token strea.

Example Code

use Libraries.Data.Formats.JavaScriptObjectNotation
    use Libraries.Data.Formats.JavaScriptObjectNotationDefaultListener
    use Libraries.Data.Formats.JavaScriptObjectNotationLexer
    use Libraries.Data.Formats.JavaScriptObjectNotationParser

    private action ReadToObject(text value) returns JavaScriptObjectNotation
        if value = undefined
            return undefined
        end
        JavaScriptObjectNotationDefaultListener listen
        JavaScriptObjectNotationLexer lex
        JavaScriptObjectNotationParser parse

        lex:SetListener(listen)
        parse:SetListener(listen)
        lex:Read(value)
        parse:Parse(lex)
        return listen:GetObject()
    end

Parameters

Read(Libraries.System.File file)

This method is used to read a text file and converts it into a token strea.

Example Code

use Libraries.Data.Formats.JavaScriptObjectNotation
    use Libraries.Data.Formats.JavaScriptObjectNotationDefaultListener
    use Libraries.Data.Formats.JavaScriptObjectNotationLexer
    use Libraries.Data.Formats.JavaScriptObjectNotationParser

    private action ReadToObject(File file) returns JavaScriptObjectNotation
        JavaScriptObjectNotationDefaultListener listen
        JavaScriptObjectNotationLexer lex
        JavaScriptObjectNotationParser parse

        lex:SetListener(listen)
        parse:SetListener(listen)
        lex:Read(file)
        parse:Parse(lex)
        return listen:GetObject()
    end

Parameters

SetListener(Libraries.Data.Formats.JavaScriptObjectNotationListener listener)

This method is used to set the JavaScriptObjectNotationListener object used by the lexer.

Example Code

use Libraries.Data.Formats.JavaScriptObjectNotation
    use Libraries.Data.Formats.JavaScriptObjectNotationDefaultListener
    use Libraries.Data.Formats.JavaScriptObjectNotationLexer
    use Libraries.Data.Formats.JavaScriptObjectNotationParser

    private action ReadToObject(text value) returns JavaScriptObjectNotation
        if value = undefined
            return undefined
        end
        JavaScriptObjectNotationDefaultListener listen
        JavaScriptObjectNotationLexer lex
        JavaScriptObjectNotationParser parse

        lex:SetListener(listen)
        parse:SetListener(listen)
        lex:Read(value)
        parse:Parse(lex)
        return listen:GetObject()
    end

Parameters

ThrowError(integer line, integer column, integer index, text message)

This method handles error message throwing if something goes wrong.

Example Code

use Libraries.Data.Formats.JavaScriptObjectNotation
    use Libraries.Data.Formats.JavaScriptObjectNotationDefaultListener
    use Libraries.Data.Formats.JavaScriptObjectNotationLexer
    use Libraries.Data.Formats.JavaScriptObjectNotationParser

    JavaScriptObjectNotationDefaultListener listen

    private action Start
        listener:EnterStart()
        currentToken = 0
        JavaScriptObjectNotationToken token = lexer:GetToken(currentToken)
        if token:tokenID = lexer:LEFT_BRACKET
            ParseObject()
        elseif token:tokenID = lexer:LEFT_BRACE
            ParseArray()
        else 
            ThrowError(token, undefined, "I can only begin reading files that start with a left bracket ({) or a left brace {[), but I found a, " + token:value)
        end
        listener:ExitStart()
    end

Parameters