Skip to content

Commit b23fc89

Browse files
committed
Added support for ENUM statements + fix define tt/buffers + height for columns
1 parent 9fd19a3 commit b23fc89

2 files changed

Lines changed: 59 additions & 35 deletions

File tree

src/main/antlr/JPTreeParser.g

Lines changed: 52 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ statement
170170
| casestate
171171
| catchstate
172172
| choosestate
173+
| enumstate
173174
| classstate
174175
| clearstate
175176
| {state2(_t, 0)}? closestate // SQL
@@ -191,7 +192,7 @@ statement
191192
| {state2(_t, DATASET)}? createdatasetstate
192193
| {state2(_t, DATASOURCE)}? createdatasourcestate
193194
| {state2(_t, INDEX)}? createindexstate // SQL
194-
| {state2(_t, QUERY)}? createquerystate
195+
| {state2(_t, QUERY)}? createquerystate
195196
| {state2(_t, SAXREADER)}? createsaxreaderstate
196197
| {state2(_t, SAXWRITER)}? createsaxwriterstate
197198
| {state2(_t, SERVER)}? createserverstate
@@ -212,7 +213,7 @@ statement
212213
| {state2(_t, INITIATE)}? ddeinitiatestate
213214
| {state2(_t, REQUEST)}? dderequeststate
214215
| {state2(_t, SEND)}? ddesendstate
215-
| {state2(_t, TERMINATE)}? ddeterminatestate
216+
| {state2(_t, TERMINATE)}? ddeterminatestate
216217
| declarecursorstate
217218
| {state2(_t, BROWSE)}? definebrowsestate
218219
| {state2(_t, BUFFER)}? definebufferstate
@@ -251,7 +252,7 @@ statement
251252
| {state2(_t, TABLE)}? droptablestate // SQL
252253
| {state2(_t, VIEW)}? dropviewstate // SQL
253254
| dynamicnewstate
254-
| emptytemptablestate
255+
| emptytemptablestate
255256
| enablestate
256257
| exportstate
257258
| fetchstate
@@ -261,11 +262,11 @@ statement
261262
| formstate
262263
| functionstate
263264
| getstate
264-
| getkeyvaluestate
265+
| getkeyvaluestate
265266
| grantstate
266267
| hidestate
267268
| ifstate
268-
| importstate
269+
| importstate
269270
| {state2(_t, CLEAR)}? inputclearstate
270271
| {state2(_t, CLOSE)}? inputclosestate
271272
| {state2(_t, FROM)}? inputfromstate
@@ -276,24 +277,24 @@ statement
276277
| {state2(_t, 0)}? insertstate
277278
| interfacestate
278279
| leavestate
279-
| loadstate
280+
| loadstate
280281
| messagestate
281282
| methodstate
282283
| nextstate
283284
| nextpromptstate
284-
| onstate
285+
| onstate
285286
| {state2(_t, 0)}? openstate // SQL
286287
| {state2(_t, QUERY)}? openquerystate
287288
| osappendstate
288289
| oscommandstate
289290
| oscopystate
290-
| oscreatedirstate
291+
| oscreatedirstate
291292
| osdeletestate
292293
| osrenamestate
293294
| {state2(_t, CLOSE)}? outputclosestate
294295
| {state2(_t, THROUGH)}? outputthroughstate
295296
| {state2(_t, TO)}? outputtostate
296-
| pagestate
297+
| pagestate
297298
| pausestate
298299
| procedurestate
299300
| processeventsstate
@@ -310,7 +311,7 @@ statement
310311
| {state2(_t, EXTERNAL)}? releaseexternalstate
311312
| {state2(_t, OBJECT)}? releaseobjectstate
312313
| repeatstate
313-
| repositionstate
314+
| repositionstate
314315
| returnstate
315316
| revokestate
316317
| routinelevelstate
@@ -320,11 +321,11 @@ statement
320321
| {state2(_t, SUPER)}? runsuperstate
321322
| savecachestate
322323
| scrollstate
323-
| seekstate
324+
| seekstate
324325
| selectstate
325326
| setstate
326327
| showstatsstate
327-
| statusstate
328+
| statusstate
328329
| stopstate
329330
| subscribestate
330331
| {state2(_t, COLOR)}? systemdialogcolorstate
@@ -336,11 +337,11 @@ statement
336337
| thisobjectstate
337338
| transactionmodeautomaticstate
338339
| triggerprocedurestate
339-
| underlinestate
340+
| underlinestate
340341
| undostate
341342
| unloadstate
342343
| unsubscribestate
343-
| upstate
344+
| upstate
344345
| updatestatement
345346
| usestate
346347
| usingstate
@@ -394,7 +395,7 @@ pseudfn
394395
| PROGRESS | FRAMEINDEX | FRAMEDB | FRAMENAME | DATASERVERS
395396
| NUMDBS | NUMALIASES | ISATTRSPACE | PROCSTATUS
396397
| PROCHANDLE | CURSOR | OSERROR | RETURNVALUE | OSDRIVES
397-
| PROVERSION | TRANSACTION | MACHINECLASS
398+
| PROVERSION | TRANSACTION | MACHINECLASS
398399
| AAPCONTROL | GETCODEPAGES | COMSELF
399400
;
400401
@@ -419,7 +420,7 @@ functioncall
419420
| #(GETCODEPAGES (funargs)? )
420421
| #(GUID LEFTPAREN (expression)? RIGHTPAREN )
421422
| #(IF expression THEN expression ELSE expression )
422-
| ldbnamefunc
423+
| ldbnamefunc
423424
| lengthfunc // is also a pseudfn.
424425
| #(LINECOUNTER (LEFTPAREN ID RIGHTPAREN)? )
425426
| #(MTIME (funargs)? )
@@ -436,7 +437,7 @@ functioncall
436437
| #(GETCLASS LEFTPAREN TYPE_NAME RIGHTPAREN )
437438
| #(USERID (funargs)? )
438439
| #(USER (funargs)? )
439-
| sqlaggregatefunc
440+
| sqlaggregatefunc
440441
| argfunc
441442
| noargfunc
442443
| recordfunc
@@ -608,6 +609,7 @@ noargfunc
608609
| GENERATEPBESALT
609610
| GENERATERANDOMKEY
610611
| GENERATEUUID
612+
| GETCODEPAGES
611613
| GATEWAYS
612614
| GOPENDING
613615
| ISATTRSPACE
@@ -805,11 +807,11 @@ constant
805807
;
806808
807809
systemhandlename
808-
: AAMEMORY | ACTIVEWINDOW | AUDITCONTROL | AUDITPOLICY | CLIPBOARD | CODEBASELOCATOR | COLORTABLE | COMPILER
810+
: AAMEMORY | ACTIVEWINDOW | AUDITCONTROL | AUDITPOLICY | CLIPBOARD | CODEBASELOCATOR | COLORTABLE | COMPILER
809811
| COMSELF | CURRENTWINDOW | DEBUGGER | DEFAULTWINDOW
810812
| ERRORSTATUS | FILEINFORMATION | FOCUS | FONTTABLE | LASTEVENT | LOGMANAGER
811813
| MOUSE | PROFILER | RCODEINFORMATION | SECURITYPOLICY | SELF | SESSION
812-
| SOURCEPROCEDURE | SUPER | TARGETPROCEDURE | TEXTCURSOR | THISOBJECT | THISPROCEDURE | WEBCONTEXT
814+
| SOURCEPROCEDURE | SUPER | TARGETPROCEDURE | TEXTCURSOR | THISOBJECT | THISPROCEDURE | WEBCONTEXT | ACTIVEFORM
813815
;
814816
815817
@@ -942,7 +944,7 @@ buffercopystate
942944
( #(ASSIGN assignment_list ) )?
943945
(NOLOBS)?
944946
(NOERROR_KW)?
945-
state_end
947+
state_end
946948
)
947949
;
948950
@@ -980,18 +982,34 @@ case_expression
980982
choosestate
981983
: #( CHOOSE (ROW|FIELD)
982984
( #(Form_item field (#(HELP constant))? ) )+
983-
( AUTORETURN
984-
| #(COLOR anyorvalue)
985+
( AUTORETURN
986+
| #(COLOR anyorvalue)
985987
| goonphrase
986988
| #(KEYS field )
987-
| NOERROR_KW
989+
| NOERROR_KW
988990
| #(PAUSE expression)
989991
)*
990992
(framephrase)?
991993
state_end
992994
)
993995
;
994996
997+
enumstate
998+
: #( ENUM TYPE_NAME (FLAGS)? block_colon
999+
defenumstate
1000+
#(END (ENUM)? )
1001+
state_end
1002+
)
1003+
;
1004+
1005+
defenumstate
1006+
: #( DEFINE ENUM (enum_member)+ state_end )
1007+
;
1008+
1009+
enum_member
1010+
: TYPE_NAME ( EQUAL ( NUMBER | TYPE_NAME (COMMA TYPE_NAME)*))?
1011+
;
1012+
9951013
classstate
9961014
: #( CLASS TYPE_NAME
9971015
( #(INHERITS TYPE_NAME)
@@ -1068,10 +1086,13 @@ columnformat
10681086
| #(LABELBGCOLOR expression )
10691087
| #(LABELFGCOLOR expression )
10701088
| #(LEXAT field (columnformat)? )
1089+
| #(HEIGHT NUMBER )
1090+
| #(HEIGHTPIXELS NUMBER )
1091+
| #(HEIGHTCHARS NUMBER )
10711092
| #(WIDTH NUMBER )
10721093
| #(WIDTHPIXELS NUMBER )
10731094
| #(WIDTHCHARS NUMBER )
1074-
)+
1095+
)+
10751096
)
10761097
;
10771098
@@ -1133,20 +1154,20 @@ compile_append
11331154
connectstate
11341155
: #(CONNECT (NOERROR_KW|DDE|filenameorvalue)* state_end )
11351156
;
1136-
1157+
11371158
constructorstate
11381159
: #( CONSTRUCTOR def_modifiers TYPE_NAME function_params
11391160
block_colon code_block #(END (CONSTRUCTOR|METHOD)? ) state_end
11401161
)
11411162
;
1142-
1163+
11431164
convertphrase
1144-
: #( CONVERT
1165+
: #( CONVERT
11451166
( #(SOURCE (BASE64 | CODEPAGE expression (BASE64)?) ) )?
11461167
( #(TARGET (BASE64 | CODEPAGE expression (BASE64)?) ) )?
11471168
)
11481169
;
1149-
1170+
11501171
copylobstate
11511172
: #( COPYLOB (FROM)?
11521173
( FILE expression | (OBJECT)? expression )
@@ -1183,7 +1204,7 @@ createbrowsestate
11831204
;
11841205
11851206
createbufferstate
1186-
: #( CREATE BUFFER field FOR TABLE expression
1207+
: #( CREATE BUFFER (field | widattr) FOR TABLE expression
11871208
( #(BUFFERNAME expression) )?
11881209
(#(IN_KW WIDGETPOOL expression))?
11891210
(NOERROR_KW)? state_end
@@ -1199,7 +1220,7 @@ createclientprincipalstate
11991220
;
12001221
12011222
createdatabasestate
1202-
: #( CREATE DATABASE expression
1223+
: #( CREATE DATABASE expression
12031224
( #(FROM expression (NEWINSTANCE)? ) )?
12041225
(REPLACE)? (NOERROR_KW)? state_end
12051226
)
@@ -1246,7 +1267,7 @@ createsocketstate
12461267
;
12471268
12481269
createtemptablestate
1249-
: #(CREATE TEMPTABLE field (#(IN_KW WIDGETPOOL expression))? (NOERROR_KW)? state_end )
1270+
: #(CREATE TEMPTABLE (field | widattr) (#(IN_KW WIDGETPOOL expression))? (NOERROR_KW)? state_end )
12501271
;
12511272
12521273
createwidgetstate

src/main/antlr/TreeParser01.g

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -528,10 +528,13 @@ columnformat
528528
| #(LABELBGCOLOR expression )
529529
| #(LABELFGCOLOR expression )
530530
| #(LEXAT af:fld[CQ.SYMBOL] {action.lexat(#af);} (columnformat)? )
531+
| #(HEIGHT NUMBER )
532+
| #(HEIGHTPIXELS NUMBER )
533+
| #(HEIGHTCHARS NUMBER )
531534
| #(WIDTH NUMBER )
532535
| #(WIDTHPIXELS NUMBER )
533536
| #(WIDTHCHARS NUMBER )
534-
)+
537+
)+
535538
)
536539
;
537540

@@ -543,7 +546,7 @@ constructorstate
543546
{action.structorEnd(#c);}
544547
)
545548
;
546-
549+
547550
createstate
548551
: #(CREATE tbl[CQ.UPDATING] (#(USING (ROWID|RECID) expression))? (NOERROR_KW)? state_end )
549552
;
@@ -561,7 +564,7 @@ createbrowsestate
561564
;
562565

563566
createbufferstate
564-
: #( CREATE BUFFER fld[CQ.UPDATING] FOR TABLE expression
567+
: #( CREATE BUFFER (fld[CQ.UPDATING] | widattr) FOR TABLE expression
565568
( #(BUFFERNAME expression) )?
566569
(#(IN_KW WIDGETPOOL expression))?
567570
(NOERROR_KW)? state_end
@@ -581,7 +584,7 @@ createsocketstate
581584
;
582585

583586
createtemptablestate
584-
: #(CREATE TEMPTABLE fld[CQ.UPDATING] (#(IN_KW WIDGETPOOL expression))? (NOERROR_KW)? state_end )
587+
: #(CREATE TEMPTABLE (fld[CQ.UPDATING] | widattr) (#(IN_KW WIDGETPOOL expression))? (NOERROR_KW)? state_end )
585588
;
586589

587590
createwidgetstate

0 commit comments

Comments
 (0)