@@ -719,6 +719,35 @@ TOKEN:
719
719
}
720
720
}
721
721
722
+ /**
723
+ * Parses identifiers including standard SQL identifiers, quoted identifiers, and specific keywords.
724
+ *
725
+ * This is used in cases where certain SQL keywords (like NAME, NEXT, VALUE, etc.) can appear
726
+ * as identifiers (e.g., table names, column names) depending on the SQL dialect or context.
727
+ *
728
+ * Supported tokens:
729
+ * - <S_IDENTIFIER>: Standard unquoted SQL identifier
730
+ * - <S_QUOTED_IDENTIFIER>: Quoted identifier (e.g., `identifier` or "identifier")
731
+ * - <K_NAME>, <K_NEXT>, <K_VALUE>, <K_PUBLIC>, <K_STRING>: Specific keywords treated as identifiers
732
+ *
733
+ * @return Token representing the identifier or keyword used as identifier
734
+ */
735
+ Token KeywordOrIdentifier():
736
+ {
737
+ Token tk;
738
+ }
739
+ {
740
+ (
741
+ tk = <S_IDENTIFIER>
742
+ | tk = <S_QUOTED_IDENTIFIER>
743
+ | tk = <K_NAME>
744
+ | tk = <K_NEXT>
745
+ | tk = <K_VALUE>
746
+ | tk = <K_PUBLIC>
747
+ | tk = <K_STRING>
748
+ )
749
+ { return tk; }
750
+ }
722
751
723
752
Statement Statement() #Statement:
724
753
{
@@ -7997,9 +8026,9 @@ AlterExpression AlterExpression():
7997
8026
)
7998
8027
|
7999
8028
LOOKAHEAD(2) <K_RENAME> { alterExp.setOperation(AlterOperation.RENAME); } [ <K_COLUMN> { alterExp.hasColumn(true);} ]
8000
- ( tk=<S_IDENTIFIER> | tk=<S_QUOTED_IDENTIFIER> ) { alterExp.setColOldName(tk.image); }
8029
+ ( tk=KeywordOrIdentifier() ) { alterExp.setColOldName(tk.image); }
8001
8030
<K_TO>
8002
- (tk2=<S_IDENTIFIER> | tk2=<S_QUOTED_IDENTIFIER> ) { alterExp.setColumnName(tk2.image); }
8031
+ ( tk2=KeywordOrIdentifier() ) { alterExp.setColumnName(tk2.image); }
8003
8032
|
8004
8033
LOOKAHEAD(2)(
8005
8034
<K_RENAME> <K_TO> {alterExp.setOperation(AlterOperation.RENAME_TABLE);}
0 commit comments