efuns - parsing - parse_command

MudOS v21c2

parse_command(3)�� MudOS v21c2���� (5 Sep 1994)

�����ƣ�
    �� parse_command() - �����Ը�����ʽ(pattern)�����һ���ַ���
    ��
���﷨��
    �� int parse_command( string command, object env|object *oblist, string pattern, mixed arg, ... );

    �� ���� parse_command( �ַ��� command, ��� env|��� *oblist, �ַ��� pattern, ��� arg, ... );
    ��

���÷���
    �� parse_command() ��ͨ���������ַ����� sscanf(3) �ġ�����������������һ����ʽ��һ��Ŀ�IJ���֮�������ϵ� sscanf(3)�����Դ������������IJ���(refence)������ķ�ʽ�����Ψһ���ⲿ����(efun) sscanf(3)����ˣ�parse_command() ������ֵ�������IJ����ϡ�

    �� �� 'command' ��Գɹ���parse_command() �᷵�� 1��

    �� ���� 'env' ���� 'oblist' ����һ������ͻ���һ��������顣������ǵ�һ����Ļ��������������Ӵ������ deep_inventory ��ʽ���Զ�����һ��������飬������������������ǵ�Ч�ģ�
    ��

      ���� parse_command(cmd, environment(), pattern, arg)
    �� ��
    ��
      ���� parse_command( cmd, ({ environment() }) + deep_inventory(environment()), pattern, arg)
    �� ������һ���ַ����� " 'get' / 'take' %i "
    �� �﷨��
      ���� 'word'������������������ �ر�������(text)
      ���� [word]������������������ ��ʡ�Ե�����
      ���� /���������������������������� ѡ���ԵļǺ�(marker)
      ���� %o�������������������������� ��һ��Ŀ(item), ���
      ���� %l�������������������������� ����(living object)
      ���� %s�������������������������� �����
      ���� %w�������������������������� �κε���(word)
      ���� %p�������������������������� ����(list) (��ϵ��)
      ���� %i�������������������������� �κ���Ŀ
      ���� %d�������������������������� ���� 0- ���� tx(0-99)
    �� 'arg' ���п�����������Ƕ����������Щ����ͬ sscanf �ڵĽ��������ע�⵽ÿһ����������Ҫһ�� %��

    �� ��ͬ %_ �ķ��������ǣ�

      ���� %o���������� ����һ�����
      ���� %s���������� ���ص��ֵ��ַ���
      ���� %w���������� ���ص�һ���ֵ��ַ���
      ���� %p���������� ������һ�����е��ַ����е��������һ���ձ���
        ������ ���أ�
          �������� ����ǿձ�����һ���ַ���
          �������� ��������飺array[0] ������Եĵ���
      ���� %i���������� ����һ�����и�ʽ���ض����飺
        ������ [0] = (int) +(wanted) -(order) 0(all)
        ������ [1..n] (object) ���ָ��(objectpointers)
      ���� %l���������� ����һ�����и�ʽ���ض����飺
        ������ [0] = (int) +(wanted) -(order) 0(all)
        ������ [1..n] (object) ���ָ��
          �������� ��Щ�������
      ���� %d���������� ����һ����ֵ
    ���� �õ�������������Ϣ�� % ����ֻ�� %i �� %l����ʵ�ϣ����� %l �ڳ�������(parse)ǰ���������������й��˵�������⣬��Щ����һ���ġ�

    ���� %i �� %l �ķ���ֵҲ����ӵġ����Ƿ���һ�������ִ�ͷ�����������п������֮�����ɵ����顣һ�������� %i��%l ��Ե��ַ����������� 'three red roses'������֮��������������Ա���ԣ�

    ���� ��� numeral>0 �� tree, four, five �Ȼᱻ��ԣ�
    ���� ��� numeral<0 �� second, twentyfirst �Ȼᱻ��ԣ�
    ���� ��� numeral==0 �� 'all' ����һ��ĸ�����ʽ�� 'apples'�ᱻ��ԡ�
    ��

��ע�⣡
    �� ����ⲿ����(efun)���ܸ�����ֵ���������⡣����� 'all apples' ���� 'second apple'������������ĵġ�%i ���᷵�����������ڿ�����Ե����������������������� 'second' �ڸ������ݵ���˼�����ң�������һ���������һ�����Ե�(explicit)�������ʱ��������������ĵݻ����ݽ��ᱻ��Ѱ����Ҳ���������������ʵ���Ͽɿ���������У��ĸ��� 'second' �������Ƿ���֮��������еڶ��������
    ��
�����棺
    �� "%s %w %i" ��Щ���͵���ʽ���ܲ���Ԥ�ڵ����á�%w ���ܻ�ɹ�������������� %s �IJ������ܻ��ǿյġ�
    ��
�����⣺
    �� 'word' �� [word] �����͵���ʽ�У�'word' ���ܰ����հס��������ǵ�һ���֡�������Ϊ��ʽ���� " " (�հ�) ������������һ����ʽ��Ԫ(element)���ܺ��пհס�

    �� �Կհ�����������һ��Ӱ���ǣ������ָ�һ����ʽ�IJ���(piece)�������Կհ׸������粻���� " 'word'/%i " ������ " 'word' / %i"��
    ��

�����ӣ�
      ���� if (parse_command("spray car",environment(this_player()),
        ������ " 'spray' / 'paint' [paint] %i ",items))
        ������ {
        ���� /*
        ���� ��������ʽ����ԵĻ����� items �᷵���� 'destargs'
        ���� ֮����ͬ���� %i �����顣
        ���� */
        ������ }
    ��
�� MUDLIB ֧֮Ԯ��
    �� Ϊ��ʹ����ⲿ�������ã������������� mudlib ��֧Ԯ������Ҫһ�麯���������жϻ���(sensible manner)�ڽ�������ǰ���ã���ȡ�������Ϣ��

    �� �����ڵİ汾�У���ʹ���� LPC �����һ��� id() lfun ���ҵ�һ���ض��ַ�����ָ����������������������dz�����ָ��ʱ�����������������ǧ�����ã�����ʮ��û��Ч�ʡ�

    �� �µİ汾���������ṩ������ 'names' ���е� LPC �����
    ��

      ���� 1 - һ�㵥һ�����֣�
      ���� 2 - ������ʽ�����֣�
      ���� 3 - ���ϵ�������ݴʡ�
    �� ���Ͽ����ɵ������к����õ���
    ��
      ���� 1 - string *parse_command_id_list();
      ���� 2 - string *parse_command_plural_id_list();
      ���� 3 - string *parse_command_adjectiv_id_list();
    �� ����Ψһ��Ҫ�Ĵ����ǵ�һ��������ڶ��������ڵĻ�������ⲿ�������������ɵ�һ���н�����������Ϊ�ķ��ϵ����أ������������������ǻ�ɹ������䵱 'names' ���ǵ�һ���ֶ���Ƭ��ʱ��������ˡ�

    �� The third is very nice to have because it makes constructs like
    ������ע���޷������ԭ�ġ���

    ���� ������Щ����Ӧ�ô�������������⣬������������ڻ����� mudlib ����ڣ�����Ҳ��һЩ������ĸ���(master object) ����Ҫ�ġ���Щ�䲻�Ǿ��Ա���ģ���������ĸ�������ⲿ���������������

    �� �����ϣ���Щĸ����� lfuns ��Ҫ�趨��ÿ������õ�֮���ƴ��е�Ԥ��ֵ��

    �� ��Щ�����ϵ����ֿ�Ӧ�����κ����е�����ϡ�����Щ������ǰ��������Щ lfuns ��һ���ģ�
    ��

      ���� string *parse_command_id_list()
        ������ - һ��᷵��: ({ "one", "thing" })
      ���� string *parse_command_plural_id_list()
        ������ - һ��᷵��: ({ "ones", "things", "them" })
      ���� string *parse_command_adjectiv_id_list()
        ������ - һ��᷵��: ({ "iffish" })
      ��
    �� �������ǽ�ϵ�ʵ��ڶ����У����ԣ�
      ���� string *parse_command_prepos_list()
        ������ - һ��᷵��: ({ "in", "on", "under" })
      ���� string parse_command_all_word()
        ������ - һ��᷵��: "all"
    ��

�����룺

�ص���һҳ