state vrml extends HighlightEntry
{
BEGIN {
require_state (javascript);
}
/#/ {
comment_face (true);
language_print ($0);
call (eat_one_line);
comment_face (false);
}
/\"javascript:|\"vrmlscript:/ {
reference_face (true);
language_print ($0);
reference_face (false);
from_vrml = 1;
call (javascript_internal);
}
/\"/ {
string_face (true);
language_print ($0);
call (c_string);
string_face (false);
}
/^#VRML V2.0/ {
reference_face (true);
language_print ($0);
call (eat_one_line);
reference_face (false);
}
/\b(A(nchor|ppearance|udioClip)|B(ackground|illboard|ox)\
|C(o(l(lision|or(|Interpolator))|ne|ordinate(|Interpolator))\
|ylinder(|Sensor))\
|DirectionalLight|E(levationGrid|xtrusion)|Fo(g|ntStyle)|Group\
|I(mageTexture|n(dexed(FaceSet|LineSet)|line|troduction))|LOD\
|M(aterial|ovieTexture)|N(avigationInfo|ormal(|Interpolator))\
|OrientationInterpolator\
|P(ixelTexture|laneSensor|o(int(Light|Set)|sitionInterpolator)\
|roximitySensor)\
|S(c(alarInterpolator|ript)|hape|ound|p(here(|Sensor)|otLight)|witch)\
|T(ext(|ure(Coordinate|Transform))|imeSensor|ouchSensor|ransform)\
|Vi(ewpoint|sibilitySensor)|WorldInfo)\b/ {
builtin_face (true);
language_print ($0);
builtin_face (false);
}
/\b(DEF|EXTERNPROTO|FALSE|IS|NULL|PROTO|ROUTE|T(O|RUE)|USE|\
e(vent(In|Out)|xposedField)|field)\b/ {
keyword_face (true);
language_print ($0);
keyword_face (false);
}
/\b(MF(Color|Float|Int32|Node|Rotation|String|Time|Vec(2f|3f))|\
SF(Bool|Color|Float|Image|Int32|Node|Rotation|String|Time|Vec(2f|3f)))\b/ {
type_face (true);
language_print ($0);
type_face (false);
}
}