Skip to content

Latest commit

 

History

History
78 lines (69 loc) · 18.1 KB

File metadata and controls

78 lines (69 loc) · 18.1 KB

IEC citations used by salman

Generated from salman_core::clause::REGISTRY. Do not edit by hand; edit the registry. A test in crates/salman-core/src/clause.rs fails if this file and the registry disagree.

The edition, and why a withdrawn one

IEC 61131-3:2013 (Edition 3.0) was withdrawn on 2025-05-22 and superseded by IEC 61131-3:2025 (Edition 4.0). salman targets Edition 3.0 because it is the edition its public sources allow it to verify, and citing an edition salman cannot check would be guessing in a footnote's clothing. Clause numbers are edition-specific — Structured Text is §7.3 in Edition 3.0 and §7.2 in Edition 4.0, and the standard function block tables shift from 43-46 to 44-47 — so a citation without an edition is meaningless. Every entry below carries one.

What these rows are, and are not

salman never reproduces the normative text of IEC 61131-3, which is copyrighted and sold by the IEC. Each row states, in salman's own words, the requirement a test checks, and points at the clause, table or figure where the normative wording lives.

The last column names the tests. A citation with no test is not allowed into the registry: every_citation_names_at_least_one_test fails, and every_cited_test_exists_in_the_source_tree fails again if a named test is renamed or deleted. So a row here cannot be decoration, and the way to retire a clause salman no longer checks is to delete the row, not to let it stand with nothing behind it.

The standard is paywalled, so numbers have been cross-checked against public secondary sources where that was possible: the publisher's own front-matter preview, which contains the contents and the lists of tables and figures, and vendor implementer compliance statements, which enumerate the feature tables. Rows marked unconfirmed have a title that is reliable and a number that is not: search for the title.

Citations

Citation Title Requirement salman tests Number confirmed by Tested by
IEC 61131-3:2013 §6.3 (Ed 3.0) Literals – External representation of data How a value is written literally in source text, for every literal form the languages accept source a_typed_literal_carries_the_type_its_prefix_named
literals_reach_the_tree_with_their_values
IEC 61131-3:2013 §6.3.2 (Ed 3.0) Numeric literals and string literals Decimal, based and typed numeric literals, underscores as digit separators, and how a literal's type is decided source a_misplaced_underscore_is_reported
an_invalid_radix_is_reported_rather_than_guessed_at
IEC 61131-3:2013 §6.3.3 (Ed 3.0) Character string literals Single and double quoted strings, and the dollar-sign escape that lets a quote, a newline or a byte value appear inside one source an_unterminated_string_is_reported_and_does_not_swallow_the_next_line
a_multi_byte_character_becomes_whole_code_units_in_a_wstring
IEC 61131-3:2013 §6.3.4 (Ed 3.0) Duration literal The T# form, the day/hour/minute/second/millisecond unit sequence, and the rule that only the first unit present may overflow its natural range source duration_literals_sum_their_units
the_first_unit_of_a_duration_may_overflow_but_a_later_one_may_not
IEC 61131-3:2013 §6.3.5 (Ed 3.0) Date and time of day literal The D#, TOD# and DT# literal forms for a calendar date, a time of day and the two combined source date_time_and_date_and_time_literals_parse
a_date_that_does_not_exist_is_rejected
IEC 61131-3:2013 §6.4 (Ed 3.0) Data types What types exist, how they are declared, and what a value of each may hold source a_declared_type_resolves_without_complaint
IEC 61131-3:2013 §6.4.2 (Ed 3.0) Elementary data types (BOOL, INT, REAL, STRING, etc.) The built-in types, their widths and ranges, and the initial value each takes when a declaration does not give one source signed_integers_widen_through_the_whole_chain
a_typed_literal_whose_value_does_not_fit_is_refused
IEC 61131-3:2013 §6.4.3 (Ed 3.0) Generic data types The ANY hierarchy that groups elementary types, so an overloaded function can be specified once for a whole family source an_operand_outside_the_operators_domain_names_the_generic_type_it_accepts
IEC 61131-3:2013 §6.4.4 (Ed 3.0) User-defined data types Declaring enumerations, subranges, arrays, structures and type aliases, and how each is initialised source a_type_block_holds_aliases_structures_enumerations_subranges_and_arrays
enumeration_values_continue_from_the_previous_one_starting_at_zero
IEC 61131-3:2013 §6.5 (Ed 3.0) Variables Declaring a variable, giving it an initial value, and what its scope and lifetime are source a_program_carries_its_variable_blocks_and_its_body
IEC 61131-3:2013 §6.5.2 (Ed 3.0) Variable sections The VAR keyword families that say whether a variable is local, an input, an output, in-out, global or external, and what each permits source every_variable_section_keyword_opens_its_section
IEC 61131-3:2013 §6.5.5 (Ed 3.0) Directly represented variables (%) The percent-sign address form: its location letter, its size prefix, and its hierarchical numeric part source a_hierarchical_direct_address_lexes_as_one_token
an_address_renders_back_the_way_it_was_written
IEC 61131-3:2013 §6.5.6 (Ed 3.0) Retentive variables (RETAIN, NON_RETAIN) Which variables keep their value across a power cycle or a warm restart, and which are put back to their initial value source retention_defaults_to_unspecified_rather_than_to_retain
a_warm_restart_keeps_retain_and_persistent_and_clears_the_rest
IEC 61131-3:2013 §6.6 (Ed 3.0) Program organization units (POUs) The three units of program structure — function, function block, program — and the declaration features they share source two_pous_of_one_name_are_refused_and_the_first_one_wins
IEC 61131-3:2013 §6.6.2 (Ed 3.0) Functions A callable unit that keeps no state between calls and yields one result, so the same arguments always produce the same value source a_function_declares_the_type_of_the_value_it_returns
a_functions_result_type_is_the_type_of_the_call
IEC 61131-3:2013 §6.6.3 (Ed 3.0) Function blocks A callable unit whose instance keeps its internal state between calls, which is what makes timers, counters and edge detectors expressible source a_function_block_has_no_return_type
a_user_function_block_is_called_through_its_instance
IEC 61131-3:2013 §6.6.4 (Ed 3.0) Programs The outermost program unit, which is what a configuration assigns to a task and therefore what actually gets executed source a_program_cannot_be_called
IEC 61131-3:2013 §6.8 (Ed 3.0) Configuration elements How a project is bound to hardware: configurations, the resources inside them, and the global variables and tasks they declare source a_configuration_holds_globals_resources_tasks_and_program_instances
IEC 61131-3:2013 §6.8.2 (Ed 3.0) Tasks Declaring a task by period or by a triggering variable, giving it a priority, and associating programs with it source an_event_task_runs_on_a_rising_edge_and_not_otherwise
IEC 61131-3:2013 §7.3 (Ed 3.0) Structured Text (ST) The textual, block-structured language: its expressions, its statements and its lexical conventions source a_small_program_lexes_into_the_expected_tokens
IEC 61131-3:2013 §7.3.2 (Ed 3.0) Expressions How an ST expression is built and evaluated, including operator precedence and the order operands are taken in source or_binds_looser_than_and
every_binary_level_is_left_associative
IEC 61131-3:2013 §7.3.3 (Ed 3.0) Statements The ST statement forms: assignment, IF and CASE selection, the three loops, calls, EXIT and RETURN source if_then_end_if_has_one_branch_and_no_else
while_tests_before_the_body_and_repeat_tests_after_it
IEC 61131-3:2013 Table 3 (Ed 3.0) Comments The comment forms: the line comment, the block comment, and the rows that make block comments nest rather than end at the first close source block_comments_nest
line_comments_end_at_the_line_break
IEC 61131-3:2013 Table 5 (Ed 3.0) Numeric literals Every numeric literal form: signed decimals, reals with exponents, base 2, 8 and 16 literals, and the typed literal prefix source an_invalid_radix_is_reported_rather_than_guessed_at
a_digit_outside_the_radix_is_reported
IEC 61131-3:2013 Table 6 (Ed 3.0) Character string literals Single quoted and double quoted string literals, including the empty string and the forms used for wide characters source wstring_escapes_take_four_hex_digits
IEC 61131-3:2013 Table 7 (Ed 3.0) Two-character combinations in character strings The dollar-sign escapes that put a quote, a dollar sign, a newline, a tab or a page break inside a string literal source string_escapes_follow_table_7
an_unknown_escape_is_reported
IEC 61131-3:2013 Table 8 (Ed 3.0) Duration literals The written forms a duration may take: the keyword or hash prefix, the unit letters, and whether the units may be abbreviated source duration_units_must_descend
long_duration_prefixes_are_marked_as_ltime
IEC 61131-3:2013 Table 9 (Ed 3.0) Date and time of day literals The written forms of a calendar date, a time of day and a combined date and time, with their long and short keywords source date_time_and_date_and_time_literals_parse
a_date_may_omit_leading_zeros
IEC 61131-3:2013 Table 10 (Ed 3.0) Elementary data types The keyword, the bit width and the range of values of each built-in type source nothing_narrows_implicitly
bit_strings_widen_among_themselves
IEC 61131-3:2013 Table 16 (Ed 3.0) Directly represented variables The letters that make up a direct address: input, output or memory location, and the bit, byte, word, double or long word size source every_location_and_size_letter_is_accepted
a_partly_specified_address_renders_as_a_star
IEC 61131-3:2013 Table 18 (Ed 3.0) Execution control graphically using EN and ENO The enable input and enable output that let a call be skipped, and what the outputs hold when it is source a_call_with_enable_false_does_not_happen_at_all
enable_out_reports_whether_the_call_happened
IEC 61131-3:2013 Table 20 (Ed 3.0) Function call Calling a function with a formal argument list naming each parameter, or with a positional list, and where each is allowed source a_function_takes_positional_or_named_arguments
a_call_may_not_mix_positional_and_named_arguments
IEC 61131-3:2013 Table 42 (Ed 3.0) Function block call Calling an instance of a function block, passing inputs by name, and reading outputs back off the instance afterwards source positional_arguments_to_a_function_block_are_refused_citing_the_call_table
IEC 61131-3:2013 Table 43 (Ed 3.0) Standard bistable function blocks The set-dominant and reset-dominant latches, and which input decides the output when both are true at once source sr_is_set_dominant_when_both_inputs_are_true
rs_is_reset_dominant_when_both_inputs_are_true
IEC 61131-3:2013 Table 44 (Ed 3.0) Standard edge detection function blocks The rising and falling edge detectors, whose output is true for exactly the one execution after the input changed source r_trig_pulses_for_exactly_one_invocation_on_a_rising_edge
f_trig_pulses_on_a_falling_edge
IEC 61131-3:2013 Table 45 (Ed 3.0) Standard counter function blocks The up, down and up-down counters: when they count, when they load or reset, and when the limit output goes true source ctu_counts_rising_edges_only_not_levels
ctud_precedence_is_reset_then_load_then_counting
IEC 61131-3:2013 Table 46 (Ed 3.0) Standard timer function blocks The pulse, on-delay and off-delay timers, their elapsed-time output, and what happens when the input changes mid-interval source ton_does_not_fire_early
ton_elapsed_time_is_clamped_at_the_preset
IEC 61131-3:2013 Table 52 (Ed 3.0) Assignment attempt The checked assignment that succeeds only when the source really is of the target type, and leaves the target alone when it is not source an_assignment_attempt_is_parsed_rather_than_refused
the_assignment_attempt_is_reported_as_not_implemented
IEC 61131-3:2013 Table 71 (Ed 3.0) Operators of the ST language Every ST operator with its precedence, from parentheses and function calls down to OR, which is what fixes how an unparenthesised expression parses source multiplication_binds_looser_than_exponentiation
not_binds_tighter_than_equality
IEC 61131-3:2013 Table 72 (Ed 3.0) ST language statements Every ST statement form with its syntax: assignment, the calls, IF, CASE, FOR, WHILE, REPEAT, EXIT, CONTINUE and RETURN source case_labels_may_be_single_values_lists_or_ranges
for_keeps_its_control_variable_bounds_and_step
IEC 61131-3:2013 Figure 11 (Ed 3.0) Data type conversion rules – implicit and/or explicit (Summary) The summary of which type conversions happen on their own and which the programmer has to write out as a call source nothing_narrows_implicitly
a_narrowing_assignment_names_the_conversion_function
IEC 61131-3:2013 Figure 12 (Ed 3.0) Supported implicit type conversions The graph of conversions a conforming implementation performs without being asked, which is the set salman's type checker must not widen source int_widens_to_real_but_dint_does_not
no_real_converts_implicitly_to_an_integer
IEC 61131-3:2013 Figure 15 (Ed 3.0) Standard timer function blocks – timing diagrams (Rules) The timing diagrams that fix, cycle by cycle, what the standard timers do when their input changes during a running interval source ton_does_not_accumulate_elapsed_time_across_separate_input_pulses
ton_falls_immediately_when_its_input_does