1// Copyright (c) 2017 Ernest Micklei 2// 3// MIT License 4// 5// Permission is hereby granted, free of charge, to any person obtaining 6// a copy of this software and associated documentation files (the 7// "Software"), to deal in the Software without restriction, including 8// without limitation the rights to use, copy, modify, merge, publish, 9// distribute, sublicense, and/or sell copies of the Software, and to 10// permit persons to whom the Software is furnished to do so, subject to 11// the following conditions: 12// 13// The above copyright notice and this permission notice shall be 14// included in all copies or substantial portions of the Software. 15// 16// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 20// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 21// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 22// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 24package proto 25 26import ( 27 "text/scanner" 28) 29 30// Syntax should have value "proto" 31type Syntax struct { 32 Position scanner.Position 33 Comment *Comment 34 Value string 35 InlineComment *Comment 36} 37 38func (s *Syntax) parse(p *Parser) error { 39 if _, tok, lit := p.next(); tok != tEQUALS { 40 return p.unexpected(lit, "syntax =", s) 41 } 42 _, _, lit := p.next() 43 if !isString(lit) { 44 return p.unexpected(lit, "syntax string constant", s) 45 } 46 s.Value = unQuote(lit) 47 return nil 48} 49 50// Accept dispatches the call to the visitor. 51func (s *Syntax) Accept(v Visitor) { 52 v.VisitSyntax(s) 53} 54 55// Doc is part of Documented 56func (s *Syntax) Doc() *Comment { 57 return s.Comment 58} 59 60// inlineComment is part of commentInliner. 61func (s *Syntax) inlineComment(c *Comment) { 62 s.InlineComment = c 63} 64