SonarOpenCommunity / sonar-cxx

Undocumented declaration found JAVA-D1003
Documentation
Minor
6 months agoa year old
 91
 92  }
 93
 94  public static enum Keywords implements TokenType { 95 96    STRUCT("struct"), 97    INT("int"), VOID("void"), 98    RETURN("return"), IF("if"), ELSE("else"), WHILE("while"), 99    CONTINUE("continue"), BREAK("break");100101    private final String value;102103    private Keywords(String value) {104      this.value = value;105    }106107    @Override108    public String getName() {109      return name();110    }111112    @Override113    public String getValue() {114      return value;115    }116117    @Override118    public boolean hasToBeSkippedFromAst(AstNode node) {119      return false;120    }121122    public static String[] keywordValues() {123      var keywordsEnum = Keywords.values();124      var keywords = new String[keywordsEnum.length];125      for (int i = 0; i < keywords.length; i++) {126        keywords[i] = keywordsEnum[i].getValue();127      }128      return keywords;129    }130131  }132
133  public static Lexer create() {
134    return Lexer.builder()
 58
 59  }
 60
 61  public static enum Punctuators implements TokenType { 62 63    PAREN_L("("), PAREN_R(")"), 64    BRACE_L("{"), BRACE_R("}"), 65    EQ("="), COMMA(","), SEMICOLON(";"), 66    ADD("+"), SUB("-"), MUL("*"), DIV("/"), 67    EQEQ("=="), NE("!="), LT("<"), LTE("<="), GT(">"), GTE(">="), 68    INC("++"), DEC("--"), 69    HASH("#"); 70 71    private final String value; 72 73    private Punctuators(String value) { 74      this.value = value; 75    } 76 77    @Override 78    public String getName() { 79      return name(); 80    } 81 82    @Override 83    public String getValue() { 84      return value; 85    } 86 87    @Override 88    public boolean hasToBeSkippedFromAst(AstNode node) { 89      return false; 90    } 91 92  } 93
 94  public static enum Keywords implements TokenType {
 95
 37  private MiniCLexer() {
 38  }
 39
 40  public static enum Literals implements TokenType { 41 42    INTEGER; 43 44    @Override 45    public String getName() { 46      return name(); 47    } 48 49    @Override 50    public String getValue() { 51      return name(); 52    } 53 54    @Override 55    public boolean hasToBeSkippedFromAst(AstNode node) { 56      return false; 57    } 58 59  } 60
 61  public static enum Punctuators implements TokenType {
 62
 58import org.sonar.cxx.sslr.grammar.GrammarRuleKey;
 59import org.sonar.cxx.sslr.grammar.LexerfulGrammarBuilder;
 60
 61public enum MiniCGrammar implements GrammarRuleKey { 62 63  BIN_TYPE, 64  BIN_FUNCTION_DEFINITION, 65  BIN_PARAMETER, 66  BIN_VARIABLE_DEFINITION, 67  BIN_FUNCTION_REFERENCE, 68  BIN_VARIABLE_REFERENCE, 69  COMPILATION_UNIT, 70  DEFINITION, 71  STRUCT_DEFINITION, 72  STRUCT_MEMBER, 73  FUNCTION_DEFINITION, 74  VARIABLE_DEFINITION, 75  PARAMETERS_LIST, 76  PARAMETER_DECLARATION, 77  COMPOUND_STATEMENT, 78  VARIABLE_INITIALIZER, 79  ARGUMENT_EXPRESSION_LIST, 80  STATEMENT, 81  EXPRESSION_STATEMENT, 82  RETURN_STATEMENT, 83  CONTINUE_STATEMENT, 84  BREAK_STATEMENT, 85  IF_STATEMENT, 86  WHILE_STATEMENT, 87  CONDITION_CLAUSE, 88  ELSE_CLAUSE, 89  NO_COMPLEXITY_STATEMENT, 90  EXPRESSION, 91  ASSIGNMENT_EXPRESSION, 92  RELATIONAL_EXPRESSION, 93  RELATIONAL_OPERATOR, 94  ADDITIVE_EXPRESSION, 95  ADDITIVE_OPERATOR, 96  MULTIPLICATIVE_EXPRESSION, 97  MULTIPLICATIVE_OPERATOR, 98  UNARY_EXPRESSION, 99  UNARY_OPERATOR,100  POSTFIX_EXPRESSION,101  POSTFIX_OPERATOR,102  PRIMARY_EXPRESSION;103104  public static Grammar create() {105    var b = LexerfulGrammarBuilder.create();106107    // Bins108    b.rule(BIN_TYPE).is(b.firstOf(109      INT,110      VOID));111112    b.rule(BIN_PARAMETER).is(IDENTIFIER);113114    b.rule(BIN_FUNCTION_DEFINITION).is(IDENTIFIER);115116    b.rule(BIN_VARIABLE_DEFINITION).is(IDENTIFIER);117118    b.rule(BIN_FUNCTION_REFERENCE).is(IDENTIFIER);119120    b.rule(BIN_VARIABLE_REFERENCE).is(IDENTIFIER);121122    // Miscellaneous123    b.rule(COMPILATION_UNIT).is(b.zeroOrMore(DEFINITION), EOF);124125    b.rule(DEFINITION).is(b.firstOf(126      STRUCT_DEFINITION,127      FUNCTION_DEFINITION,128      VARIABLE_DEFINITION));129130    b.rule(STRUCT_DEFINITION).is(STRUCT, IDENTIFIER, BRACE_L, b.oneOrMore(STRUCT_MEMBER, SEMICOLON), BRACE_R);131132    b.rule(STRUCT_MEMBER).is(BIN_TYPE, IDENTIFIER);133134    b.rule(FUNCTION_DEFINITION).is(BIN_TYPE, BIN_FUNCTION_DEFINITION, PAREN_L, b.optional(PARAMETERS_LIST), PAREN_R,135                                   COMPOUND_STATEMENT);136137    b.rule(VARIABLE_DEFINITION).is(BIN_TYPE, BIN_VARIABLE_DEFINITION, b.optional(VARIABLE_INITIALIZER), SEMICOLON);138139    b.rule(PARAMETERS_LIST).is(PARAMETER_DECLARATION, b.zeroOrMore(COMMA, PARAMETER_DECLARATION));140141    b.rule(PARAMETER_DECLARATION).is(BIN_TYPE, BIN_PARAMETER);142143    b.rule(COMPOUND_STATEMENT).is(BRACE_L, b.zeroOrMore(VARIABLE_DEFINITION), b.zeroOrMore(STATEMENT), BRACE_R);144145    b.rule(VARIABLE_INITIALIZER).is(EQ, EXPRESSION);146147    b.rule(ARGUMENT_EXPRESSION_LIST).is(EXPRESSION, b.zeroOrMore(COMMA, EXPRESSION));148149    // Statements150    b.rule(STATEMENT).is(b.firstOf(151      EXPRESSION_STATEMENT,152      COMPOUND_STATEMENT,153      RETURN_STATEMENT,154      CONTINUE_STATEMENT,155      BREAK_STATEMENT,156      IF_STATEMENT,157      WHILE_STATEMENT,158      NO_COMPLEXITY_STATEMENT));159160    b.rule(EXPRESSION_STATEMENT).is(EXPRESSION, SEMICOLON);161162    b.rule(RETURN_STATEMENT).is(RETURN, EXPRESSION, SEMICOLON);163164    b.rule(CONTINUE_STATEMENT).is(CONTINUE, SEMICOLON);165166    b.rule(BREAK_STATEMENT).is(BREAK, SEMICOLON);167168    b.rule(IF_STATEMENT).is(IF, CONDITION_CLAUSE, STATEMENT, b.optional(ELSE_CLAUSE));169170    b.rule(WHILE_STATEMENT).is(WHILE, CONDITION_CLAUSE, STATEMENT);171172    b.rule(CONDITION_CLAUSE).is(PAREN_L, EXPRESSION, PAREN_R);173174    b.rule(ELSE_CLAUSE).is(ELSE, STATEMENT);175176    b.rule(NO_COMPLEXITY_STATEMENT).is("nocomplexity", STATEMENT);177178    // Expressions179    b.rule(EXPRESSION).is(ASSIGNMENT_EXPRESSION);180181    b.rule(ASSIGNMENT_EXPRESSION).is(RELATIONAL_EXPRESSION, b.optional(EQ, RELATIONAL_EXPRESSION)).skipIfOneChild();182183    b.rule(RELATIONAL_EXPRESSION).is(ADDITIVE_EXPRESSION, b.optional(RELATIONAL_OPERATOR, RELATIONAL_EXPRESSION))184      .skipIfOneChild();185186    b.rule(RELATIONAL_OPERATOR).is(b.firstOf(187      EQEQ,188      NE,189      LT,190      LTE,191      GT,192      GTE));193194    b.rule(ADDITIVE_EXPRESSION).is(MULTIPLICATIVE_EXPRESSION, b.optional(ADDITIVE_OPERATOR, ADDITIVE_EXPRESSION))195      .skipIfOneChild();196197    b.rule(ADDITIVE_OPERATOR).is(b.firstOf(198      ADD,199      SUB));200201    b.rule(MULTIPLICATIVE_EXPRESSION).is(UNARY_EXPRESSION, b202                                         .optional(MULTIPLICATIVE_OPERATOR, MULTIPLICATIVE_EXPRESSION)).skipIfOneChild();203204    b.rule(MULTIPLICATIVE_OPERATOR).is(b.firstOf(205      MUL,206      DIV));207208    b.rule(UNARY_EXPRESSION).is(b.firstOf(209      b.sequence(UNARY_OPERATOR, PRIMARY_EXPRESSION),210      POSTFIX_EXPRESSION)).skipIfOneChild();211212    b.rule(UNARY_OPERATOR).is(b.firstOf(213      INC,214      DEC));215216    b.rule(POSTFIX_EXPRESSION).is(b.firstOf(217      b.sequence(PRIMARY_EXPRESSION, POSTFIX_OPERATOR),218      b.sequence(BIN_FUNCTION_REFERENCE, PAREN_L, b.optional(ARGUMENT_EXPRESSION_LIST), PAREN_R),219      PRIMARY_EXPRESSION)).skipIfOneChild();220221    b.rule(POSTFIX_OPERATOR).is(b.firstOf(222      INC,223      DEC));224225    b.rule(PRIMARY_EXPRESSION).is(b.firstOf(226      INTEGER,227      BIN_VARIABLE_REFERENCE,228      b.sequence(PAREN_L, EXPRESSION, PAREN_R)));229230    b.setRootRule(COMPILATION_UNIT);231232    return b.build();233  }234235}
 31
 32public class Trivia {
 33
 34  public enum TriviaKind { 35    COMMENT, 36    PREPROCESSOR, 37    SKIPPED_TEXT 38  } 39
 40  private final TriviaKind kind;
 41  private final List<Token> tokens;