18 IS (((u|U)(l|L|ll|LL)?)|((l|L|ll|LL)(u|U)?))
21 ES (\\(['"\?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F0-9]+))
32 if not skip_comment():
35 "//".* # consume //-comment
37 "auto" return y_tab.AUTO
38 "break" return y_tab.BREAK
39 "case" return y_tab.CASE
40 "char" return y_tab.CHAR
41 "const" return y_tab.CONST
42 "continue" return y_tab.CONTINUE
43 "default" return y_tab.DEFAULT
45 "double" return y_tab.DOUBLE
46 "else" return y_tab.ELSE
47 "enum" return y_tab.ENUM
48 "extern" return y_tab.EXTERN
49 "float" return y_tab.FLOAT
50 "for" return y_tab.FOR
51 "goto" return y_tab.GOTO
53 "inline" return y_tab.INLINE
54 "int" return y_tab.INT
55 "long" return y_tab.LONG
56 "register" return y_tab.REGISTER
57 "restrict" return y_tab.RESTRICT
58 "return" return y_tab.RETURN
59 "short" return y_tab.SHORT
60 "signed" return y_tab.SIGNED
61 "sizeof" return y_tab.SIZEOF
62 "static" return y_tab.STATIC
63 "struct" return y_tab.STRUCT
64 "switch" return y_tab.SWITCH
65 "typedef" return y_tab.TYPEDEF
66 "union" return y_tab.UNION
67 "unsigned" return y_tab.UNSIGNED
68 "void" return y_tab.VOID
69 "volatile" return y_tab.VOLATILE
70 "while" return y_tab.WHILE
71 "_Alignas" return y_tab.ALIGNAS
72 "_Alignof" return y_tab.ALIGNOF
73 "_Atomic" return y_tab.ATOMIC
74 "_Bool" return y_tab.BOOL
75 "_Complex" return y_tab.COMPLEX
76 "_Generic" return y_tab.GENERIC
77 "_Imaginary" return y_tab.IMAGINARY
78 "_Noreturn" return y_tab.NORETURN
79 "_Static_assert" return y_tab.STATIC_ASSERT
80 "_Thread_local" return y_tab.THREAD_LOCAL
81 "__func__" return y_tab.FUNC_NAME
83 FILE|GRAM_STYPE|YYLTYPE|assoc|bool|boundary|code_props|code_props_type|location|muscle_kind|named_ref|param_type|scanflags_t|size_t|symbol|symbol_class|symbol_list|uniqstr|variant|warnings|u?int(8|16|32|64)_t|BaseType_t|TickType_t|AmazonGetFfsDeviceTypeIdProductId|AmazonStateFfsDeviceTypeIdProductId|AmazonGetFfsPin|AmazonStateFfsPin|AmazonGetFfsX509Csr|AmazonStateFfsX509Csr|AmazonSetFfsX509CertChainDownload|AmazonGetFfsX509CertChainStatus|AmazonFfsX509CertChainStorageStatus|AmazonStateFfsX509CertChainStatus|AmazonSetFfsStaticKey {
84 # THIS IS A HACK FOR NOW
85 return y_tab.TYPEDEF_NAME
88 /* hack for yacc/bison specification */
89 (?E{t_def.AST.Identifier}{L}{A}*) |
90 (?E{t_def.AST.Identifier}[$@]("$"|{D}+)) {
91 return y_tab.IDENTIFIER
94 (?E{t_def.AST.ExpressionIntLiteral}{HP}{H}+{IS}?) |
95 (?E{t_def.AST.ExpressionIntLiteral}{NZ}{D}*{IS}?) |
96 (?E{t_def.AST.ExpressionIntLiteral}"0"{O}*{IS}?) |
97 (?E{t_def.AST.ExpressionCharConstant}{CP}?"'"(?E{t_def.AST.Text}([^'\\\n]|{ES})+)"'") {
98 return y_tab.I_CONSTANT
101 (?E{t_def.AST.ExpressionFloatLiteral}{D}+{E}{FS}?) |
102 (?E{t_def.AST.ExpressionFloatLiteral}{D}*"."{D}+{E}?{FS}?) |
103 (?E{t_def.AST.ExpressionFloatLiteral}{D}+"."{E}?{FS}?) |
104 (?E{t_def.AST.ExpressionFloatLiteral}{HP}{H}+{P}{FS}?) |
105 (?E{t_def.AST.ExpressionFloatLiteral}{HP}{H}*"."{H}+{P}{FS}?) |
106 (?E{t_def.AST.ExpressionFloatLiteral}{HP}{H}+"."{P}{FS}?) {
107 return y_tab.F_CONSTANT
110 (?E{t_def.AST.ExpressionStringLiteral}({SP}?\"(?E{t_def.AST.Text}([^"\\\n]|{ES})*)\"{WS}*)+) {
111 return y_tab.STRING_LITERAL
114 "..." return y_tab.ELLIPSIS
115 ">>=" return y_tab.RIGHT_ASSIGN
116 "<<=" return y_tab.LEFT_ASSIGN
117 "+=" return y_tab.ADD_ASSIGN
118 "-=" return y_tab.SUB_ASSIGN
119 "*=" return y_tab.MUL_ASSIGN
120 "/=" return y_tab.DIV_ASSIGN
121 "%=" return y_tab.MOD_ASSIGN
122 "&=" return y_tab.AND_ASSIGN
123 "^=" return y_tab.XOR_ASSIGN
124 "|=" return y_tab.OR_ASSIGN
125 ">>" return y_tab.RIGHT_OP
126 "<<" return y_tab.LEFT_OP
127 "++" return y_tab.INC_OP
128 "--" return y_tab.DEC_OP
129 "->" return y_tab.PTR_OP
130 "&&" return y_tab.AND_OP
131 "||" return y_tab.OR_OP
132 "<=" return y_tab.LE_OP
133 ">=" return y_tab.GE_OP
134 "==" return y_tab.EQ_OP
135 "!=" return y_tab.NE_OP
137 ("{"|"<%") return ord('{')
138 ("}"|"%>") return ord('}')
144 ("["|"<:") return ord('[')
145 ("]"|":>") return ord(']')
161 {WS}+ # whitespace separates tokens
162 . # discard bad characters
167 def yywrap(): # called at end of input
168 return 1 # terminate now */
172 sys.stderr.write('*** {0:s}\n'.format(s))
186 yyerror('unterminated comment')