vrml.st - enscript - GNU Enscript
 (HTM) git clone git://thinkerwim.org/enscript.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       vrml.st (3345B)
       ---
            1 /**
            2  * Name: vrml
            3  * Description: Virtual Reality Modeling Language (VRML97)
            4  *
            5  *   Typesets UTF-8 encoded VRML files including inline scripts
            6  *   (JavaScript or VrmlScript) using Encript's JavaScript mode.
            7  *
            8  *   Note: Some VRML browsers allow use of double quotes in
            9  *   defining string literals inside inlined scripts.  Doing so
           10  *   breaks the logic programmed here.  Using single quotes
           11  *   (i.e. ECMAScript spec-compliant string literals) works fine.
           12  *
           13  * Author: James Sørlie <sorliej@imm.dtu.dk>
           14  */
           15 
           16 state vrml extends HighlightEntry
           17 {
           18   BEGIN {
           19     require_state (javascript);
           20   }
           21 
           22   /* Comments. */
           23   /#/ {
           24     comment_face (true);
           25     language_print ($0);
           26     call (eat_one_line);
           27     comment_face (false);
           28   }
           29 
           30   /* Inline Script Protocols. */
           31   /\"javascript:|\"vrmlscript:/ {
           32     reference_face (true);
           33     language_print ($0);
           34     reference_face (false);
           35     from_vrml = 1;
           36     call (javascript_internal);
           37   }
           38 
           39   /* String constants. */
           40   /\"/ {
           41     string_face (true);
           42     language_print ($0);
           43     call (c_string);
           44     string_face (false);
           45   }
           46 
           47   /* UTF-8 header text. */
           48   /^#VRML V2.0/ {
           49     reference_face (true);
           50     language_print ($0);
           51     call (eat_one_line);
           52     reference_face (false);
           53   }
           54 
           55   /* Built-ins nodes:
           56      http://www.vrml.org/Specifications/VRML97/part1/nodesRef.html
           57 
           58      (build-re '(Introduction Anchor Appearance AudioClip Background
           59      Billboard Box Collision Color ColorInterpolator Cone Coordinate
           60      CoordinateInterpolator Cylinder CylinderSensor DirectionalLight
           61      ElevationGrid Extrusion Fog FontStyle Group ImageTexture
           62      IndexedFaceSet IndexedLineSet Inline LOD Material MovieTexture
           63      NavigationInfo Normal NormalInterpolator OrientationInterpolator
           64      PixelTexture PlaneSensor PointLight PointSet PositionInterpolator
           65      ProximitySensor ScalarInterpolator Script Shape Sound Sphere
           66      SphereSensor SpotLight Switch Text TextureCoordinate TextureTransform
           67      TimeSensor TouchSensor Transform Viewpoint VisibilitySensor
           68      WorldInfo))
           69   */
           70   /\b(A(nchor|ppearance|udioClip)|B(ackground|illboard|ox)\
           71 |C(o(l(lision|or(|Interpolator))|ne|ordinate(|Interpolator))\
           72 |ylinder(|Sensor))\
           73 |DirectionalLight|E(levationGrid|xtrusion)|Fo(g|ntStyle)|Group\
           74 |I(mageTexture|n(dexed(FaceSet|LineSet)|line|troduction))|LOD\
           75 |M(aterial|ovieTexture)|N(avigationInfo|ormal(|Interpolator))\
           76 |OrientationInterpolator\
           77 |P(ixelTexture|laneSensor|o(int(Light|Set)|sitionInterpolator)\
           78 |roximitySensor)\
           79 |S(c(alarInterpolator|ript)|hape|ound|p(here(|Sensor)|otLight)|witch)\
           80 |T(ext(|ure(Coordinate|Transform))|imeSensor|ouchSensor|ransform)\
           81 |Vi(ewpoint|sibilitySensor)|WorldInfo)\b/ {
           82     builtin_face (true);
           83     language_print ($0);
           84     builtin_face (false);
           85   }
           86 
           87   /* Keywords.
           88      http://www.vrml.org/Specifications/VRML97/part1/grammar.html#TableA.1 */
           89   /\b(DEF|EXTERNPROTO|FALSE|IS|NULL|PROTO|ROUTE|T(O|RUE)|USE|\
           90 e(vent(In|Out)|xposedField)|field)\b/ {
           91     keyword_face (true);
           92     language_print ($0);
           93     keyword_face (false);
           94   }
           95 
           96   /* Types.
           97      http://www.vrml.org/Specifications/VRML97/part1/grammar.html#Fields */
           98   /\b(MF(Color|Float|Int32|Node|Rotation|String|Time|Vec(2f|3f))|\
           99 SF(Bool|Color|Float|Image|Int32|Node|Rotation|String|Time|Vec(2f|3f)))\b/ {
          100     type_face (true);
          101     language_print ($0);
          102     type_face (false);
          103   }
          104 }
          105 
          106 
          107 /*
          108 Local variables:
          109 mode: c
          110 End:
          111 */