aboutsummaryrefslogtreecommitdiff
path: root/spec/grammar.go
blob: 44ef3ee3320370b99a55cbe9446d40b01406524e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package spec

import mlspec "github.com/nihei9/maleeni/spec"

type CompiledGrammar struct {
	LexicalSpecification *LexicalSpecification `json:"lexical_specification"`
	ParsingTable         *ParsingTable         `json:"parsing_table"`
}

type LexicalSpecification struct {
	Lexer   string   `json:"lexer"`
	Maleeni *Maleeni `json:"maleeni"`
}

type Maleeni struct {
	Spec           *mlspec.CompiledLexSpec `json:"spec"`
	KindToTerminal [][]int                 `json:"kind_to_terminal"`
	Skip           [][]int                 `json:"skip"`
}

type ParsingTable struct {
	Action                  []int    `json:"action"`
	GoTo                    []int    `json:"goto"`
	StateCount              int      `json:"state_count"`
	InitialState            int      `json:"initial_state"`
	StartProduction         int      `json:"start_production"`
	LHSSymbols              []int    `json:"lhs_symbols"`
	AlternativeSymbolCounts []int    `json:"alternative_symbol_counts"`
	Terminals               []string `json:"terminals"`
	TerminalCount           int      `json:"terminal_count"`
	NonTerminals            []string `json:"non_terminals"`
	NonTerminalCount        int      `json:"non_terminal_count"`
	EOFSymbol               int      `json:"eof_symbol"`
}