- Timestamp:
- May 22, 2019, 10:03:37 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/core/C_parser.tab.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 107 107 # b_asm = false 108 108 109 # euc ã®ã³ã¡ã³ãã utf8 ã¨ãã¦æ±ãã¨ãã³ã¡ã³ãã®çµããã誤ãåé¡ã®å¯¾ç109 # euc のコメントを utf8 として扱うと、コメントの終わりを誤る問題の対策 110 110 TECS_LANG::set_kcode_binary 111 111 112 # 800U, 0xffLL ãªã© (æ´æ°ãªãã©ã«ã«å 113 ±éã®ä¿®é£¾å) 112 # 800U, 0xffLL など (整数リテラルに共通の修飾子) 114 113 integer_qualifier = "([Uu][Ll][Ll]|[Uu][Ll]|[Uu]|[Ll][Ll]|[Ll])?" 115 114 … … 126 125 if comment 127 126 case line 128 # ã³ã¡ã³ãçµäº127 # コメント終了 129 128 when /\A\*\// 130 129 comment = false … … 134 133 else 135 134 case line 136 # 空ç½ãããªããã»ã¹ãã£ã¬ã¯ãã£ã135 # 空白、プリプロセスディレクティブ 137 136 when /\A\s+/ 138 137 ; 139 # èå¥å138 # 識別子 140 139 when /\A[a-zA-Z_]\w*/ 141 140 word = $& 142 141 @q << [RESERVED[word] || :IDENTIFIER, Token.new(word.intern, file, lineno, col)] 143 # 16 é²æ°å®æ°142 # 16 進数定数 144 143 when /\A0x[0-9A-Fa-f]+#{integer_qualifier}/ 145 144 @q << [:HEX_CONSTANT, Token.new($&, file, lineno, col)] 146 # 8 é²æ°å®æ°145 # 8 進数定数 147 146 when /\A0[0-7]+#{integer_qualifier}/ 148 147 @q << [:OCTAL_CONSTANT, Token.new($&, file, lineno, col)] 149 # æµ®åå°æ°å®æ°148 # 浮動小数定数 150 149 when /\A[0-9]+\.([0-9]*)?([Ee][+-]?[0-9]+)?/ 151 150 @q << [:FLOATING_CONSTANT, Token.new($&, file, lineno, col)] 152 # æ´æ°å®æ°151 # 整数定数 153 152 when /\A\d+#{integer_qualifier}/ 154 153 # when /\A\d+/ 155 154 @q << [:INTEGER_CONSTANT, Token.new($&.to_i, file, lineno, col)] 156 # æå155 # 文字 157 156 when /\A'(?:[^'\\]|\\.)'/ 158 157 @q << [:CHARACTER_LITERAL, Token.new($&, file, lineno, col)] 159 # æåå160 # "#include #include #include \"../systask/logtask.cfg\" æå¾ã® " å¿ã)ã§ç¡éã«ã¼ã158 # 文字列 159 # "#include #include #include \"../systask/logtask.cfg\" 最後の " 忘れ)で無限ループ 161 160 # when /\A"(?:[^"\\]+|\\.)*"/ 162 when /\A"(?:[^"\\]|\\.)*"/ # ããã¯ãã¾ãè¡ãããã161 when /\A"(?:[^"\\]|\\.)*"/ # これはうまく行くようだ 163 162 @q << [:STRING_LITERAL, Token.new($&, file, lineno, col)] 164 # è¡ã³ã¡ã³ã163 # 行コメント 165 164 when /\A\/\/.*$/ 166 # èªã¿é£ã°ãã ã167 # ã³ã¡ã³ãéå§165 # 読み飛ばすだけ 166 # コメント開始 168 167 when /\A\/\*/ 169 168 comment = true … … 196 195 } 197 196 198 # çµäºã®å°197 # 終了の印 199 198 @q << nil 200 199 … … 223 222 end 224 223 225 # TYPE_NAME ãã¼ã¯ã³ã¸ç½®ãæã224 # TYPE_NAME トークンへ置き換え 226 225 if @b_no_type_name == false 227 226 if token[0] == :IDENTIFIER && Namespace.is_typename?( token[1].val ) then … … 232 231 end 233 232 234 if $debug then # 070107 token ç¡å¹æãããéããªããããã (through å¯¾å¿ -d ã®æã«ä¾å¤çºç)233 if $debug then # 070107 token 無効時ここを通さないようした (through 対応 -d の時に例外発生) 235 234 locale = @@current_locale[@@generator_nest] 236 235 if token then … … 262 261 @@n_info = 0 263 262 264 # ãã®ã¡ã½ããã¯æ§æ解æãæå³è§£æããã®ã¿å¼åºãå¯ï¼ã³ã¼ãçæã§ã¨ã©ã¼çºçã¯ä¸é©åï¼263 # このメソッドは構文解析、意味解析からのみ呼出し可(コード生成でエラー発生は不適切) 265 264 def self.error( msg ) 266 265 @@n_error += 1 … … 274 273 end 275 274 276 # ãã®ã¡ã½ããã¯æ§æ解æãæå³è§£æããã®ã¿å¼åºãå¯ï¼ã³ã¼ãçæã§ã¦ã©ã¼ãã³ã°çºçã¯ä¸é©åï¼275 # このメソッドは構文解析、意味解析からのみ呼出し可(コード生成でウォーニング発生は不適切) 277 276 def self.warning( msg ) 278 277 @@n_warning += 1 … … 281 280 end 282 281 283 # ãã®ã¡ã½ããã¯æ§æ解æãæå³è§£æããã®ã¿å¼åºãå¯282 # このメソッドは構文解析、意味解析からのみ呼出し可 284 283 def self.info( msg ) 285 284 @@n_info += 1 … … 1796 1795 module_eval(<<'.,.,', 'C_parser.y.rb', 228) 1797 1796 def _reduce_83(val, _values, result) 1798 result = Expression.new( val[2] ) # ',' ã®å¾ããæ¡ç¨1797 result = Expression.new( val[2] ) # ',' の後ろを採用 1799 1798 1800 1799 result … … 1822 1821 module_eval(<<'.,.,', 'C_parser.y.rb', 261) 1823 1822 def _reduce_86(val, _values, result) 1824 result = CIntType.new( -3 ) # storage class ã¯ç¡è¦1823 result = CIntType.new( -3 ) # storage class は無視 1825 1824 1826 1825 result … … 1830 1829 module_eval(<<'.,.,', 'C_parser.y.rb', 265) 1831 1830 def _reduce_87(val, _values, result) 1832 result = val[1] # storage class ã¯ç¡è¦1831 result = val[1] # storage class は無視 1833 1832 1834 1833 result … … 2587 2586 def _reduce_268(val, _values, result) 2588 2587 while true 2589 # ';' ã表ããã¾ã§ããã¼ã¯ã³ãèªã¿é£ã°ãã 2590 # gcc ã®æ§ææ¡å¼µã«å¯¾å¿ãã¹ãã ããåç´ãªå®è£ 2591 ã¨ãã¦ã';' ã¾ã§èªã¿é£ã°ãã 2592 # ãã¼ã¯ã³åä½ã§èªã¿é£ã°ãã¦ããã®ã§ãæååãã³ã¡ã³ãå 2593 ã® ';' ã¯å¯¾è±¡ã«ãªããªãã 2588 # ';' が表れるまで、トークンを読み飛ばす。 2589 # gcc の構文拡張に対応すべきだが、単純な実装として、';' まで読み飛ばす。 2590 # トークン単位で読み飛ばしているので、文字列やコメント内の ';' は対象にならない。 2594 2591 token = next_token 2595 2592 if token[1].val == ";" -
Property svn:mime-type
changed from
Note:
See TracChangeset
for help on using the changeset viewer.