. The Lexical Elements of Pascal . Useful meta-linguistic Macros L::= (_) #(comma (_)). N::= (_) #( (_) ). O::= ( (_)|). P::= O( left L( (_) ) right). R::= (_) doubledot (_). S::= (_) #(semicolon (_)). . Lexemes in Pascal adding_operator::= "+" | "-" | "or", apostrophe_image::= "'""'", array::="array", begin::="begin", caret::="^", case::="case", character_string::= "'" string_element #(string_element) "'", colon::=":", colon_equals::=":=", comma::=",", const::="const", digit::= ("1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "0"), digit_sequence::= digit #(digit), do::="do", dot::=".", doubledot::="..", downto::="downto", else::="else", end::="end", equals::="=", for::="for", fractional_part::= digit_sequence, function::="function", goto::="goto", identifier::= letter #( letter | digit), if::="if", label::="label", left::="(", left_br::="[", letter::= ("a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z"), multiplying_operator::= "*" | "/" | "div" | "mod" | "and", nil::="nil", not::="not", of::="of", of::="of", packed::="packed", packed::="packed", procedure::="procedure", program::="program", record::="record", relational_operator::= "=" | "<>" | "<" | ">" | "<=" | ">=" | "in", repeat::="repeat", right::=")", right_br::="]", scale_factor::= signed_integer, semicolon::=";", file::="file", set::="set", sign::= "+" | "-", signed_integer::= O(sign) unsigned_integer, string_character::= one_of_a_set_of_implementation_defined_characters, string_element::= apostrophe_image | string_character, then::="then", to::="to", type::="type", unsigned_integer::= digit_sequence, unsigned_real::= unsigned_integer "." fractional_part #("e" scale_factor |) | unsigned_integer "e" scale_factor, until::="until", var::="var", var::="var", while::="while", with::="with",