Skip to content

Commit be18285

Browse files
authored
Merge pull request #16936 from Mugen87/dev36
VRMLLoader: Fix parsing in Safari.
2 parents d0e0fa3 + ba8d0f8 commit be18285

File tree

2 files changed

+60
-16
lines changed

2 files changed

+60
-16
lines changed

examples/js/loaders/VRMLLoader.js

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,8 @@ THREE.VRMLLoader = ( function () {
170170

171171
var StringLiteral = createToken( { name: "StringLiteral", pattern: /"(:?[^\\"\n\r]+|\\(:?[bfnrtv"\\/]|u[0-9a-fA-F]{4}))*"/ } );
172172
var NumberLiteral = createToken( { name: 'NumberLiteral', pattern: /[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?/ } );
173-
var BooleanLiteral = createToken( { name: 'BooleanLiteral', pattern: /TRUE|FALSE/ } );
173+
var TrueLiteral = createToken( { name: 'TrueLiteral', pattern: /TRUE/ } );
174+
var FalseLiteral = createToken( { name: 'FalseLiteral', pattern: /FALSE/ } );
174175
var NullLiteral = createToken( { name: 'NullLiteral', pattern: /NULL/ } );
175176
var LSquare = createToken( { name: 'LSquare', pattern: /\[/ } );
176177
var RSquare = createToken( { name: 'RSquare', pattern: /]/ } );
@@ -198,7 +199,8 @@ THREE.VRMLLoader = ( function () {
198199
USE,
199200
ROUTE,
200201
TO,
201-
BooleanLiteral,
202+
TrueLiteral,
203+
FalseLiteral,
202204
NullLiteral,
203205
// the Identifier must appear after the keywords because all keywords are valid identifiers
204206
Version,
@@ -446,15 +448,29 @@ THREE.VRMLLoader = ( function () {
446448

447449
}
448450

449-
if ( ctx.BooleanLiteral ) {
451+
if ( ctx.TrueLiteral ) {
450452

451453
field.type = 'boolean';
452454

453-
for ( var i = 0, l = ctx.BooleanLiteral.length; i < l; i ++ ) {
455+
for ( var i = 0, l = ctx.TrueLiteral.length; i < l; i ++ ) {
454456

455-
var booleanLiteral = ctx.BooleanLiteral[ i ];
457+
var trueLiteral = ctx.TrueLiteral[ i ];
456458

457-
field.values.push( booleanLiteral.image === 'TRUE' );
459+
if ( trueLiteral.image === 'TRUE' ) field.values.push( true );
460+
461+
}
462+
463+
}
464+
465+
if ( ctx.FalseLiteral ) {
466+
467+
field.type = 'boolean';
468+
469+
for ( var i = 0, l = ctx.FalseLiteral.length; i < l; i ++ ) {
470+
471+
var falseLiteral = ctx.FalseLiteral[ i ];
472+
473+
if ( falseLiteral.image === 'FALSE' ) field.values.push( false );
458474

459475
}
460476

@@ -2374,7 +2390,8 @@ THREE.VRMLLoader = ( function () {
23742390
var RouteIdentifier = tokenVocabulary[ 'RouteIdentifier' ];
23752391
var StringLiteral = tokenVocabulary[ 'StringLiteral' ];
23762392
var NumberLiteral = tokenVocabulary[ 'NumberLiteral' ];
2377-
var BooleanLiteral = tokenVocabulary[ 'BooleanLiteral' ];
2393+
var TrueLiteral = tokenVocabulary[ 'TrueLiteral' ];
2394+
var FalseLiteral = tokenVocabulary[ 'FalseLiteral' ];
23782395
var NullLiteral = tokenVocabulary[ 'NullLiteral' ];
23792396
var DEF = tokenVocabulary[ 'DEF' ];
23802397
var USE = tokenVocabulary[ 'USE' ];
@@ -2483,7 +2500,12 @@ THREE.VRMLLoader = ( function () {
24832500
} },
24842501
{ ALT: function () {
24852502

2486-
$.CONSUME( BooleanLiteral );
2503+
$.CONSUME( TrueLiteral );
2504+
2505+
} },
2506+
{ ALT: function () {
2507+
2508+
$.CONSUME( FalseLiteral );
24872509

24882510
} },
24892511
{ ALT: function () {

examples/jsm/loaders/VRMLLoader.js

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,8 @@ var VRMLLoader = ( function () {
204204

205205
var StringLiteral = createToken( { name: "StringLiteral", pattern: /"(:?[^\\"\n\r]+|\\(:?[bfnrtv"\\/]|u[0-9a-fA-F]{4}))*"/ } );
206206
var NumberLiteral = createToken( { name: 'NumberLiteral', pattern: /[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?/ } );
207-
var BooleanLiteral = createToken( { name: 'BooleanLiteral', pattern: /TRUE|FALSE/ } );
207+
var TrueLiteral = createToken( { name: 'TrueLiteral', pattern: /TRUE/ } );
208+
var FalseLiteral = createToken( { name: 'FalseLiteral', pattern: /FALSE/ } );
208209
var NullLiteral = createToken( { name: 'NullLiteral', pattern: /NULL/ } );
209210
var LSquare = createToken( { name: 'LSquare', pattern: /\[/ } );
210211
var RSquare = createToken( { name: 'RSquare', pattern: /]/ } );
@@ -232,7 +233,8 @@ var VRMLLoader = ( function () {
232233
USE,
233234
ROUTE,
234235
TO,
235-
BooleanLiteral,
236+
TrueLiteral,
237+
FalseLiteral,
236238
NullLiteral,
237239
// the Identifier must appear after the keywords because all keywords are valid identifiers
238240
Version,
@@ -480,15 +482,29 @@ var VRMLLoader = ( function () {
480482

481483
}
482484

483-
if ( ctx.BooleanLiteral ) {
485+
if ( ctx.TrueLiteral ) {
484486

485487
field.type = 'boolean';
486488

487-
for ( var i = 0, l = ctx.BooleanLiteral.length; i < l; i ++ ) {
489+
for ( var i = 0, l = ctx.TrueLiteral.length; i < l; i ++ ) {
488490

489-
var booleanLiteral = ctx.BooleanLiteral[ i ];
491+
var trueLiteral = ctx.TrueLiteral[ i ];
490492

491-
field.values.push( booleanLiteral.image === 'TRUE' );
493+
if ( trueLiteral.image === 'TRUE' ) field.values.push( true );
494+
495+
}
496+
497+
}
498+
499+
if ( ctx.FalseLiteral ) {
500+
501+
field.type = 'boolean';
502+
503+
for ( var i = 0, l = ctx.FalseLiteral.length; i < l; i ++ ) {
504+
505+
var falseLiteral = ctx.FalseLiteral[ i ];
506+
507+
if ( falseLiteral.image === 'FALSE' ) field.values.push( false );
492508

493509
}
494510

@@ -2408,7 +2424,8 @@ var VRMLLoader = ( function () {
24082424
var RouteIdentifier = tokenVocabulary[ 'RouteIdentifier' ];
24092425
var StringLiteral = tokenVocabulary[ 'StringLiteral' ];
24102426
var NumberLiteral = tokenVocabulary[ 'NumberLiteral' ];
2411-
var BooleanLiteral = tokenVocabulary[ 'BooleanLiteral' ];
2427+
var TrueLiteral = tokenVocabulary[ 'TrueLiteral' ];
2428+
var FalseLiteral = tokenVocabulary[ 'FalseLiteral' ];
24122429
var NullLiteral = tokenVocabulary[ 'NullLiteral' ];
24132430
var DEF = tokenVocabulary[ 'DEF' ];
24142431
var USE = tokenVocabulary[ 'USE' ];
@@ -2517,7 +2534,12 @@ var VRMLLoader = ( function () {
25172534
} },
25182535
{ ALT: function () {
25192536

2520-
$.CONSUME( BooleanLiteral );
2537+
$.CONSUME( TrueLiteral );
2538+
2539+
} },
2540+
{ ALT: function () {
2541+
2542+
$.CONSUME( FalseLiteral );
25212543

25222544
} },
25232545
{ ALT: function () {

0 commit comments

Comments
 (0)