@@ -146,9 +146,13 @@ def p_value(t):
146
146
'''value : STRING
147
147
| NUMBER
148
148
| NAME
149
- | NAME dim '''
149
+ | nameDim '''
150
150
t [0 ] = t [1 ]
151
151
152
+ def p_name_dim (t ):
153
+ 'nameDim : NAME dim'
154
+ t [0 ] = "%s %s" % (t [1 ],t [2 ])
155
+
152
156
#arr[3] = 2
153
157
154
158
############################### COMPARISONS
@@ -252,10 +256,10 @@ def p_declr_assign(t):
252
256
t [0 ] = "%s %s = %s;" % (t [1 ],t [2 ],t [4 ])
253
257
254
258
def p_assign (t ):
255
- 'statement : NAME EQUALS value'
259
+ '''statement : NAME EQUALS value
260
+ | nameDim EQUALS value'''
256
261
t [0 ] = "%s = %s;" % (t [1 ],t [3 ])
257
262
258
-
259
263
############################### FUNCTIONS
260
264
261
265
def p_func (t ):
@@ -358,8 +362,13 @@ def p_error(t):
358
362
359
363
######################### ARRAYS
360
364
#int[ ][ ] aryNumbers = new int[2][3]
361
- def p_array (t ):
362
- '''statement : type dim NAME'''
365
+ def p_array_declr (t ):
366
+ '''statement : type dim NAME''' # num[2][5] a
367
+ dimension = '[]' * t [2 ].count ('[' )
368
+ t [0 ] = "%s %s %s = new %s %s" % (t [1 ],dimension ,t [3 ],t [1 ],t [2 ])
369
+
370
+ def p_array_assgn_declr (t ):
371
+ '''statement : type nameDim EQUALS value''' # num[2][5] a
363
372
dimension = '[]' * t [2 ].count ('[' )
364
373
t [0 ] = "%s %s %s = new %s %s" % (t [1 ],dimension ,t [3 ],t [1 ],t [2 ])
365
374
@@ -372,20 +381,64 @@ def p_dim(t):
372
381
t [0 ] = "[%s]" % t [2 ]
373
382
374
383
375
- #num[3] = 2
384
+ def p_dim_empty (t ):
385
+ '''dim : LSBRACKET RSBRACKET'''
386
+ t [0 ] = "[0]"
376
387
377
- #multidimention?
378
- #statement?
388
+ def p_array_typeDimName (t ):
389
+ 'typeDimName : type dim NAME'
390
+ t [0 ] = "%s %s %s" % (t [1 ],t [2 ],t [3 ])
379
391
380
- ######################### TABLES
392
+ def p_array_copy (t ):
393
+ '''statement : typeDimName EQUALS NAME''' #num[] a = b
394
+ t [0 ] = "%s = %s.clone()" % (t [1 ],t [3 ])
381
395
382
- ######################### GRAPHS
396
+ def p_array_dir_assign (t ):
397
+ 'statement : typeDimName EQUALS arrayValue'
398
+ t [0 ] = "%s = %s" % (t [1 ],t [3 ])
383
399
400
+ def p_arrayValue (t ):
401
+ 'arrayValue : LBRACKET entry RBRACKET'
402
+ print "----"
403
+ t [0 ] = "{ %s }" % t [2 ]
384
404
405
+ def p_entry_conc (t ):
406
+ 'entry : entry COMMA entry'
407
+ t [0 ] = "%s , %s" % (t [1 ],t [3 ])
385
408
409
+ def p_entry (t ):
410
+ 'entry : value'
411
+ t [0 ] = t [1 ]
412
+
413
+ def p_entry2 (t ):
414
+ 'entry : LBRACKET entry RBRACKET'
415
+ t [0 ] = "{%s}" % t [2 ]
416
+
417
+ '''
418
+
419
+ ######################### TABLES
420
+ #Table tableName = new Table(2,7)
421
+
422
+ def p_table(t):
423
+ 'statement : type NAME EQUALS LSBRACKET entry RSCRACKET' #entry with ,?
424
+ dimension = '[]' * t[5].count('[')
425
+ t[0] = "Table %s = new Table(new %s %s{%s})"%(t[2], t[1], dimension, t[5])#entry with {}
426
+
427
+ def p_table_print:
428
+ 'statement : print NAME'
429
+ t[0] = "System.out.println(%s)"%t[2]
430
+
386
431
432
+ ######################### GRAPHS
433
+ def p_graph(t):
434
+ 'statement : type NAME EQUALS NUMBER LSBRACKET entry RSBRACKET'
435
+ t[0] = "%s %s = new Graph(%s, new int dim {%s})"%(t[1],t[2],t[4],t[6])
387
436
437
+ def p_graph_print(t):
438
+ 'statement : print NAME'
439
+ t[0] = "System.out.println(%s)"%t[2]
388
440
441
+ '''
389
442
390
443
391
444
0 commit comments