Documentation ¶
Index ¶
- Variables
- type ContainerChild
- type ContainerItem
- type FixedList
- type Lexer
- func (l *Lexer) DropPosition()
- func (l *Lexer) Errors() []error
- func (l *Lexer) Expect(tt TokenType, content string) error
- func (l *Lexer) Next() (Token, error)
- func (l *Lexer) PopPosition()
- func (l *Lexer) PushPosition()
- func (l *Lexer) ReadList(cb func() error) error
- func (l *Lexer) ReadMultilineText(end string) (string, error)
- func (l *Lexer) Report(e error)
- func (l *Lexer) ReportWarning(e error)
- func (l *Lexer) ScopeInfos() []ScopeInfo
- func (l *Lexer) Warnings() []error
- type ParseItem
- type ParserError
- type Scanner
- type ScopeInfo
- type Subsystem
- type SwitchItem
- type Token
- type TokenType
- type ValueList
Constants ¶
This section is empty.
Variables ¶
View Source
var BooleanValue = newGenericValueType(func(l *Lexer) (interface{}, error) { err := l.readWord() if err != nil { return nil, err } token, err := consumeValue(l) if err != nil { return nil, err } switch strings.ToLower(token.Content) { case "yes", "true", "ja", "oui", "si", "ita vero", "hija'", "hislah": return true, nil case "no", "false", "nein", "non", "minime", "ghobe'": return false, nil default: return nil, token.Errorf("Expected boolean but found %s", token.Content) } })
View Source
var ColorValue = newGenericValueType(func(l *Lexer) (interface{}, error) { err := l.readLine() if err != nil { return nil, err } token, err := consumeValue(l) if err != nil { return nil, err } parts := strings.Split(token.Content, " ") if len(parts) != 3 { return nil, token.Errorf("Expected vec3d but found %d parts", len(parts)) } a, err := strconv.Atoi(parts[0]) if err != nil { return nil, token.Errorf("Failed to parse int %s (%v)", parts[0], err) } b, err := strconv.Atoi(parts[1]) if err != nil { return nil, token.Errorf("Failed to parse int %s (%v)", parts[1], err) } c, err := strconv.Atoi(parts[2]) if err != nil { return nil, token.Errorf("Failed to parse int %s (%v)", parts[2], err) } if a > 255 || a < 0 || b > 255 || b < 0 || c > 255 || c < 0 { return nil, token.Errorf("One of these values is outside the valid range of 0-255: %d %d %d", a, b, c) } return []int{a, b, c}, nil })
View Source
var FlagValue = newGenericValueType(func(l *Lexer) (interface{}, error) { return true, nil })
View Source
var FloatValue = newGenericValueType(func(l *Lexer) (interface{}, error) { if err := l.skipWhitespace(); err != nil { return nil, err } if err := l.readNumber(); err != nil { return nil, err } token, err := consumeValue(l) if err != nil { return nil, err } value, err := strconv.ParseFloat(token.Content, 64) if err != nil { return nil, token.Errorf("Not a float: %s (%v)", token.Content, err) } return value, nil })
View Source
var IntegerValue = newGenericValueType(func(l *Lexer) (interface{}, error) { if err := l.skipWhitespace(); err != nil { return nil, err } if err := l.readNumber(); err != nil { return nil, err } token, err := consumeValue(l) if err != nil { return nil, err } value, err := strconv.Atoi(token.Content) if err != nil { return nil, token.Errorf("Not an integer: %s (%v)", token.Content, err) } return value, nil })
View Source
var MultilineStringValue = newGenericValueType(func(l *Lexer) (interface{}, error) { result, err := l.ReadMultilineText("$end_multi_text") if err != nil { return nil, err } return strings.Trim(result, " \n\t"), nil })
View Source
var StringFlag = newGenericValueType(func(lex *Lexer) (interface{}, error) { err := lex.readString() if err != nil { return nil, err } token, err := consumeValue(lex) if err != nil { return nil, err } result := strings.Trim(token.Content, " \n\t") return result, nil })
View Source
var StringValue = newGenericValueType(func(lex *Lexer) (interface{}, error) { err := lex.readLine() if err != nil { return nil, err } token, err := consumeValue(lex) if err != nil { return nil, err } result := strings.Trim(token.Content, " \n\t") return result, nil })
View Source
var SubsystemValue = newGenericValueType(func(l *Lexer) (interface{}, error) { data, err := l.readUntil(",\n") if err != nil { return nil, err } result := Subsystem{ Name: strings.Trim(data, " \t"), } found, err := l.optionalRune(',') if err != nil { return nil, err } if !found { return result, nil } l.PushPosition() token, err := l.Next() if err != nil { return nil, err } if token.Type != Number { l.PopPosition() return result, nil } l.DropPosition() result.HitPercent, err = strconv.ParseFloat(token.Content, 64) if err != nil { return nil, token.Errorf("Failed to parse hit percent %s (%s)", token.Content, err) } found, err = l.optionalRune(',') if err != nil { return nil, err } if !found { return result, nil } l.PushPosition() token, err = l.Next() if err != nil { return nil, err } if token.Type != Number { l.PopPosition() return result, nil } l.DropPosition() result.TurnRate, err = strconv.ParseFloat(token.Content, 64) if err != nil { return nil, token.Errorf("Failed to parse turn rate %s (%s)", token.Content, err) } return result, nil })
View Source
var Vec3dValue = newGenericValueType(func(l *Lexer) (interface{}, error) { result := []float64{0, 0, 0} for idx := range result { if err := l.skipWhitespace(); err != nil { return nil, err } if _, err := l.optionalRune(','); err != nil { return nil, err } err := l.readWord() if err != nil { return nil, err } token, err := l.Next() if err != nil { return nil, err } value, err := strconv.ParseFloat(token.Content, 64) if err != nil { return nil, token.Errorf("Failed to parse float %s (%v)", token.Content, err) } result[idx] = value } return result, nil })
View Source
var WeaponBankList = newGenericValueType(func(l *Lexer) (interface{}, error) { banks := make([][]string, 0, 2) for { if err := l.skipWhitespace(); err != nil { return nil, err } found, err := l.optionalRune('(') if err != nil { return nil, err } if !found { break } b := make([]string, 0) for { if err := l.skipWhitespace(); err != nil { return nil, err } found, err := l.optionalRune('"') if err != nil { return nil, err } if !found { break } value, err := l.readUntil("\"") if err != nil { return nil, err } b = append(b, value) if err = l.requireRune('"'); err != nil { return nil, err } } banks = append(banks, b) if err = l.requireRune(')'); err != nil { return nil, err } } return banks, nil })
Functions ¶
This section is empty.
Types ¶
type ContainerChild ¶
type ContainerItem ¶
type ContainerItem struct { Value ParseItem Name string DeprecatedMessage string Properties []ContainerChild Multi bool Required bool BooleanContainer bool }
func (ContainerItem) GetNames ¶
func (c ContainerItem) GetNames() []string
func (ContainerItem) Parse ¶
func (c ContainerItem) Parse(lex *Lexer) (interface{}, error)
type Lexer ¶
type Lexer struct {
// contains filtered or unexported fields
}
func (*Lexer) DropPosition ¶
func (l *Lexer) DropPosition()
func (*Lexer) PopPosition ¶
func (l *Lexer) PopPosition()
func (*Lexer) PushPosition ¶
func (l *Lexer) PushPosition()
func (*Lexer) ReportWarning ¶
func (*Lexer) ScopeInfos ¶
type ParserError ¶
type ParserError struct {
// contains filtered or unexported fields
}
func NewParserError ¶
func NewParserError(msg string, location [4]int) ParserError
func (ParserError) Error ¶
func (e ParserError) Error() string
func (ParserError) Location ¶
func (e ParserError) Location() [4]int
type SwitchItem ¶
type SwitchItem struct {
Items []ContainerChild
}
func (SwitchItem) GetNames ¶
func (i SwitchItem) GetNames() []string
func (*SwitchItem) Parse ¶
func (i *SwitchItem) Parse(lex *Lexer) (interface{}, error)
Click to show internal directories.
Click to hide internal directories.