From 52379a9e26578eb1105e73839db8157e24ba2d4c Mon Sep 17 00:00:00 2001 From: Ryo Nihei Date: Sat, 19 Jun 2021 00:38:27 +0900 Subject: Add driver --- spec/grammar.go | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 spec/grammar.go (limited to 'spec/grammar.go') diff --git a/spec/grammar.go b/spec/grammar.go new file mode 100644 index 0000000..653b50d --- /dev/null +++ b/spec/grammar.go @@ -0,0 +1,33 @@ +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"` +} + +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"` +} -- cgit v1.2.3