Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(126)

Side by Side Diff: mojom/mojom_parser/parser/parsing.go

Issue 1584643002: Mojom parser: More tweaks to comments defining the grammar. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 package parser 1 package parser
2 2
3 import ( 3 import (
4 "fmt" 4 "fmt"
5 "math" 5 "math"
6 "mojom/mojom_parser/lexer" 6 "mojom/mojom_parser/lexer"
7 "mojom/mojom_parser/mojom" 7 "mojom/mojom_parser/mojom"
8 "strconv" 8 "strconv"
9 ) 9 )
10 10
(...skipping 28 matching lines...) Expand all
39 // MOJOM_FILE -> IMPORT_STMNT {IMPORT_STMNT} {ATTR_MOJOM_DECL} 39 // MOJOM_FILE -> IMPORT_STMNT {IMPORT_STMNT} {ATTR_MOJOM_DECL}
40 // MOJOM_FILE -> MOJOM_DECL {ATTR_MOJOM_DECL} 40 // MOJOM_FILE -> MOJOM_DECL {ATTR_MOJOM_DECL}
41 41
42 // MODULE_DECL -> module IDENTIFIER semi 42 // MODULE_DECL -> module IDENTIFIER semi
43 // IMPORT_STMNT -> import string_literal 43 // IMPORT_STMNT -> import string_literal
44 44
45 // ATTR_MOJOM_DECL -> [ATTRIBUTES] MOJOM_DECL 45 // ATTR_MOJOM_DECL -> [ATTRIBUTES] MOJOM_DECL
46 // MOJOM_DECL -> INTRFC_DECL | STRUCT_DECL | UNION_DECL | ENUM_DECL | CONSTANT_DECL 46 // MOJOM_DECL -> INTRFC_DECL | STRUCT_DECL | UNION_DECL | ENUM_DECL | CONSTANT_DECL
47 47
48 // ATTRIBUTES -> lbracket ATTR_ASSIGNMENT { comma, ATTR_ASSIGNMENT} 48 // ATTRIBUTES -> lbracket ATTR_ASSIGNMENT { comma, ATTR_ASSIGNMENT}
49 // ATTR_ASSIGNMENT -> name equals name | name equals literal 49 // ATTR_ASSIGNMENT -> name equals name | name equals LITERAL_VALUE
50 50
51 // INTRFC_DECL -> interface name lbrace INTRFC_BODY rbrace semi 51 // INTRFC_DECL -> interface name lbrace INTRFC_BODY rbrace semi
52 // INTRFC_BODY -> {ATTR_INTRFC_ELEMENT} 52 // INTRFC_BODY -> {ATTR_INTRFC_ELEMENT}
53 // ATTR_INTRFC_ELEMENT -> [ATTRIBUTES] INTRFC_ELEMENT 53 // ATTR_INTRFC_ELEMENT -> [ATTRIBUTES] INTRFC_ELEMENT
54 // INTRFC_ELEMENT -> METHOD_DECL | ENUM_DECL | CONSTANT_DECL 54 // INTRFC_ELEMENT -> METHOD_DECL | ENUM_DECL | CONSTANT_DECL
55 55
56 // METHOD_DECL -> name [ordinal] lparen [PARAM_LIST] rparen [response l paren [PARAM_LIST] rparen] semi 56 // METHOD_DECL -> name [ordinal] lparen [PARAM_LIST] rparen [response l paren [PARAM_LIST] rparen] semi
57 // PARAM_LIST -> PARAM_DECL {, PARAM_DECL} 57 // PARAM_LIST -> PARAM_DECL {comma, PARAM_DECL}
58 // PARAM_DECL -> [ATTRIBUTES] TYPE NAME [ordinal] 58 // PARAM_DECL -> [ATTRIBUTES] TYPE NAME [ordinal]
59 59
60 // STRUCT_DECL -> struct name lbrace STRUCT_BODY rbrace semi 60 // STRUCT_DECL -> struct name lbrace STRUCT_BODY rbrace semi
61 // STRUCT_BODY -> {ATTR_STRUCT_ELEMENT} 61 // STRUCT_BODY -> {ATTR_STRUCT_ELEMENT}
62 // ATTR_STRUCT_ELEMENT -> [ATTRIBUTES] STRUCT_ELEMENT 62 // ATTR_STRUCT_ELEMENT -> [ATTRIBUTES] STRUCT_ELEMENT
63 // STRUCT_ELEMENT -> STRUCT_FIELD | ENUM_DECL | CONSTANT_DECL 63 // STRUCT_ELEMENT -> STRUCT_FIELD | ENUM_DECL | CONSTANT_DECL
64 // STRUCT_FIELD -> TYPE name [ordinal] [equals DEFAULT_VALUE] semi 64 // STRUCT_FIELD -> TYPE name [ordinal] [equals DEFAULT_VALUE] semi
65 // DEFAULT_VALUE -> COMPATIBLE_VALUE_REF | default 65 // DEFAULT_VALUE -> COMPATIBLE_VALUE_REF | default
66 // COMPATIBLE_VALUE_REF -> VALUE_REF {{that resolves to a value whose type is as signment compatible to the type of the assignee}} 66 // COMPATIBLE_VALUE_REF -> VALUE_REF {{that resolves to a concrete value whose t ype is assignment compatible with the type of the assignee}}
67 67
68 // UNION_DECL -> union name lbrace UNION_BODY rbrace semi 68 // UNION_DECL -> union name lbrace UNION_BODY rbrace semi
69 // UNION_BODY -> {UNION_FIELD_DECL} 69 // UNION_BODY -> {UNION_FIELD_DECL}
70 // UNION_FIELD_DECL -> [ATTRIBUTES] TYPE name [ordinal] semi 70 // UNION_FIELD_DECL -> [ATTRIBUTES] TYPE name [ordinal] semi
71 71
72 // ENUM_DECL -> enum name lbrace ENUM_BODY rbrace semi 72 // ENUM_DECL -> enum name lbrace ENUM_BODY rbrace semi
73 // ENUM_BODY -> [ ENUN_VALUE {, ENUM_VALUE} [,] ] 73 // ENUM_BODY -> [ ENUN_VALUE {, ENUM_VALUE} [,] ]
74 // ENUM_VALUE -> [ATTRIBUTES] name [equals ENUM_VAL_INITIALIZER] 74 // ENUM_VALUE -> [ATTRIBUTES] name [equals ENUM_VAL_INITIALIZER]
75 // ENUM_VAL_INITIALIZER -> INT32_VAL | APPROPRIATE_ENUM_VALUE_REF 75 // ENUM_VAL_INITIALIZER -> INT32_VAL | APPROPRIATE_ENUM_VALUE_REF
76 // INT32_VAL -> VALUE_REF {{that resolves to a value of integer type that may be assigned to an int32.}} 76 // INT32_VAL -> VALUE_REF {{that resolves to a concrete value of inte ger type that may be assigned to an int32.}}
77 // APPROPRIATE_ENUM_VALUE_REF 77 // APPROPRIATE_ENUM_VALUE_REF
78 // -> USER_VALUE_REF {{that resolves to an enum value of th e same enum type as the initializee 78 // -> USER_VALUE_REF {{that resolves to an enum value of th e same enum type as the initializee
79 // and which occurs earlier in declarat ion order than the initializee.}} 79 // and which occurs earlier in declarat ion order than the initializee.}}
80 80
81 // CONSTANT_DECL -> const CONST_OK_TYPE name equals COMPATIBLE_VALUE_REF semi 81 // CONSTANT_DECL -> const CONST_OK_TYPE name equals COMPATIBLE_VALUE_REF semi
82 // CONST_OK_TYPE -> SIMPLE_TYPE | string | ENUM_TYPE {{See https://github .com/domokit/mojo/issues/607}} 82 // CONST_OK_TYPE -> SIMPLE_TYPE | string | ENUM_TYPE {{See https://github .com/domokit/mojo/issues/607}}
83 83
84 // VALUE_REF -> USER_VALUE_REF | LITERAL_VALUE | BUILT_IN_FLOAT_CONST 84 // VALUE_REF -> USER_VALUE_REF | LITERAL_VALUE | BUILT_IN_FLOAT_CONST
85 // USER_VALUE_REF -> IDENTIFIER {{that resolves to a user-declared constan t or enum value}} 85 // USER_VALUE_REF -> IDENTIFIER {{that resolves to a user-defined constant or enum value}}
86 // BUILT_IN_FLOAT_CONST -> IDENTIFIER {{that does not resolve to a user-declared constant or enum value 86 // BUILT_IN_FLOAT_CONST -> IDENTIFIER {{that does not resolve to a user-defined constant or enum value
87 // and that is equal to one of the following strings: 87 // and that is equal to one of the following strings:
88 // "float.INFINITY", "float.NEGATIVE_INFINITY", "float.N AN", 88 // "float.INFINITY", "float.NEGATIVE_INFINITY", "float.N AN",
89 // "double.INFINITY", "double.NEGATIVE_INFINITY","double .NAN"} 89 // "double.INFINITY", "double.NEGATIVE_INFINITY","double .NAN"}
90 // LITERAL_VALUE -> BOOL_LITERAL | string_literal | NUMBER_LITERAL 90 // LITERAL_VALUE -> BOOL_LITERAL | string_literal | NUMBER_LITERAL
91 // BOOL_LITERAL -> true | false 91 // BOOL_LITERAL -> true | false
92 // NUMBER_LITERAL -> [plus | minus] POS_NUM_LITERAL 92 // NUMBER_LITERAL -> [plus | minus] POS_NUM_LITERAL
93 // INTEGER_LITERAL -> [plus | minus] POS_INT_LITERAL 93 // INTEGER_LITERAL -> [plus | minus] POS_INT_LITERAL
94 // POS_NUM_LITERAL -> POS_INT_LITERAL | POS_FLOAT_LITERAL 94 // POS_NUM_LITERAL -> POS_INT_LITERAL | POS_FLOAT_LITERAL
95 // POS_INT_LITERAL -> int_const_dec | int_const_hex 95 // POS_INT_LITERAL -> int_const_dec | int_const_hex
96 // POS_FLOAT_LITERAL -> float_const 96 // POS_FLOAT_LITERAL -> float_const
(...skipping 1624 matching lines...) Expand 10 before | Expand all | Expand 10 after
1721 func (p *Parser) unexpectedTokenError(token lexer.Token, expected string) { 1721 func (p *Parser) unexpectedTokenError(token lexer.Token, expected string) {
1722 var message string 1722 var message string
1723 switch token.Kind { 1723 switch token.Kind {
1724 case lexer.ErrorUnterminatedStringLiteral, lexer.ErrorUnterminatedCommen t: 1724 case lexer.ErrorUnterminatedStringLiteral, lexer.ErrorUnterminatedCommen t:
1725 message = fmt.Sprintf("%s", token) 1725 message = fmt.Sprintf("%s", token)
1726 default: 1726 default:
1727 message = fmt.Sprintf("Unexpected %s. Expecting %s.", token, exp ected) 1727 message = fmt.Sprintf("Unexpected %s. Expecting %s.", token, exp ected)
1728 } 1728 }
1729 p.parseErrorT(ParserErrorCodeUnexpectedToken, message, token) 1729 p.parseErrorT(ParserErrorCodeUnexpectedToken, message, token)
1730 } 1730 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698