antlr3 1.8.8 → 1.8.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/java/RubyTarget.java CHANGED
@@ -477,4 +477,135 @@ public class RubyTarget extends Target
477
477
 
478
478
  return String.valueOf( intValue );
479
479
  }
480
+
481
+ /** Convert from an ANTLR string literal found in a grammar file to
482
+ * an equivalent string literal in the target language. For Java, this
483
+ * is the translation 'a\n"' -> "a\n\"". Expect single quotes
484
+ * around the incoming literal. Just flip the quotes and replace
485
+ * double quotes with \"
486
+ *
487
+ * Note that we have decided to allow poeple to use '\"' without
488
+ * penalty, so we must build the target string in a loop as Utils.replae
489
+ * cannot handle both \" and " without a lot of messing around.
490
+ *
491
+ */
492
+ public String getTargetStringLiteralFromANTLRStringLiteral(
493
+ CodeGenerator generator,
494
+ String literal)
495
+ {
496
+ StringBuilder sb = new StringBuilder();
497
+ StringBuffer is = new StringBuffer(literal);
498
+ int lastIndex = is.length() - 1;
499
+
500
+ // Opening quote
501
+ //
502
+ sb.append('"');
503
+
504
+ for ( int i = 1; i < lastIndex; i++ ) {
505
+ if (is.charAt(i) == '\\') {
506
+ // Anything escaped is what it is! We assume that
507
+ // people know how to escape characters correctly. However
508
+ // we catch anything that does not need an escape in Java (which
509
+ // is what the default implementation is dealing with and remove
510
+ // the escape. The C target does this for instance.
511
+ //
512
+ switch (is.charAt(i+1)) {
513
+ // Pass through any escapes that Java also needs
514
+ //
515
+ case '"':
516
+ case 'n':
517
+ case 'r':
518
+ case 't':
519
+ case 'b':
520
+ case 'f':
521
+ case '\\':
522
+ case 'u': // Assume unnnn
523
+ sb.append('\\'); // Pass the escape through
524
+ break;
525
+ default:
526
+ // Remove the escape by virtue of not adding it here
527
+ // Thus \' becomes ' and so on
528
+ //
529
+ break;
530
+ }
531
+
532
+ // Go past the \ character
533
+ //
534
+ i++;
535
+ } else {
536
+
537
+ // in ruby, double quoted strings have interpolation signifiers that
538
+ // will cause a syntax error in the output if they are not properly
539
+ // escaped
540
+
541
+ if ( is.charAt( i ) == '#' && i < lastIndex - 1 ) {
542
+ switch ( is.charAt( i + 1 ) ) {
543
+ case '{':
544
+ case '@':
545
+ case '$':
546
+ sb.append('\\');
547
+ break;
548
+ default:
549
+ break;
550
+ // pass through
551
+ }
552
+ } else if (is.charAt(i) == '"') {
553
+ sb.append('\\');
554
+ }
555
+
556
+ }
557
+ // Add in the next character, which may have been escaped
558
+ //
559
+ sb.append(is.charAt(i));
560
+ }
561
+
562
+ // Append closing " and return
563
+ //
564
+ sb.append('"');
565
+
566
+ return sb.toString();
567
+ }
568
+
569
+
570
+ public String getTargetStringLiteralFromString(String s, boolean quoted) {
571
+ if ( s == null ) { return null; }
572
+
573
+ StringBuffer buf = new StringBuffer();
574
+
575
+ if ( quoted ) { buf.append('"'); }
576
+
577
+ for ( int i = 0; i < s.length(); i++ ) {
578
+ int c = s.charAt( i );
579
+
580
+ if ( c != '\'' && // don't escape single quotes in strings for java
581
+ c < targetCharValueEscape.length &&
582
+ targetCharValueEscape[c] != null )
583
+ {
584
+ buf.append(targetCharValueEscape[c]);
585
+ }
586
+ else if ( c == '#' && i < s.length() - 1 )
587
+ {
588
+ switch ( s.charAt( i + 1 ) ) {
589
+ case '{':
590
+ case '@':
591
+ case '$':
592
+ buf.append( "\\#" );
593
+ break;
594
+ default:
595
+ buf.append( '#' );
596
+ break;
597
+ }
598
+ }
599
+ else
600
+ {
601
+ buf.append((char)c);
602
+ }
603
+ }
604
+ if ( quoted ) {
605
+ buf.append('"');
606
+ }
607
+ return buf.toString();
608
+ }
609
+
610
+
480
611
  }
Binary file
data/lib/antlr3/main.rb CHANGED
@@ -145,19 +145,13 @@ class Main
145
145
  ANTLR3::FileStream.new( args[ 0 ] )
146
146
  else ANTLR3::FileStream.new( @input )
147
147
  end
148
- case
149
- when @ruby_prof
148
+ if @ruby_prof
150
149
  load_ruby_prof
151
150
  profile = RubyProf.profile do
152
151
  recognize( in_stream )
153
152
  end
154
153
  printer = RubyProf::FlatPrinter.new( profile )
155
154
  printer.print( @output )
156
- when @profile
157
- require 'profiler'
158
- Profiler__.start_profile
159
- recognize( in_stream )
160
- Profiler__.print_profile
161
155
  else
162
156
  recognize( in_stream )
163
157
  end
@@ -457,7 +451,7 @@ class ParserMain < Main
457
451
  # token_stream = CommonTokenStream.new( lexer )
458
452
  parser = @parser_class.new( lexer, parser_options )
459
453
  result = parser.send( @parser_rule ) and present( result )
460
- @profile and puts( parser.generate_report )
454
+ @profile and puts( parser.profile.generate_report )
461
455
  end
462
456
 
463
457
  def present( return_value )
@@ -68,7 +68,7 @@ module ParserEvents
68
68
  end
69
69
 
70
70
  def memoize( rule, start_index, success )
71
- @debug_listener.memoize( rule, rule_start_index, sucess )
71
+ @debug_listener.memoize( rule, start_index, success )
72
72
  super
73
73
  end
74
74
  end
@@ -20,7 +20,7 @@ module ANTLR3
20
20
  #
21
21
  MAJOR_VERSION = 1
22
22
  MINOR_VERSION = 8
23
- PATCH_VERSION = 8
23
+ PATCH_VERSION = 10
24
24
  VERSION = [ MAJOR_VERSION, MINOR_VERSION, PATCH_VERSION ]
25
25
  VERSION_STRING = VERSION.join( '.' ).freeze
26
26
 
data/templates/Ruby.stg CHANGED
@@ -1459,4 +1459,4 @@ placeAction(scope, name) ::= <<
1459
1459
  <endif>
1460
1460
  >>
1461
1461
 
1462
- runtimeLibraryVersion() ::= "1.8.8"
1462
+ runtimeLibraryVersion() ::= "1.8.10"
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: antlr3
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
4
+ hash: 35
5
+ prerelease:
5
6
  segments:
6
7
  - 1
7
8
  - 8
8
- - 8
9
- version: 1.8.8
9
+ - 10
10
+ version: 1.8.10
10
11
  platform: ruby
11
12
  authors:
12
13
  - Kyle Yetter
@@ -14,7 +15,7 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2011-01-10 00:00:00 -05:00
18
+ date: 2011-03-28 00:00:00 -04:00
18
19
  default_executable:
19
20
  dependencies: []
20
21
 
@@ -240,25 +241,29 @@ rdoc_options: []
240
241
  require_paths:
241
242
  - lib
242
243
  required_ruby_version: !ruby/object:Gem::Requirement
244
+ none: false
243
245
  requirements:
244
246
  - - ">="
245
247
  - !ruby/object:Gem::Version
248
+ hash: 57
246
249
  segments:
247
250
  - 1
248
251
  - 8
249
252
  - 7
250
253
  version: 1.8.7
251
254
  required_rubygems_version: !ruby/object:Gem::Requirement
255
+ none: false
252
256
  requirements:
253
257
  - - ">="
254
258
  - !ruby/object:Gem::Version
259
+ hash: 3
255
260
  segments:
256
261
  - 0
257
262
  version: "0"
258
263
  requirements:
259
264
  - java
260
265
  rubyforge_project: antlr3
261
- rubygems_version: 1.3.6
266
+ rubygems_version: 1.5.0
262
267
  signing_key:
263
268
  specification_version: 3
264
269
  summary: Fully-featured ruby parser generation for ANTLR version 3.