View Javadoc

    1   /* Generated By:JJTree: Do not edit this line. ASTLiteral.java */
    2
    3   package net.sourceforge.pmd.ast;
    4
    5   import java.util.regex.Pattern;
    6
    7   public class ASTLiteral extends SimpleJavaTypeNode {
    8
    9   	private boolean isInt;
    10  	private boolean isFloat;
    11  	private boolean isChar;
    12  	private boolean isString;
    13
    14      public ASTLiteral(int id) {
    15          super(id);
    16      }
    17
    18      public ASTLiteral(JavaParser p, int id) {
    19          super(p, id);
    20      }
    21
    22      /**
    23       * Accept the visitor. *
    24       */
    25      public Object jjtAccept(JavaParserVisitor visitor, Object data) {
    26          return visitor.visit(this, data);
    27      }
    28
    29      public void setIntLiteral() {
    30      	this.isInt = true;
    31      }
    32      public boolean isIntLiteral() {
    33      	return isInt;
    34      }
    35
    36      public void setFloatLiteral() {
    37      	this.isFloat = true;
    38      }
    39      public boolean isFloatLiteral() {
    40      	return isFloat;
    41      }
    42
    43      public void setCharLiteral() {
    44      	this.isChar = true;
    45      }
    46      public boolean isCharLiteral() {
    47      	return isChar;
    48      }
    49
    50      public void setStringLiteral() {
    51      	this.isString = true;
    52      }
    53      public boolean isStringLiteral() {
    54      	return isString;
    55      }
    56
    57      /**
    58       * Returns true if this is a String literal with only one character.
    59       * Handles octal and escape characters.
    60       *
    61       * @return true is this is a String literal with only one character
    62       */
    63      public boolean isSingleCharacterStringLiteral() {
    64          if (isString) {
    65              String image = getImage();
    66              int length = image.length();
    67              if (length == 3) {
    68                  return true;
    69              } else if (image.charAt(1) == '\\') {
    70                  return SINGLE_CHAR_ESCAPE_PATTERN.matcher(image).matches();
    71              }
    72          }
    73          return false;
    74      }
    75
    76      /**
    77       * Pattern used to detect a single escaped character or octal character in a String.
    78       */
    79      private static final Pattern SINGLE_CHAR_ESCAPE_PATTERN = Pattern
    80              .compile("^\"\\\\(([ntbrf\\\\'\\\"])|([0-7][0-7]?)|([0-3][0-7][0-7]))\"");
    81
    82  }