Class: AdLint::Cc1::SyntaxTreeVisitor
- Inherits:
-
Object
- Object
- AdLint::Cc1::SyntaxTreeVisitor
show all
- Defined in:
- lib/adlint/cc1/syntax.rb
Direct Known Subclasses
AdditiveExpressionCollector, ArrayDeclaratorCollector, CompoundAssignmentExpressionCollector, ConditionalExpressionExtractor, ConstantSpecifierCollector, EqualityExpressionCollector, ExpressionConstancy, ExpressionExtractor, FunctionDeclaratorCollector, GenericLabeledStatementCollector, GotoStatementCollector, IdentifierDeclaratorCollector, IfElseStatementCollector, IfStatementCollector, LogicalAndExpressionCollector, LogicalOrExpressionCollector, ObjectSpecifierCollector, PostfixDecrementExpressionCollector, PostfixIncrementExpressionCollector, PrefixDecrementExpressionCollector, PrefixIncrementExpressionCollector, RelationalExpressionCollector, SimpleAssignmentExpressionCollector, SubInterpreter, SyntaxTreeMulticastVisitor, TypeResolver, TypedefTypeSpecifierCollector, ValueDomainManipulator
Instance Method Summary
collapse
Instance Method Details
#visit_abbreviated_function_declarator(node) ⇒ Object
4800
4801
4802
|
# File 'lib/adlint/cc1/syntax.rb', line 4800
def visit_abbreviated_function_declarator(node)
node.base.accept(self)
end
|
#visit_additive_expression(node) ⇒ Object
4627
4628
4629
4630
|
# File 'lib/adlint/cc1/syntax.rb', line 4627
def visit_additive_expression(node)
node.lhs_operand.accept(self)
node.rhs_operand.accept(self)
end
|
#visit_address_expression(node) ⇒ Object
4589
4590
4591
|
# File 'lib/adlint/cc1/syntax.rb', line 4589
def visit_address_expression(node)
node.operand.accept(self)
end
|
#visit_alignof_expression(node) ⇒ Object
4609
4610
4611
|
# File 'lib/adlint/cc1/syntax.rb', line 4609
def visit_alignof_expression(node)
node.operand.accept(self)
end
|
#visit_alignof_type_expression(node) ⇒ Object
4613
4614
4615
|
# File 'lib/adlint/cc1/syntax.rb', line 4613
def visit_alignof_type_expression(node)
node.operand.accept(self)
end
|
#visit_and_expression(node) ⇒ Object
4647
4648
4649
4650
|
# File 'lib/adlint/cc1/syntax.rb', line 4647
def visit_and_expression(node)
node.lhs_operand.accept(self)
node.rhs_operand.accept(self)
end
|
#visit_ansi_function_declarator(node) ⇒ Object
4791
4792
4793
4794
|
# File 'lib/adlint/cc1/syntax.rb', line 4791
def visit_ansi_function_declarator(node)
node.base.accept(self)
node.parameter_type_list.accept(self)
end
|
#visit_ansi_function_definition(node) ⇒ Object
4902
4903
4904
4905
4906
4907
4908
|
# File 'lib/adlint/cc1/syntax.rb', line 4902
def visit_ansi_function_definition(node)
node.declaration_specifiers.accept(self) if node.declaration_specifiers
node.declarator.accept(self)
node.parameter_definitions.each { |param_def| param_def.accept(self) }
node.function_body.accept(self)
node.type_declaration.accept(self) if node.type_declaration
end
|
#visit_array_abstract_declarator(node) ⇒ Object
4927
4928
4929
4930
|
# File 'lib/adlint/cc1/syntax.rb', line 4927
def visit_array_abstract_declarator(node)
node.base.accept(self) if node.base
node.size_expression.accept(self) if node.size_expression
end
|
#visit_array_declarator(node) ⇒ Object
4786
4787
4788
4789
|
# File 'lib/adlint/cc1/syntax.rb', line 4786
def visit_array_declarator(node)
node.base.accept(self)
node.size_expression.accept(self) if node.size_expression
end
|
#visit_array_subscript_expression(node) ⇒ Object
4542
4543
4544
4545
|
# File 'lib/adlint/cc1/syntax.rb', line 4542
def visit_array_subscript_expression(node)
node.expression.accept(self)
node.array_subscript.accept(self)
end
|
#visit_bit_access_by_pointer_expression(node) ⇒ Object
4564
4565
4566
|
# File 'lib/adlint/cc1/syntax.rb', line 4564
def visit_bit_access_by_pointer_expression(node)
node.expression.accept(self)
end
|
#visit_bit_access_by_value_expression(node) ⇒ Object
4560
4561
4562
|
# File 'lib/adlint/cc1/syntax.rb', line 4560
def visit_bit_access_by_value_expression(node)
node.expression.accept(self)
end
|
#visit_break_statement(node) ⇒ Object
4883
4884
|
# File 'lib/adlint/cc1/syntax.rb', line 4883
def visit_break_statement(node)
end
|
#visit_c99_for_statement(node) ⇒ Object
4870
4871
4872
4873
4874
4875
|
# File 'lib/adlint/cc1/syntax.rb', line 4870
def visit_c99_for_statement(node)
node.declaration.accept(self)
node.condition_statement.accept(self)
node.expression.accept(self) if node.expression
node.body_statement.accept(self)
end
|
#visit_case_labeled_statement(node) ⇒ Object
4820
4821
4822
4823
|
# File 'lib/adlint/cc1/syntax.rb', line 4820
def visit_case_labeled_statement(node)
node.expression.accept(self)
node.statement.accept(self)
end
|
#visit_cast_expression(node) ⇒ Object
4617
4618
4619
4620
|
# File 'lib/adlint/cc1/syntax.rb', line 4617
def visit_cast_expression(node)
node.type_name.accept(self)
node.operand.accept(self)
end
|
#visit_comma_separated_expression(node) ⇒ Object
4688
4689
4690
|
# File 'lib/adlint/cc1/syntax.rb', line 4688
def visit_comma_separated_expression(node)
node.expressions.each { |expr| expr.accept(self) }
end
|
#visit_compound_assignment_expression(node) ⇒ Object
4683
4684
4685
4686
|
# File 'lib/adlint/cc1/syntax.rb', line 4683
def visit_compound_assignment_expression(node)
node.lhs_operand.accept(self)
node.rhs_operand.accept(self)
end
|
#visit_compound_literal_expression(node) ⇒ Object
4576
4577
4578
4579
|
# File 'lib/adlint/cc1/syntax.rb', line 4576
def visit_compound_literal_expression(node)
node.type_name.accept(self) if node.type_name
node.initializers.each { |init| init.accept(self) }
end
|
#visit_compound_statement(node) ⇒ Object
4829
4830
4831
|
# File 'lib/adlint/cc1/syntax.rb', line 4829
def visit_compound_statement(node)
node.block_items.each { |item| item.accept(self) }
end
|
#visit_conditional_expression(node) ⇒ Object
4672
4673
4674
4675
4676
|
# File 'lib/adlint/cc1/syntax.rb', line 4672
def visit_conditional_expression(node)
node.condition.accept(self)
node.then_expression.accept(self)
node.else_expression.accept(self)
end
|
#visit_constant_specifier(node) ⇒ Object
4529
4530
|
# File 'lib/adlint/cc1/syntax.rb', line 4529
def visit_constant_specifier(node)
end
|
#visit_continue_statement(node) ⇒ Object
4880
4881
|
# File 'lib/adlint/cc1/syntax.rb', line 4880
def visit_continue_statement(node)
end
|
#visit_declaration(node) ⇒ Object
4692
4693
4694
4695
4696
|
# File 'lib/adlint/cc1/syntax.rb', line 4692
def visit_declaration(node)
node.declaration_specifiers.accept(self) if node.declaration_specifiers
node.init_declarators.each { |dcr| dcr.accept(self) }
node.items.each { |item| item.accept(self) }
end
|
#visit_declaration_specifiers(node) ⇒ Object
4719
4720
4721
|
# File 'lib/adlint/cc1/syntax.rb', line 4719
def visit_declaration_specifiers(node)
node.type_specifiers.each { |type_spec| type_spec.accept(self) }
end
|
#visit_default_labeled_statement(node) ⇒ Object
4825
4826
4827
|
# File 'lib/adlint/cc1/syntax.rb', line 4825
def visit_default_labeled_statement(node)
node.statement.accept(self)
end
|
#visit_do_statement(node) ⇒ Object
4858
4859
4860
4861
|
# File 'lib/adlint/cc1/syntax.rb', line 4858
def visit_do_statement(node)
node.statement.accept(self)
node.expression.accept(self)
end
|
#visit_enum_specifier(node) ⇒ Object
4764
4765
4766
4767
4768
|
# File 'lib/adlint/cc1/syntax.rb', line 4764
def visit_enum_specifier(node)
if node.enumerators
node.enumerators.each { |enum| enum.accept(self) }
end
end
|
#visit_enum_type_declaration(node) ⇒ Object
4716
4717
|
# File 'lib/adlint/cc1/syntax.rb', line 4716
def visit_enum_type_declaration(node)
end
|
#visit_enumerator(node) ⇒ Object
4770
4771
4772
|
# File 'lib/adlint/cc1/syntax.rb', line 4770
def visit_enumerator(node)
node.expression.accept(self) if node.expression
end
|
#visit_equality_expression(node) ⇒ Object
4642
4643
4644
4645
|
# File 'lib/adlint/cc1/syntax.rb', line 4642
def visit_equality_expression(node)
node.lhs_operand.accept(self)
node.rhs_operand.accept(self)
end
|
#visit_error_expression(node) ⇒ Object
4523
4524
|
# File 'lib/adlint/cc1/syntax.rb', line 4523
def visit_error_expression(node)
end
|
#visit_error_statement(node) ⇒ Object
4813
4814
|
# File 'lib/adlint/cc1/syntax.rb', line 4813
def visit_error_statement(node)
end
|
#visit_exclusive_or_expression(node) ⇒ Object
4652
4653
4654
4655
|
# File 'lib/adlint/cc1/syntax.rb', line 4652
def visit_exclusive_or_expression(node)
node.lhs_operand.accept(self)
node.rhs_operand.accept(self)
end
|
#visit_expression_statement(node) ⇒ Object
4833
4834
4835
|
# File 'lib/adlint/cc1/syntax.rb', line 4833
def visit_expression_statement(node)
node.expression.accept(self) if node.expression
end
|
#visit_for_statement(node) ⇒ Object
4863
4864
4865
4866
4867
4868
|
# File 'lib/adlint/cc1/syntax.rb', line 4863
def visit_for_statement(node)
node.initial_statement.accept(self)
node.condition_statement.accept(self)
node.expression.accept(self) if node.expression
node.body_statement.accept(self)
end
|
#visit_function_abstract_declarator(node) ⇒ Object
4932
4933
4934
4935
|
# File 'lib/adlint/cc1/syntax.rb', line 4932
def visit_function_abstract_declarator(node)
node.base.accept(self) if node.base
node.parameter_type_list.accept(self) if node.parameter_type_list
end
|
#visit_function_call_expression(node) ⇒ Object
4547
4548
4549
4550
|
# File 'lib/adlint/cc1/syntax.rb', line 4547
def visit_function_call_expression(node)
node.expression.accept(self)
node.argument_expressions.each { |expr| expr.accept(self) }
end
|
#visit_function_declaration(node) ⇒ Object
4698
4699
|
# File 'lib/adlint/cc1/syntax.rb', line 4698
def visit_function_declaration(node)
end
|
#visit_generic_labeled_statement(node) ⇒ Object
4816
4817
4818
|
# File 'lib/adlint/cc1/syntax.rb', line 4816
def visit_generic_labeled_statement(node)
node.statement.accept(self)
end
|
#visit_goto_statement(node) ⇒ Object
4877
4878
|
# File 'lib/adlint/cc1/syntax.rb', line 4877
def visit_goto_statement(node)
end
|
#visit_grouped_abstract_declarator(node) ⇒ Object
4923
4924
4925
|
# File 'lib/adlint/cc1/syntax.rb', line 4923
def visit_grouped_abstract_declarator(node)
node.base.accept(self)
end
|
#visit_grouped_declarator(node) ⇒ Object
4782
4783
4784
|
# File 'lib/adlint/cc1/syntax.rb', line 4782
def visit_grouped_declarator(node)
node.base.accept(self)
end
|
#visit_grouped_expression(node) ⇒ Object
4538
4539
4540
|
# File 'lib/adlint/cc1/syntax.rb', line 4538
def visit_grouped_expression(node)
node.expression.accept(self)
end
|
#visit_identifier_declarator(node) ⇒ Object
4779
4780
|
# File 'lib/adlint/cc1/syntax.rb', line 4779
def visit_identifier_declarator(node)
end
|
#visit_if_else_statement(node) ⇒ Object
4842
4843
4844
4845
4846
|
# File 'lib/adlint/cc1/syntax.rb', line 4842
def visit_if_else_statement(node)
node.expression.accept(self)
node.then_statement.accept(self)
node.else_statement.accept(self)
end
|
#visit_if_statement(node) ⇒ Object
4837
4838
4839
4840
|
# File 'lib/adlint/cc1/syntax.rb', line 4837
def visit_if_statement(node)
node.expression.accept(self)
node.statement.accept(self)
end
|
#visit_inclusive_or_expression(node) ⇒ Object
4657
4658
4659
4660
|
# File 'lib/adlint/cc1/syntax.rb', line 4657
def visit_inclusive_or_expression(node)
node.lhs_operand.accept(self)
node.rhs_operand.accept(self)
end
|
#visit_indirection_expression(node) ⇒ Object
4593
4594
4595
|
# File 'lib/adlint/cc1/syntax.rb', line 4593
def visit_indirection_expression(node)
node.operand.accept(self)
end
|
#visit_init_declarator(node) ⇒ Object
4723
4724
4725
4726
|
# File 'lib/adlint/cc1/syntax.rb', line 4723
def visit_init_declarator(node)
node.declarator.accept(self)
node.initializer.accept(self) if node.initializer
end
|
#visit_initializer(node) ⇒ Object
4937
4938
4939
4940
4941
4942
4943
4944
|
# File 'lib/adlint/cc1/syntax.rb', line 4937
def visit_initializer(node)
case
when node.expression
node.expression.accept(self)
when node.initializers
node.initializers.each { |init| init.accept(self) }
end
end
|
#visit_kandr_function_declarator(node) ⇒ Object
4796
4797
4798
|
# File 'lib/adlint/cc1/syntax.rb', line 4796
def visit_kandr_function_declarator(node)
node.base.accept(self)
end
|
#visit_kandr_function_definition(node) ⇒ Object
4894
4895
4896
4897
4898
4899
4900
|
# File 'lib/adlint/cc1/syntax.rb', line 4894
def visit_kandr_function_definition(node)
node.declaration_specifiers.accept(self) if node.declaration_specifiers
node.declarator.accept(self)
node.parameter_definitions.each { |param_def| param_def.accept(self) }
node.function_body.accept(self)
node.type_declaration.accept(self) if node.type_declaration
end
|
#visit_logical_and_expression(node) ⇒ Object
4662
4663
4664
4665
|
# File 'lib/adlint/cc1/syntax.rb', line 4662
def visit_logical_and_expression(node)
node.lhs_operand.accept(self)
node.rhs_operand.accept(self)
end
|
#visit_logical_or_expression(node) ⇒ Object
4667
4668
4669
4670
|
# File 'lib/adlint/cc1/syntax.rb', line 4667
def visit_logical_or_expression(node)
node.lhs_operand.accept(self)
node.rhs_operand.accept(self)
end
|
#visit_member_access_by_pointer_expression(node) ⇒ Object
4556
4557
4558
|
# File 'lib/adlint/cc1/syntax.rb', line 4556
def visit_member_access_by_pointer_expression(node)
node.expression.accept(self)
end
|
#visit_member_access_by_value_expression(node) ⇒ Object
4552
4553
4554
|
# File 'lib/adlint/cc1/syntax.rb', line 4552
def visit_member_access_by_value_expression(node)
node.expression.accept(self)
end
|
#visit_member_declaration(node) ⇒ Object
4752
4753
|
# File 'lib/adlint/cc1/syntax.rb', line 4752
def visit_member_declaration(node)
end
|
#visit_multiplicative_expression(node) ⇒ Object
4622
4623
4624
4625
|
# File 'lib/adlint/cc1/syntax.rb', line 4622
def visit_multiplicative_expression(node)
node.lhs_operand.accept(self)
node.rhs_operand.accept(self)
end
|
#visit_null_constant_specifier(node) ⇒ Object
4535
4536
|
# File 'lib/adlint/cc1/syntax.rb', line 4535
def visit_null_constant_specifier(node)
end
|
#visit_object_specifier(node) ⇒ Object
4526
4527
|
# File 'lib/adlint/cc1/syntax.rb', line 4526
def visit_object_specifier(node)
end
|
#visit_parameter_declaration(node) ⇒ Object
4808
4809
4810
4811
|
# File 'lib/adlint/cc1/syntax.rb', line 4808
def visit_parameter_declaration(node)
node.declaration_specifiers.accept(self)
node.declarator.accept(self) if node.declarator
end
|
#visit_parameter_definition(node) ⇒ Object
4910
4911
|
# File 'lib/adlint/cc1/syntax.rb', line 4910
def visit_parameter_definition(node)
end
|
#visit_parameter_type_list(node) ⇒ Object
4804
4805
4806
|
# File 'lib/adlint/cc1/syntax.rb', line 4804
def visit_parameter_type_list(node)
node.parameters.each { |param| param.accept(self) }
end
|
#visit_pointer_abstract_declarator(node) ⇒ Object
4919
4920
4921
|
# File 'lib/adlint/cc1/syntax.rb', line 4919
def visit_pointer_abstract_declarator(node)
node.base.accept(self) if node.base
end
|
#visit_postfix_decrement_expression(node) ⇒ Object
4572
4573
4574
|
# File 'lib/adlint/cc1/syntax.rb', line 4572
def visit_postfix_decrement_expression(node)
node.operand.accept(self)
end
|
#visit_postfix_increment_expression(node) ⇒ Object
4568
4569
4570
|
# File 'lib/adlint/cc1/syntax.rb', line 4568
def visit_postfix_increment_expression(node)
node.operand.accept(self)
end
|
#visit_prefix_decrement_expression(node) ⇒ Object
4585
4586
4587
|
# File 'lib/adlint/cc1/syntax.rb', line 4585
def visit_prefix_decrement_expression(node)
node.operand.accept(self)
end
|
#visit_prefix_increment_expression(node) ⇒ Object
4581
4582
4583
|
# File 'lib/adlint/cc1/syntax.rb', line 4581
def visit_prefix_increment_expression(node)
node.operand.accept(self)
end
|
#visit_relational_expression(node) ⇒ Object
4637
4638
4639
4640
|
# File 'lib/adlint/cc1/syntax.rb', line 4637
def visit_relational_expression(node)
node.lhs_operand.accept(self)
node.rhs_operand.accept(self)
end
|
#visit_return_statement(node) ⇒ Object
4886
4887
4888
|
# File 'lib/adlint/cc1/syntax.rb', line 4886
def visit_return_statement(node)
node.expression.accept(self) if node.expression
end
|
#visit_shift_expression(node) ⇒ Object
4632
4633
4634
4635
|
# File 'lib/adlint/cc1/syntax.rb', line 4632
def visit_shift_expression(node)
node.lhs_operand.accept(self)
node.rhs_operand.accept(self)
end
|
#visit_simple_assignment_expression(node) ⇒ Object
4678
4679
4680
4681
|
# File 'lib/adlint/cc1/syntax.rb', line 4678
def visit_simple_assignment_expression(node)
node.lhs_operand.accept(self)
node.rhs_operand.accept(self)
end
|
#visit_sizeof_expression(node) ⇒ Object
4601
4602
4603
|
# File 'lib/adlint/cc1/syntax.rb', line 4601
def visit_sizeof_expression(node)
node.operand.accept(self)
end
|
#visit_sizeof_type_expression(node) ⇒ Object
4605
4606
4607
|
# File 'lib/adlint/cc1/syntax.rb', line 4605
def visit_sizeof_type_expression(node)
node.operand.accept(self)
end
|
#visit_specifier_qualifier_list(node) ⇒ Object
4755
4756
4757
|
# File 'lib/adlint/cc1/syntax.rb', line 4755
def visit_specifier_qualifier_list(node)
node.type_specifiers.each { |type_spec| type_spec.accept(self) }
end
|
#visit_standard_type_specifier(node) ⇒ Object
4728
4729
|
# File 'lib/adlint/cc1/syntax.rb', line 4728
def visit_standard_type_specifier(node)
end
|
#visit_string_literal_specifier(node) ⇒ Object
4532
4533
|
# File 'lib/adlint/cc1/syntax.rb', line 4532
def visit_string_literal_specifier(node)
end
|
#visit_struct_declaration(node) ⇒ Object
4746
4747
4748
4749
4750
|
# File 'lib/adlint/cc1/syntax.rb', line 4746
def visit_struct_declaration(node)
node.specifier_qualifier_list.accept(self)
node.struct_declarators.each { |dcr| dcr.accept(self) }
node.items.each { |item| item.accept(self) }
end
|
#visit_struct_declarator(node) ⇒ Object
4759
4760
4761
4762
|
# File 'lib/adlint/cc1/syntax.rb', line 4759
def visit_struct_declarator(node)
node.declarator.accept(self) if node.declarator
node.expression.accept(self) if node.expression
end
|
#visit_struct_specifier(node) ⇒ Object
4734
4735
4736
4737
4738
|
# File 'lib/adlint/cc1/syntax.rb', line 4734
def visit_struct_specifier(node)
if node.struct_declarations
node.struct_declarations.each { |dcl| dcl.accept(self) }
end
end
|
#visit_struct_type_declaration(node) ⇒ Object
4710
4711
|
# File 'lib/adlint/cc1/syntax.rb', line 4710
def visit_struct_type_declaration(node)
end
|
#visit_switch_statement(node) ⇒ Object
4848
4849
4850
4851
|
# File 'lib/adlint/cc1/syntax.rb', line 4848
def visit_switch_statement(node)
node.expression.accept(self)
node.statement.accept(self)
end
|
#visit_translation_unit(node) ⇒ Object
4890
4891
4892
|
# File 'lib/adlint/cc1/syntax.rb', line 4890
def visit_translation_unit(node)
node.external_declarations.each { |dcl| dcl.accept(self) }
end
|
#visit_type_name(node) ⇒ Object
4913
4914
4915
4916
4917
|
# File 'lib/adlint/cc1/syntax.rb', line 4913
def visit_type_name(node)
node.specifier_qualifier_list.accept(self)
node.abstract_declarator.accept(self) if node.abstract_declarator
node.type_declaration.accept(self) if node.type_declaration
end
|
#visit_typedef_declaration(node) ⇒ Object
4707
4708
|
# File 'lib/adlint/cc1/syntax.rb', line 4707
def visit_typedef_declaration(node)
end
|
#visit_typedef_type_specifier(node) ⇒ Object
4731
4732
|
# File 'lib/adlint/cc1/syntax.rb', line 4731
def visit_typedef_type_specifier(node)
end
|
#visit_typeof_type_specifier(node) ⇒ Object
4774
4775
4776
4777
|
# File 'lib/adlint/cc1/syntax.rb', line 4774
def visit_typeof_type_specifier(node)
node.expression.accept(self) if node.expression
node.type_name.accept(self) if node.type_name
end
|
#visit_unary_arithmetic_expression(node) ⇒ Object
4597
4598
4599
|
# File 'lib/adlint/cc1/syntax.rb', line 4597
def visit_unary_arithmetic_expression(node)
node.operand.accept(self)
end
|
#visit_union_specifier(node) ⇒ Object
4740
4741
4742
4743
4744
|
# File 'lib/adlint/cc1/syntax.rb', line 4740
def visit_union_specifier(node)
if node.struct_declarations
node.struct_declarations.each { |dcl| dcl.accept(self) }
end
end
|
#visit_union_type_declaration(node) ⇒ Object
4713
4714
|
# File 'lib/adlint/cc1/syntax.rb', line 4713
def visit_union_type_declaration(node)
end
|
#visit_variable_declaration(node) ⇒ Object
4701
4702
|
# File 'lib/adlint/cc1/syntax.rb', line 4701
def visit_variable_declaration(node)
end
|
#visit_variable_definition(node) ⇒ Object
4704
4705
|
# File 'lib/adlint/cc1/syntax.rb', line 4704
def visit_variable_definition(node)
end
|
#visit_while_statement(node) ⇒ Object
4853
4854
4855
4856
|
# File 'lib/adlint/cc1/syntax.rb', line 4853
def visit_while_statement(node)
node.expression.accept(self)
node.statement.accept(self)
end
|