LL(1) GRAMMAR for Afelio master configuration property list files: (1) master-config-file = { property-list } end-of-file-mark (2) property-list = launch-plist | directories-plist | logging-plist | dialplan-plist | numberingplans-plist | modules-plist | mediaservers-plist | controlagents-plist (3) launch-plist = "Launch" "=" "{" { launch-assignment } "}" ";" (4) directories-plist = "Directories" "=" "{" { directory-assignment } "}" ";" (5) logging-plist = ( "ServerLog" | "ConfigLog" | "DebugLog" ) "=" "{" { logging-parameter-assignment } "}" ";" (6) dialplan-plist = "Dialplan" "=" "{" { dialplan-parameter-assignment } "}" ";" (7) numberingplans-plist = "NumberingPlans" "=" "{" [ autoload-assignment ] { numberingplan-assignment } "}" ";" (8) modules-plist = "Modules" "=" "{" [ autoload-assignment ] { module-assignment } "}" ";" (9) mediaservers-plist = "MediaServers" "=" "{" { mediaserver-assignment } "}" ";" (10) controlagents-plist = "ControlAgents" "=" "{" { controlagent-assignment } "}" ";" (11) launch-assignment = boolean-launch-assignment | numeric-launch-assignment | string-launch-assignment (12) boolean-launch-assignment = "WriteCoreOnCrash" "=" boolean ";" (13) numeric-launch-assignment = ( "Heartbeat" | "ProcessPriority" | "SystemLoadLimit" ) "=" number ";" (14) string-launch-assignment = ( "RunAsUser" | "RunAsGroup" ) "=" string ";" (15) directory-assignment = ( "Binaries" | "Configs" | "Daemons" | "Databases" | "Logfiles" | "Modules" | "NumberingPlans" | "Sockets" | "Sounds" | "Spoolfiles" ) "=" directory-path ";" (16) logging-parameter-assignment = log-mode-assignment | filename-assignment | log-facility-assignment | log-level-assignment | log-option-assignment (17) log-mode-assignment = "LogMode" "=" ( "file" | "syslog" ) ";" (18) filename-assignment = "Filename" "=" filename-string ";" (19) log-facility-assignment = "Facility" = ( "console" | "local0" | "local1" | "local2" | "local3" | "local4" | "local5" | "local6" | "local7" ) ";" (20) log-level-assignment = "Levels" "=" log-level | ( "(" log-level { "," log-level } ")" ) ";" (21) log-level = "info" | "notice" | "warning" | "error" | "debug" (22) log-option-assignment = ( "IncludeHostname" | "IncludeTimestamps" ) "=" boolean ";" (23) dialplan-parameter-assignment = dialplan-engine-assignment | filename-assignment (24) dialplan-engine-assignment = "Engine" "=" "default" ";" (25) numberingplan-assignment = iso-3166-two-letter-code "=" "{" { enable-assignment | filename-assignment } "}" ";" (26) enable-assignment = "Enabled" "=" boolean ";" (27) module-assignment = ( "ACD" | "Autoattendant" | "Conference" | "ClusterInterconnect" | "MusicOnHold" | "PrivacyManager" | "ScriptingEngine" | "Spooler" | "TTS" | "Voicemail" ) "=" "{" { load-assignment | filename-assignment | config-assignment } "}" ";" (28) load-assignment = "LoadOnLaunch" "=" boolean ";" (29) config-assignment = "Configuration" "=" filename-string ";" (30) mediaserver-assignment = identifier "=" "{" { enable-assignment | daemon-assignment | protocol-assignment } "}" ";" (31) daemon-assignment = "Daemon" "=" filename-string ";" (32) protocol-assignment = "Protocols" "=" identifier | ( "(" identifier { "," identifier } ")" ) ";" (33) controlagent-assignment = identifier "=" "{" { enable-assignment | daemon-assignment } "}" ";" Terminal Symbols returned by the lexer: boolean, identifier, number, string, end-of-file-mark directory-path and filename-string are system dependent subsets of string. END OF LL(1) GRAMMAR